0

有一段时间一切都很好。然后,出乎意料的是,当我即将启动应用程序时,Visual Studio 未能构建。我收到警告“无法删除文件 '...bin\Debug[ProjectName].exe'。对路径 '...bin\Debug[ProjectName].exe' 的访问被拒绝。” 和错误“无法将文件 'obj\x86\Debug[ProjectName].exe' 复制到 'bin\Debug[ProjectName].exe'。进程无法访问文件 'bin\Debug[ProjectName].exe',因为它正在被另一个进程使用。” (我在运行 Rebuild 时同时收到警告和错误,但在运行 Build 时只收到错误 - 认为这不相关吗?)

我完全理解警告和错误消息所说的内容:Visual Studio 显然正试图覆盖 exe 文件,同时由于某种原因它同时被锁定。但是,这并不能帮助我找到问题的解决方案......我发现唯一有效的方法是关闭 Visual Studio 并重新启动它。构建和启动然后工作,直到我对某些表单进行更改,然后我再次遇到同样的问题并且不得不重新启动......非常令人沮丧!

正如我上面提到的,这似乎是一个已知问题,因此有很多建议的解决方案。我将在这里列出我已经尝试过的内容,以便人们知道要跳过的内容:

创建一个新的干净解决方案,然后从旧解决方案中复制文件。将以下内容添加到项目的预构建事件中:

if exist "$(TargetPath).locked" del "$(TargetPath).locked" 
  if not exist "$(TargetPath).locked" if exist "$(TargetPath)" move "$(TargetPath)" "$(TargetPath).locked"

将以下内容添加到项目属性(.csproj 文件):

<GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies>

然而,它们都不适合我,所以你可能会明白为什么我开始有点沮丧。我不知道还能去哪里看,所以我希望有人能给我一些东西!这是VS中的一个错误,如果是,有补丁吗?或者我做错了什么,我有循环引用或类似的,如果有,我怎么能找到?

任何建议都非常感谢:)

更新:正如下面评论中提到的,我还使用 Process Explorer 检查了它实际上是锁定文件的 Visual Studio。

4

3 回答 3

1

在打开调试会话之前,您必须关闭执行中的会话。

您可以尝试杀死 vshost.exe 进程:

taskkill /F /IM ".....vshosts.exe"

链接: http: //msdn.microsoft.com/en-us/library/ms185330 (v=vs.100).aspx

于 2013-03-18T08:40:15.020 回答
1

在我看来,您已经\debug\OEE.windows.exe通过双击文件系统中的 exe 手动运行该文件。您正在尝试从 Visual Studio 构建您的项目。Visual Studio 在构建期间会做的是它会创建新文件oee.windows.exe,但它无法这样做,因为同名的文件已经存在并且正在被进程使用。

于 2013-03-18T08:40:39.547 回答
1

关闭程序“OEE.Windows.exe” - 您可能正在对其进行测试并尝试在不先关闭它的情况下进行重建。

于 2013-03-18T08:38:42.453 回答