我在Visual Studio 2010中编译一个大的c#解决方案时遇到了这个错误。 每次编译后我都要删除此解决方案使用的项目之一的obj文件夹。否则我收到以下错误:
Could not write to output file '...\obj\Debug\Foo.Bar.dll'
The process cannot access the file because it is being used by another process
我一直在寻找互联网上的解决方案,并且实际上找到了/尝试了很少的解决方案。
例如:很多人在开发论坛上建议不要开始编译,而 UserControl (在其他一些来源来自)设计师会打开。
其他一些人使用预构建脚本来删除obj文件夹,这个特殊的解决方案是可以接受的,但是如果发布的项目是一个广泛使用的库,它的重新编译将导致重新编译“父”项目。
答案 0 :(得分:37)
最后,我发现了这个 VS2010 (SP1太)“bug”的解决方案,我想与stackoverflow用户分享。
在我的情况下,问题是csproj文件是SELF-REFERENCING锁定的'...\obj\Debug\Foo.Bar.dll'
文件。疯了我知道。
所以我通过从.csproj
文件中删除以下行来解决这个恼人的问题:
<Reference Include="Foo.Bar">
<HintPath>obj\Debug\Foo.Bar.dll</HintPath>
</Reference>
答案 1 :(得分:2)
我最初找到了另一个问题的解决方案,因为VS似乎将程序集锁定在obj \ debug文件夹中。我在项目中添加了一个预构建脚本来解决我的问题。
del "$(ProjectDir)obj\*.*" /S /F /Q
在看到Salaros给出的答案后,确实是问题所在。我创建了一个新的usercontrol,它使用来自另一个项目的Server控件。出于某种原因,当您在设计模式下查看usercontrol时,VS有时会自行创建自引用。即使删除自引用也会修复它,直到VS认为是时候再次添加引用。没有找到该部分的确切模式。
PS:我正在使用vs2012
答案 2 :(得分:0)
这个问题发生在我身上:
打开视觉工作室 运行调试 转到c:并使用系统清理
再次尝试建造......
您会发现此错误
解决方案: 关闭视觉工作室 使系统清理 重启电脑 以管理员身份打开visual studio 选择项目 清洁 重建
它会起作用
答案 3 :(得分:0)
在我的情况下,不知何故exe文件在发布时丢失了。不知道这是怎么发生的。我用调试的副本替换它,一切都很好。我应该早点检查一下,但从未想过文件会丢失。