2016-01-22 85 views
1

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

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

运行在Windows 10

我的解决方案的结构是这样的:

MySolution.Services (library project) 

MySolution.Main (startup project - WPF application) 

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

以下序列正常工作(文件不会被删除):

建立到的.cs随机更改文件

单击开始调试

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

单击生成 - >重建解决方案

单击开始调试

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

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

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

+0

有完全相同的问题。可以用我的项目在每台PC上重现这一点。重建后我有输出文件夹中的文件,并从VS运行后,我的文件消失。此时我只能从输出文件夹手动正确运行项目,因此无法调试。如果你修复它,请分享你的解决方案。 –

+0

这似乎是一个VS错误。我知道的唯一解决方法是在调试之前对cs文件进行随机更改(不要在调试之前重新生成)。 – Sam

回答

-1

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

如果依赖项不是直接指向最终可执行文件,而是第二级(最终项目依赖于dll x,这取决于dll y,它具有要复制的内容),那么尽管VS已经复制在构建过程中将文件传输到最终可执行文件的输出目录,它会在调试程序启动时确定它们不应该在那里并将其删除。

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

+0

“如果依赖关系不是直接指向最终的可执行文件的项目。”谢谢你的回答,但这不是问题中的场景。 – Sam

相关问题