[英]C# type defined in an assembly that is not referenced
我有兩個項目 A 和 B。項目 A 在項目 B 中使用類型 X,所以我在 A 中添加了對 B 的引用。一切都很好。
我使用強命名密鑰文件簽署了項目 B。 一切仍然很好。
然后我決定更改 B 的強命名密鑰文件。我重建了項目 B ok。 當我嘗試構建項目 AI 時收到錯誤“錯誤 1 類型 X 在未引用的程序集中定義。您必須添加對程序集 B 的引用,版本=1.0.0.0,文化=中性,PublicKeyToken=95b41b0d6571627b”。 ”
所以我刪除了項目 A 中的引用並重新添加了它,不高興。 我可以 dbl 單擊項目 A 中的項目 B 引用,打開對象瀏覽器並在那里看到類型 X 確定。 我還完全限定了 A 中的 X 型對象,並且智能感知很好地拾取了它們,但它仍然無法構建。
我認為更改密鑰文件可能需要進行修訂,因此我將程序集 B 版本更改為 2.0.0.0,但 A 仍然抱怨它需要版本 1.0.0.0。 查看 A 中 B 引用的屬性,它肯定指向正確的版本,並且確實顯示為 2.0.0.0
我可以忍受使用現有的密鑰文件,但如果可能的話,我想了解我哪里出錯了。
根據您在評論中所說的,我會說這絕對是項目 A 的問題。
也許這些步驟將有助於解決它:
刪除對項目的所有引用后,按照瓶頸建議重新加載項目,看看是否能解決問題。
抱歉回復晚了,但這對我有幫助:
(假設您目前有 AnyCPU 解決方案平台)
對我有用的是刪除對項目的引用,然后重新添加它。 出現了一條新的錯誤消息,指出我需要引用缺少的第三個庫,因此原始消息有點誤導!
您可以嘗試編輯項目 A 的項目文件 (projectA.csproj)。 為此,請通過 Visual Studio 右鍵單擊項目-> 卸載項目,然后右鍵單擊已卸載的項目-> 編輯文件。 在那里搜索對項目 B 的引用,並根據需要嘗試更正
這也發生在我身上。
就我而言,問題在於解決方案 AI 引用了解決方案 B 中的項目(我從 B 更改了項目名稱)。 當我嘗試編譯 A 時,它試圖在 B 中找到項目的舊名稱。
我再次添加了這個項目的新引用,重新編譯等等,但不幸的是它不起作用。
當我再次在 A 中添加 B 的所有引用時,問題得到解決。我正在加載用 B 的舊項目編譯的舊 DLL。這些 DLL 與舊引用有某種交叉交互。
我希望這對其他人有用。
如果 x 繼承了 A 你必須在 B 中引用它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.