web-dev-qa-db-ja.com

ASP.Netはコピーを作成/シャドウできません

ASP.Netアプリケーションを開発すると、このエラーが繰り返し表示されます。

  Cannot create/shadow copy 'XXXXX' when that file already exists

ここで、XXXXXはランダムDLLです。通常、DLLはMicrosoftのエンタープライズライブラリのDLLの1つですが、状況によって異なります。

それは本当にランダムで、非常にイライラします。エラーが発生することなく何時間も経過し、10〜20分ごとにこのエラーが発生します。

私はいくつかの解決策を見てきました。たとえば、 この質問 です。 Clean Solutionオプションを使用してみましたが、ローカルIISを再起動しただけです。ただし、それは同じランダムですが永続的な頻度で発生します。

また、設定ファイルでこのオプションを使用することについて多くの人が言及しているのを見てきました。

<hostingEnvironment shadowCopyBinAssemblies="false" />

ただし、他の人からは問題があるとの指摘があり、本番環境での使用は絶対に避けてください。

だから、あきらめて、shadowCopyBinAssembliesオプションを試してみるべきですか? (この変更を他の環境にコピーしないように注意してください。)この問題が頻繁に発生するのは私だけですか?

注:私はVisual Studio 2008を使用しています。

41

以下の回避策は これは現在機能していない接続の問題 から来ています:

  • _<hostingEnvironment shadowCopyBinAssemblies="false" />_をweb.configファイルの_<system.web>_セクションに追加します。
  • 問題が発生したら、Cassiniを再起動します
  • エラーが発生した場合は、デバッガーを停止し、ソリューションを右クリックして[ソリューションをクリーン]してください。 F5キーを押してデバッガを再起動します。これは私にとって50%を超える失敗率を持っているので本当に迷惑です、そしてあなたはそこにCLEAN SOLUTIONへの手動のオプションがあるべきではないと思います!この1200ドルのPOSアプリケーションはそれを掃除する必要があります自動的に!
  • これは、Gary Farr( http://blogs.claritycon.com/blogs/gary_farr/archive/2007/03/09/2888.aspx )の好意により、一部のユーザーにとってより魅力的な別の回避策です。
  • 以下をビルド前のイベントに追加します。

    IF EXIST $(TargetPath).LOCKED (del $(TargetPath).LOCKED) ELSE (IF EXIST $(TargetPath) (move $(TargetPath) $(TargetPath).LOCKED))

  • 私のために仕事をする回避策は「ビルド」を使用する代わりに「ビルドソリューション」を使用することです

  • ビルドが成功した後、私は10まで数え、それからWebフォームを更新します。
  • IISに対してASP.NETを再登録することで、問題が「なくなります」-それ以来問題が発生していません。コマンドラインで次のコマンドを実行する必要があります。
    _C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i_。これはおそらく誰にとってもうまくいきません-それは複雑な問題です。
  • vSを再起動します。
  • ソリューションのクリーニング時に、削除できなかったファイルについていくつかの警告が発行されました。これらのファイルには、読み取り専用プロパティが設定されていました。これらのファイルのプロパティを読み取り/書き込みに設定した後、問題は解決されました。
  • IISを再起動します

編集:ページの古いバージョン (archive.orgの礼儀)から取得したアイテム。

23
daxsorbito

10〜30秒ほど待ってから、更新してください。何らかの理由で、これは常に私にとってはうまくいきます。

38
joshcomley

Visual Studioを再起動するだけでうまくいきました。

5
Ayo Adesina

私の状況ではiisresetのみが機能しました。

1

プロジェクトのプロパティを開き、[Web]タブを開いて、[編集と続行を有効にする]オプションがオフになっていることを確認します。

1
Ricardo Sanchez

これらの行をビルド前のイベントコマンドラインに追加します。これにより、Visual Studio内でDLLのロックが解除されます。

 IF EXIST $(TargetPath).LOCKED  (del $(TargetPath).LOCKED)
  ELSE (IF EXIST $(TargetPath) (move $(TargetPath) $(TargetPath).LOCKED))

再コンパイルすると、コピーできないDLLエラーは発生しません。

0
batman

Entity Frameworkを使用する場合:

エラーメッセージ: "そのファイルが既に存在する場合、シャドウコピー ''を作成できません。"

解決策: "数秒待ってからページを更新してください。"

詳細については、次のWebサイトをご覧ください。 MVC 5 WebアプリケーションのAdvanced Entity Framework 6シナリオ(12/12)

0
Murat Yıldız

デザインモードに移動し、右クリックしてブラウザーのビューを押すと、問題はなくなりますAnil Madan

0
Anil

インポートしたDLLで作成したものを使用すると、この問題が頻繁に発生しました。

停止しようとすると失敗し、さまざまな問題が発生しますが、発生したときはいつでも、再構築ソリューションを実行するだけで、そのビルドの問題はすぐに消えます。

また、Visual Studio 2002で作業しているため、問題は発生していません。2008には私の知る限りこの問題はありません。2005にもありません。古いVSを使用していますか?

0
CRice

ページを更新(F5)するだけです。

0
Mohammad Imran

クリーンにして、もう一度ビルドします。それは私を助け、それはしばしば私のために働いた

0
Bashir ahmad

このコードをweb.configに配置すると、同じ問題が発生しました。

<hostingEnvironment shadowCopyBinAssemblies="false" />
0