Asp.net

ASP.Net 無法創建/卷影複製

  • June 17, 2009

在開發 ASP.Net 應用程序時,我反複收到此錯誤:

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

其中 XXXXX 是一個隨機 DLL。通常,DLL 是 Microsoft 企業庫中的 DLL 之一,但它會有所不同。

這真的很隨機,而且非常令人沮喪。我會花幾個小時沒有得到錯誤,然後每 10-20 分鐘得到這個錯誤。

我見過幾種解決方案。比如這個問題。我嘗試過使用 Clean Solution 選項,並且我也只是重新啟動了本地 IIS。但是,它仍然以相同的隨機但持續的頻率發生。

我還看到很多人提到在配置文件中使用這個選項:

<hostingEnvironment shadowCopyBinAssemblies="false" />

但是,其他人提到它有問題,絕對不應該在生產中使用。

那麼,我應該放棄並嘗試使用 shadowCopyBinAssemblies 選項嗎?(並確保不要將此更改複製到其他環境。)我是唯一經常遇到此問題的人嗎?

*注意:*我使用的是 Visual Studio 2008。

以下解決方法來自這個現已失效的連接問題

  • 添加<hostingEnvironment shadowCopyBinAssemblies="false" /><system.web>web.config 文件的部分。
  • 遇到問題時重新啟動 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))

  • 為我完成這項工作的解決方法是使用“建構解決方案”而不是使用“建構”
  • 成功建構後,我數到十,然後刷新我的網路表單。
  • 我發現通過針對 IIS 重新註冊 ASP.NET,問題“消失了”——從那以後我就沒有遇到過這個問題。您將需要在命令行上執行以下命令:
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i. 這很可能不適用於所有人——這是一個複雜的問題。
  • 重啟VS。
  • 清理解決方案時,發出了一些關於無法刪除文件的警告。這些文件具有它們的只讀屬性集。將這些文件的屬性設置為讀/寫後,問題就解決了。
  • 重新啟動 IIS

編輯:從舊版本的頁面中檢索到的項目(由archive.org 提供)。

等待 10-30 秒,然後點擊刷新。出於某種原因,這總是對我有用。

引用自:https://stackoverflow.com/questions/1007200