14

我在 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(在其他一些来源From)设计器时不要开始编译。

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

4

4 回答 4

38

最后,我发现了这个VS2010(SP1 也是)“错误”的解决方案,我想与 stackoverflow 用户分享它。

就我而言,问题是 csproj 文件是自引用锁定'...\obj\Debug\Foo.Bar.dll'文件。疯了我知道。.csproj所以我通过从文件中删除以下行来解决这个烦人的问题:

<Reference Include="Foo.Bar">
  <HintPath>obj\Debug\Foo.Bar.dll</HintPath>
</Reference>
于 2012-09-06T13:50:38.583 回答
2

我最初找到了另一个解决问题的方法,因为 VS 似乎将程序集锁定在 obj\debug 文件夹中。我在项目中添加了一个预构建脚本来解决我的问题。

del "$(ProjectDir)obj\*.*" /S /F /Q

看到萨拉罗斯给出的答案后,确实是这个问题。我创建了一个新的用户控件,它使用来自另一个项目的服务器控件。出于某种原因,当您在设计模式下查看用户控件时,VS 有时会创建对自身的自引用。即使删除自引用也会修复它,直到 VS 认为是时候再次添加引用了。还没有找到那部分的确切模式。

PS:我正在使用vs2012

于 2012-09-19T13:06:43.253 回答
0

这个问题发生在我身上,当我:

  1. 打开 Visual Studio
  2. 跑调试
  3. 转到 C: 并使用系统清理

如果您尝试再次构建,您会发现此错误。

解决方案:

  1. 关闭 Visual Studio
  2. 做系统清理
  3. 重启你的电脑
  4. 以管理员身份打开 Visual Studio
  5. 选择您的项目
  6. 干净的
  7. 重建
于 2014-10-05T04:36:41.907 回答
0

就我而言,以某种方式发布时缺少 exe 文件。不知道这是怎么发生的。我用调试的副本替换它,一切都很好。我应该早点检查一下,但从没想过文件会丢失。

于 2015-04-06T11:36:32.483 回答