Visual Studio 2012编译无代码错误的exe失败

4
在使用Visual Studio 2012编写VB.NET项目时,有时在测试或调试配置下运行会出现以下错误原因导致的“构建失败”:

Error 1 Could not copy the file "obj\Debug\MyProgram.exe" because it was not found. MyProgram

代码没有问题,因为刚刚进行了编译(有时我只是重新启动程序,以便观察所有内容的布局情况,然后返回代码进行位置调整)。
我发现的是如果等待一段时间,再进行测试编译 - 它就会神奇地开始工作 - 只是后来又会失败。
有时候,我可以连续进行10-15次良好的编译,然后才会出问题。
关于我的系统配置:
  • 我没有安装其他版本的Visual Studio或独立的.NET语言。
  • 路径设置正确(否则它根本不会编译,而不仅仅是偶尔失败)。
  • 该程序可以是一个没有添加任何代码的简单程序(即...新建 > WinForms项目 > 编译)。
  • 项目、语言(及所有要求)和项目输出路径位于连接到PC内部的本地驱动器上(对于项目使用C:\code*,对于Visual Studio 2012使用标准安装位置)。
我检查了智能数据并扫描了我的硬盘以查找任何错误...从未遇到过。我的系统(CPU)和驱动器的温度约为25-30度C。
我真的很困惑为什么会出现这种情况,并且是随机的。我也尝试完全清除bin/文件夹,甚至移动项目或重新指定编译输出路径。
删除.suo文件有时有帮助,但并非总是如此。
我相信这可能是可以在界面中进行调整的东西,但是我不知道如何手动链接和编译程序。
最后 - 无论我以“管理员”模式(提升权限)还是作为用户运行VS都没有影响。

1
@John Saunders - 我在问题中添加了“(VB.NET)”作为一部分,因为编译器选项的差异从C#来看是天壤之别。虽然这可能是整个VS语言的问题,但VB的解决方案将与C#的解决方案完全不同。 - Kraang Prime
@JohnSaunders - 我同意,我只是想确保这不会成为一个关于"C#"问题的"重复",针对"相同"的问题。^.^。感谢您的编辑/更正。 - Kraang Prime
1
在95%的情况下,这是由于您的反恶意软件在唤醒时出现了“天哪,一个可执行文件从无处而来!”他们会在扫描文件时使其变得不可见,需要随机一段时间。您将不得不禁用它或进行排除。 - Hans Passant
@HansPassant - 我会检查我的防病毒软件历史记录,看看是否有任何这些进程被阻止了。我确实注意到VMWare(o.0)干扰了Visual Studio本身的启动过程,所以我已经停止了它。发现VMWare仍然在钩取并替换Visual Studio调试器(vsid.dll)...这可能是问题所在。深入挖掘中。 - Kraang Prime
呃……这可能是VMWare的问题——我愿意打赌99%的时间编译错误都是因为第三方软件注入了VS调试器。谁想把这个归功于自己,就贴出来作为解决方案(排除VMWare或尝试别的方法),我会标记它已回答。 - Kraang Prime
显示剩余6条评论
2个回答

1
一些可能对您有帮助的方法。
  • 您尝试过重新安装Visual Studio吗?如果不行,您可能需要安装一些Windows更新,编译器可能缺少一些必要的库/引用来编译您的应用程序。
  • 检查您的.Net目标框架,将应用程序设置为您未安装的新框架可能会停止应用程序的编译甚至停止调试,编译器版本过低,这可能会导致编译器出错,但IDE/Visual Studio无法注意到。
  • 尝试通过右键单击解决方案并清理项目输出文件夹,然后尝试重新构建项目/解决方案。
  • 检查项目属性中的编译引用,检查是否添加了计算机上没有的引用。
  • 重新安装/更新.Net Framework,同样地,某些要求可能从您的安装中缺失。
  • 尝试安装较新版本的Visual Studio,尝试使用Vs2013 - 这包含各种改进和修复,Visual Studio 2015即将推出,建议在发布完整版本时安装VS2015,它将包含许多有用的功能以进行未来的.net编程。
  • 创建一个新的管理员帐户并以管理员权限运行VS,然后尝试编译,这可以解决一些vs和其他Microsoft产品的问题,可能会在这里起作用。
  • 从最低版本到当前版本4.5安装所有.Net Framework,当使用的某些引用/库不在您的本地硬盘上时,这可能有所帮助。
如果这些方法都不起作用,我就不知道问题出在哪里了。最后你可以尝试的一件事是将Windows安装到另一个硬盘上,并尝试使用该Windows安装程序来查看会发生什么......希望能有所帮助。
最好的祝福!

谢谢您的回复,但是您说的很多内容已经在我的问题中被否定了。将按照项目符号的顺序进行解答。1:如果是这样的话,它就永远不会编译,而不仅仅是有时候。此外,同样的问题也出现在VS2013和VS2015中。2:由于我不使用任何像80%的github版本发布那样的奇怪技巧来创建跨VS sln文件,所以我没有这个问题。我只看到我安装的框架。 - Kraang Prime
3:当vs_host.exe锁定文件时,删除“output”文件夹是不可能的,这就是编译时出现错误的原因。 4:如果引用丢失/等等——它在第一次编译时就无法通过。请注意,这可以在全新的项目中重复出现,而且没有任何更改。 5:再次提出框架建议。这个问题会通过格式化和跨操作系统持续存在。在你甚至能继续安装VS之前,所有必需的框架都被强制安装。 - Kraang Prime
6: VS2013和VS2015都会遇到这个问题。请注意,这种情况不会发生在“劣质”语言(如Delphi、VB6等)中。这是一个关于整个烂debug过程的问题,VS有“vs_host.exe”或“vshost.exe”,具体名称我忘了。 7: 大多数机器都以管理员身份运行。这个建议是无意义的。 8: 在像Windows 8这样的操作系统上,预装了最低框架,并嵌入了对旧版本(如2.0)的支持。它们大多是“最终”版本。 - Kraang Prime
抱歉,我不知道答案,无法提供帮助。尝试在这个问题上设置赏金,这样它会得到更多的关注,希望能有所帮助。 - Callum

1
我遇到了这种问题是因为我的杀毒软件阻止了我的应用程序(但它没有任何有害代码 :))。
  • 从杀毒软件中排除您的项目文件夹
  • 或者
  • 简单地禁用它(不推荐)

这不是事实。问题出现在一台仅安装了VS的机器上,以及我的普通工作站上。我曾经在使用C#项目时只见过这种情况发生一次,但在使用VB.NET时却发生了很多次。 - Kraang Prime

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接