在Visual Studio中,我不想提交我的Debug文件夹,但它中有dll文件,如果我移动它,项目将无法编译

In Visual Studio, I don't want to commit my Debug folder, but it has the dll file in it, and if I move it project won't compile

本文关键字:移动 如果 文件 项目 编译 dll 提交 我不想 Visual 我的 Debug      更新时间:2023-10-16

我该怎么办?

基本上,我想提交我的Visual Studio 2012项目,但其中有一个Debug文件夹,我们传统上不会提交。唯一的问题是Debug文件夹中有项目的dll,如果我将dll移动到文件夹的父文件夹,项目将不再编译。

结构如下:

项目文件夹>MSVC_2012>调试文件夹、sln文件等

在调试文件夹中是dll。如何将其从Debug文件夹移到MSVC_2012?

您的问题在细节上并不完全清楚,但这里有一些选项(以及您可以改进问题的方法):

  • 您的问题看起来像XY问题。你说"如果我把dll移到文件夹的父级,项目就不再编译了。">在这种情况下,真正的问题是它为什么不编译。我们需要更多的细节来找出原因。你还需要更清楚你所说的"如果我移动dll"是什么意思——你不能在编译dll之前"移动"它,如果你在编译之后移动它,那么根据定义,编译是有效的,所以实际上你的陈述是没有意义的。无论如何,您可能应该专注于修复损坏的构建,而不是为了满足版本控制的需要而对其进行篡改。

  • 您尚未指定DLL文件在Debug文件夹中出现问题的原因。我认为这是因为你想将其提交给你的VCS(你没有明确表示这是你的目标)。在这种情况下,您是否意识到提交代码的二进制输出是不正常的做法?因此,一个解决方案可能是重新考虑为什么要首先提交DLL。

  • 您没有指定正在使用的VCS。在Git中(我认为在大多数其他VCS中),与整个文件夹相比,您可以对从提交中排除的内容进行更精细的控制。因此,另一个选项是将VCS配置为忽略Debug文件夹,其中包含的任何DLL文件除外

  • 您可以更改MSVC在Configuration Properties -> General -> Output Directory下的项目属性页中放置DLL文件的位置。这大概就是你提到"移动"DLL时的意思吧?

  • 最后,根据其他人对您问题的评论,如果您希望DLL同时位于这两个位置,您可以使用构建后步骤将其复制到相关位置。要实现这一点,请转到Configuration Properties -> Build Events -> Post-Build Event下的项目属性页,然后输入相关命令(与在命令提示符下键入的命令相同)来进行复制,例如copy myfile.dll ..,或者正如Alex Farber建议的那样,使用VS宏以更通用的方式指定位置。有关可以插入到命令中的可用宏的列表,请参见此页。这应该被视为最后的解决方案,原因有两个——(a)这是一种黑客攻击,因为当你应该从根本上解决问题时,你正在冗余地复制二进制输出,以避免版本控制和/或生成中的缺陷;(b)生成事件在Visual Studio中有一个严重的缺陷,那就是它们不允许继承值。这使它们成为大型项目中的维护噩梦。

相关文章: