如果在重建后立即运行解决方案,则会删除复制到输出目录的文件

时间:2016-01-22 18:45:47

标签: visual-studio-2013

问题:如果在重建后立即运行解决方案,则会删除复制到输出目录的文件。

Visual Studio版本:社区2013版本12.040629.00更新5

在Windows 10上运行

我的解决方案结构如下:

MySolution.Services (library project)

MySolution.Main (startup project - WPF application)

在服务项目中,有一些文件被标记为"复制到输出目录=复制始终"。当我构建时,我能够看到文件输出到正确的目录。  我的项目都没有建立活动。  我的所有项目都输出到" .. \ Builds"。

以下序列正常工作(文件未删除):

随机更改.cs文件

单击“开始调试”

以下序列导致输出目录中的文件被删除:

点击构建 - >重建解决方案

单击“开始调试”

输出目录中的文件会立即删除。

我可以随意重现此问题。  我在Application_Startup中有一个断点。我可以看到在我的任何代码运行之前删除了文件(BTW我的应用程序中没有代码可以在任何条件下删除这些文件。):

我在Visual Studio论坛here上发布了同样的问题。 我的解决方案有七个项目,可能有几百个文件。在我花一天时间逐个添加文件并点击" Build"我希望有人可以指导我更有效的故障排除路径。此外,我对导出和导入VS设置非常谨慎,因为我过去已经损坏了我的VS安装,我真的不想冒这样做的风险。我不想再猜测那些试图帮助我的MS技师 - 我想在做一些我可能会后悔的事情之前得到第二意见。

3 个答案:

答案 0 :(得分:0)

如果您正在寻找解决方案,则可以尝试“如何防止在构建过程中删除内容文件”中描述的解决方案之一-既无表决权,也值得一试。 How to prevent content files to be removed during incremental build?

答案 1 :(得分:0)

设置时,您可以看到删除文件的过程:

Tools > Options > Projects and Solutions > Build and Run > MSBuild project build output verbosity: 诊断

我有同样的问题。在构建我的项目时,请参见output-dir:

Removed Item(s): 
1>    Reference=
1>        Missing.Box
1>                HintPath=..\lib\Missing.Box.dll
1>                SpecificVersion=False
...

我发现全文: https://oz-code.com/blog/visual-studio-keeps-rebuilding-projects-no-good-reason/

答案 2 :(得分:-1)

当项目由多个dll组成时,可能会发生这种情况,并且复制到输出目录的文件是其中一个依赖dll的一部分。

如果依赖关系不直接指向最终的,可执行的,项目,但是是第二级(最终项目依赖于dll x,这取决于dll y,其中包含要复制的内容)然后,尽管VS已经复制了在构建期间,文件到最终可执行文件的输出目录,它在调试器启动时确定它们不应该存在并删除它们。

解决方案是使间接依赖性成为最终可执行文件的直接依赖。