在构建时出现错误

时间:2013-03-18 08:36:30

标签: c# asp.net

一切都很好。然后,当我即将启动应用程序时,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。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

您可以尝试终止vshost.exe进程:

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

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

答案 2 :(得分:1)

在我看来,您通过双击文件系统中的exe手动运行文件\debug\OEE.windows.exe。而你正试图从visual studio构建你的项目。 Visual Studio在构建期间将执行的操作是它将创建新文件oee.windows.exe,但它无法执行此操作,因为具有相同名称的文件已存在且正由进程使用。