Asp.net

不明確的參考錯誤

  • October 4, 2013

我間歇性地收到以下錯誤:

無法載入文件或程序集“com.mycompany.myapp”或其依賴項之一。找到的程序集的清單與程序集引用不匹配。

我有一個 Ajax 使用者控制項庫,我建構並編譯為 DLL。該項目引用了項目 A (com.mycompany.myapp)。我的主 Web 應用程序引用了這個 DLL,也引用了 Project A。有時,當我嘗試重建我的 Web 應用程序時會發生此錯誤。似乎對項目 A 的引用在 DLL 和 Web 應用程序之間變得不同步。

這只能通過重新建構 DLL、從 Web 應用程序中刪除對 DLL 的引用、重新添加引用,然後重新建構 Web 應用程序來解決。誰能解釋為什麼會發生這種情況以及如何防止出現此錯誤?

我正在尋找一種能夠解決此問題的解決方案,以便我可以分發此 DLL,而不必擔心需要間歇性地重建和部署它。

如果您的所有項目都在同一個解決方案中,則需要確保它們都是項目引用而不是文件引用。您可以通過右鍵點擊項目並轉到屬性 => 引用來檢查這一點。

在您的參考列表中,您會看到一個名為“複製本地”的列。如果將其設置為 false,則表示您通過文件而不是項目引用它(在建構 DLL 後不會更新 DLL)。要解決它,請刪除引用並再次添加(確保從解決方案中引用它,而不是通過引用硬碟驅動器上的 DLL)。

如果您沒有在同一個解決方案中包含所有項目,那麼這是正常行為。假設您的 Ajax 控制項庫在解決方案之外。

開始的情況是這樣的:

  • Ajax 引用 A(版本 1)
  • 項目參考 A(版本 1)
  • 項目參考 Ajax(版本 1)

建構解決方案後(其中沒有 Ajax 項目),您將遇到以下情況:

  • Ajax 引用 A(版本 1)
  • 項目參考 A(版本 2)
  • 項目參考 Ajax(版本 1)

如您所見,編譯器突然需要對 A 版本 1 和版本 2 的引用,所以這是不可能的,它會給您一個錯誤。這也可以解釋為什麼當您進行重建並刪除 DLL 並再次添加它時它會起作用。

這裡的解決方案是將 Ajax 項目添加到您的解決方案中並每次都重新建構它。

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