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

私の場合、何らかの形でexeファイルがリリースから欠落していました。これがどのように起こったのかわかりません。デバッグからのコピーに置き換えましたが、すべて問題ありませんでした。これをもっと早くチェックするべきだったのですが、ファイルが見つからないだけだとは思いもしませんでした。

于 2015-04-06T11:36:32.483 に答える