web-dev-qa-db-ja.com

VisualStudioは出力ファイルに書き込めませんでした '... \ obj \ Debug \ Foo.Bar.dll "

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

私はインターネット全体で解決策を探していましたが、実際にそれらのいくつかを見つけて試しました。

例:開発フォーラムの多くの人々は、デザイナーが開いている間はコンパイルを開始しないことを提案していましたserControl(他のいくつかのソースではFrom).

他の何人かはobjフォルダーの削除にビルド前のスクリプトを使用しましたが、この特定の解決策は受け入れられますが、発行されたプロジェクトが広く使用されているライブラリである場合、その再コンパイルにより「親」プロジェクトが再コンパイルされます。

14
Salaros

最後に、この解決策を発見しましたVS201(SP1も)「バグ」であり、stackoverflowユーザーと共有したいと思います。

私の場合、問題はcsprojファイルがロックされた'...\obj\Debug\Foo.Bar.dll'ファイルを自己参照していることでした。私が知っているクレイジー。そこで、.csprojファイルから次の行を削除することで、この厄介な問題を解決しました。

<Reference Include="Foo.Bar">
  <HintPath>obj\Debug\Foo.Bar.dll</HintPath>
</Reference>
38
Salaros

VSがobj\debugフォルダー内のアセンブリをロックしているように見えるため、最初に問題の別の解決策を見つけました。プロジェクトにビルド前のスクリプトを追加して、問題を修正しました。

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

サラロスの答えを見た後、それは確かに問題でした。別のプロジェクトのサーバーコントロールを使用する新しいユーザーコントロールを作成しました。何らかの理由で、ユーザーコントロールをデザインモードで表示すると、VSが自身への自己参照を作成することがあります。自己参照を削除しても、VSが参照を再度追加する時期を判断するまで修正されます。その部分の正確なパターンが見つかりませんでした。

PS:私はvs2012を使用しています

2
Marcel

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

0
Grayson

この問題は、次の場合に発生しました。

  1. VisualStudioを開きました
  2. デバッグを実行しました
  3. Cに行きました:そして使用されたシステムクリーンアップ

再度ビルドしようとすると、このエラーが発生します。

解決:

  1. VisualStudioを閉じる
  2. システムのクリーンアップを行う
  3. コンピュータを再起動してください
  4. 管理者としてVisualStudioを開きます
  5. プロジェクトを選択してください
  6. 掃除
  7. 再構築
0
usama el-far