更新: 可以在Microsoft Connect中找到重现此错误的示例项目.我还测试并验证了下面接受的答案中给出的解决方案适用于该示例项目.如果此解决方案不适合您,您可能遇到了另一个问题(属于另一个问题).
这是一个之前提出的问题,无论是Stack Overflow还是其他地方,但我发现的这些建议都没有帮助我,所以我只想尝试一个新问题.
场景:我有一个简单的Windows窗体应用程序(C#,.NET 4.0,Visual Studio 2010).它有大多数其他形式继承的基本形式,它使用Entity Framework(和POCO类)进行数据库访问.没什么好看的,没有多线程或任何东西.
问题:一切都很好.然后,当我即将启动应用程序时,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"
Run Code Online (Sandbox Code Playgroud)将以下内容添加到项目属性(.csproj文件):
<GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies>
Run Code Online (Sandbox Code Playgroud)但是,他们都没有为我工作,所以你可能会明白为什么我开始有点沮丧.我不知道在哪里可以看,所以我希望有人能给我一些东西!这是VS中的一个错误,如果是这样的补丁?或者我做错了什么,我有一个循环引用或类似的,如果是这样我怎么能找到?
任何建议都非常感谢:)
更新:如在下面评论中提及,我也使用Process Explorer的,它实际上检查是 Visual Studio中被锁定的文件.
我在Windows服务器上运行的应用程序使用Jet/Access数据库.由于某些原因,每两周左右数据库文件被系统进程锁定(PID 4,似乎已修复)
经过一些谷歌搜索后,我发现其他一些用户的文件被特殊进程锁定,但不同的文件(当然).
我正在使用Visual Studio 2010,如何设置或自动将输出文件的所有者从Visual Studio(例如可执行文件)更改为管理员以外的用户?
所有输出文件当前都归管理员所有(由于Visual Studio是通过管理权限启动的),所以有时由于访问权限我无法删除这些文件.
有时Visual Studio本身也不能删除它(在我运行可执行文件之后)直到几分钟,当我需要重建那些可执行文件时它真的很烦人.有谁知道这里的实际问题是什么?
错误信息是: error LNK1168: cannot open [path to file].exe for writing
permissions file administrator visual-studio-2010 visual-studio
我一直在 VS.NET 2010 中调试,没有出现任何问题。但现在无法建造。我收到错误:
Unable to copy file [filename] to bin\Debug\[filename]. The process cannot access the file bin\Debug\[filename] because it is being used by another process.
Run Code Online (Sandbox Code Playgroud)
我收到六个不同文件的此错误。我已经重新启动 VS.NET 2010 但仍然收到错误。不重启机器,有谁知道如何解决这个问题吗?