Visual Studio无法写入输出文件'...\_ \netj\Debug\Foo.Bar.dll"

Sal*_*ros 14 .net c# compiler-errors build visual-studio

我在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
Run Code Online (Sandbox Code Playgroud)

我一直在寻找互联网上的解决方案,实际上发现/尝试了一些解决方案.

例如:很多人对开发论坛被建议不开始编译,而用户控件(在一些其他来源设计师打开).

其他一些人使用预构建脚本来删除obj文件夹,这个特殊的解决方案是可以接受的,但如果发布的项目是一个广泛使用的库,它的重新编译将导致重新编译"父"项目.

Sal*_*ros 38

最后我发现了这个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>
Run Code Online (Sandbox Code Playgroud)

  • 与VS2012有同样的问题,这在完全重建后修复了它.它肯定与使用自定义用户控件有关,但不确定究竟哪个方面. (3认同)
  • 我同意@shakinfree,我将用户控件单击拖动到我的表单上,这导致VS添加对项目的自引用.傻傻的 (2认同)