使用Visual Studio 2010,当我在短时间内构建+运行我的应用程序时,我经常会收到以下错误。如果我等一两分钟再试一次就可以了。 Unlocker声称没有句柄锁定可执行文件。
如何发现锁定它的内容?
如果它是Visual Studio本身,我该怎么办才能使它停止?或者发布文件?
1>------ Build started: Project: MyProj, Configuration: Release Win32 ------
...
1>InitializeBuildStatus:
1> Creating "Release\MyProj.unsuccessfulbuild" because "AlwaysCreate" was specified.
1>ClCompile:
1> All outputs are up-to-date.
1> SomeFile1.cpp
1>ResourceCompile:
1> All outputs are up-to-date.
1>LINK : fatal error LNK1104: cannot open file 'D:\...\MyProj.exe'
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:00.94
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
答案 0 :(得分:38)
今天重新安装后出现此问题。确保已启动Application Experience服务,但未将其设置为禁用。如果设置为手动,我相信VS会启动它。
答案 1 :(得分:13)
你可能有一个锁定可执行文件的迷路构建过程,并且它(杂散过程)没有得到清理。在这种情况下,关闭visual studio,打开进程资源管理器,并查找与visual studio相关的每个进程。 然后再次打开visual studio并尝试重建您的项目。
答案 2 :(得分:11)
我知道这已经很老了,但是我在修改Visual Studio 2010时遇到了同样的问题,所以其他人可能仍会遇到这个问题。
将我的项目路径添加到AVG防病毒设置中的“Exluded Items”似乎已经解决了我的问题。
尝试禁用任何防病毒/驻留屏蔽,看看它是否解决了问题。如果是这样,请将项目路径添加到AV配置中的排除目录。
答案 3 :(得分:5)
该文件可以被锁定,因为它现在正在运行。尝试使用任务管理器终止进程。
答案 4 :(得分:4)
您可能尚未关闭输出。关闭输出,清理并重建文件。您现在可以运行该文件。
答案 5 :(得分:4)
就像Jonathan所说,是的,重命名可以帮助解决这个问题。但是,例如。我被迫多次重命名目标可执行文件,这有点乏味而且不好。
问题在于,当你运行你的项目并且后来得到一个你无法构建你的项目的错误时 - 因为这个可执行文件(你的项目)仍在运行(你可以通过任务管理器检查它)。 如果你只是重命名目标版本,一段时间之后你也会得到同样的错误,如果你打开一个任务管理器,你会看到你用未完成的项目垃圾系统。
用于制作新构建的Visual Studio需要删除以前的可执行文件并创建新的而不是旧的,当可执行文件仍在运行时,它无法执行此操作。因此,如果要创建新的构建,必须关闭旧的可执行文件的过程! (奇怪的是,视觉工作室不会单独关闭它,是的,它看起来像是一些有害的行为)。
手动执行它有些繁琐,所以你可能只是一个bat文件,只要你遇到这样的问题就点击它:
taskkill /f /im name_of_target_executable.exe
它至少对我有用。 就像一个猜测 - 我没有在C ++中正确关闭我的程序,因此可能是视觉工作室保持它运行是正常的。
<强>此外:强> 由于没有完成申请,很有可能成为这样。检查你最后是否调用了PostQuitMessage,以便让Windows知道你已经完成了。
答案 6 :(得分:2)
我得出结论这是某种Visual Studio错误。也许C Johnson是对的 - 也许构建过程会使文件锁定。
我确实有一个可行的解决方法 - 每次都发生这种情况 - 我在项目属性下更改可执行文件的目标名称(右键单击项目,然后选择Properties \ Configuration Properties \ General \ Target Name)。
以这种方式,VS创建了一个新的可执行文件,并解决了这个问题。每次我这样做几次,我都会回到原来的名字,然后骑行~3个名字。
如果有人会找到解决这个问题的理由和解决方案,请回答我的问题,我可以将答案移到你的身上,因为我的解决方法就是。
答案 7 :(得分:2)
我遇到了同样的问题,但使用Codeblocks。由于这个问题,我退出了编程,因为每次我只是想把我的电脑扔出窗外。
我要感谢user963228,答案真的是一个解决方案。您必须将应用程序体验置于手动启动(您可以通过在Windows 7开始菜单中搜索服务,然后查找应用程序体验和单击属性)来实现。
这个问题发生在人们想要调整他们的Windows 7机器时,他们决定禁用一些无意义的服务,所以他们谷歌一些调整指南,大多数指南说应用体验是安全的禁用。
我认为这个问题应该与Windows 7问题相关联而不是VS问题,而且应该更加明显 - 我花了很长时间才找到这个解决方案。
再次感谢!
答案 8 :(得分:1)
只是为了向列表添加另一个解决方案,我发现Visual Studio(在我的情况下为2012)偶尔会锁定不同进程下的文件。
因此,在崩溃时,devenv.exe可能仍在运行并保留在文件中。或者(正如我刚刚发现的那样),vstestrunner或vstestdiscovery也可能会保留在文件中。
杀死所有这些流程,它可能会解决问题。
答案 9 :(得分:1)
我刚刚遇到与VS2013相同的问题,用C ++创建设备驱动程序,以上都没有解决问题。但是,我刚刚发现,在我的情况下,问题似乎与VMWare有关。
我正在运行VMWare工作站客户端,在我的整个C:驱动器上的VM上定义了共享文件夹。当我在VM设置上禁用共享文件夹时,VS2013能够愉快地构建我的.exe文件。
我的新流程是:
1)禁用虚拟机上的共享文件夹(虚拟机设置|选项|共享文件夹 - 并取消选中该复选框) 2)在主机PC上运行构建 3)重新启用共享文件夹(并从那里继续)
希望这可能有助于其他人。
(顺便说一句,您收到的错误是.exe(或其他文件)被锁定或需要管理员权限,但这是一个红色的鲱鱼 - 在我看来,VMWare共享导致这些文件显示为已锁定。)
答案 10 :(得分:1)
通常,这意味着您的程序已被锁定,并且可能无法通过任务管理器或进程资源管理器终止。我遇到了类似的情况,我的程序在运行期间有异常并触发了锁定程序的Windows错误报告。 对于Windows错误报告锁定程序的情况,您可以转到控制面板 - >系统和安全 - >操作中心 - &gt;问题报告设置以设置&#34;从不检查解决方案&#34;希望它有所帮助。
答案 11 :(得分:1)
对我来说,当我尝试在调试模式下构建时,它正在发生,但它在发布模式下运行良好。我将 Visual Studio 中的构建配置从 x86 更改为 x64,这对我来说效果很好,因为我在 64 位系统上运行。
答案 12 :(得分:0)
错误来自(至少有时)来自太长的路径。在我的项目中,简单地减少输出文件路径就可以完成工作: “属性/配置属性/常规/中间目录”
似乎我已达到250个字符的路径限制。
答案 13 :(得分:0)
使用Bjarne Stroustrup编程原理和实践使用C ++“FLTK”示例我得到了相同的错误但是在1小时之后我得到了一个想法,我跟踪了已经在项目属性中看到的一个库 - &gt;链接器 - &gt;输入 - &gt;额外的Dependencies,在我的情况下,我跟踪kernel32.lib以查看位于何处,并看到在不同的文件夹中有许多kernel32.lib。所以我开始复制那些文件夹中的FLTK库和我尝试过的最后一个。 Visual Studio 2013 Express发现fltkd.lib和代码有效。
在我的情况下,正确的路线是C:\ Program Files(x86)\ Windows Kits \ 8.1 \ Lib \ winv6.3 \ um \ x86
我不知道如何在Visual Studio中设置该路由。
在安装适用于Windows 7和.NET Framework 4(ISO)的Microsoft Windows SDK http://www.microsoft.com/en-us/download/details.aspx?id=8442
时,不确定是否创建了Windows工具包文件夹希望能帮助你的人。
答案 14 :(得分:0)
我刚遇到同样的问题。有了我,exe仍在运行,但我不能用任务管理器结束它。只需重启VS,它对我有用。
答案 15 :(得分:0)
我的是,如果你设置MASM列表文件选项一些额外的选择,它会给你这个错误。
只需使用
Enable Assembler Generated Code Listing Yes/Sg
Assembled Code Listing $(ProjectName).lst
没关系。
但是你有任何额外的问题。