2017-04-06 318 views
1

我試圖解決在幾個類庫中引用共享項目的問題。在解決方案結構中引用共享項目

內部溶液項目之間的參考文獻是:

  • 類庫A - > SharedProject
  • 類庫乙 - > SharedProject
  • 類庫C - > SharedProject
  • 類庫C - >類庫A
  • 類庫C類庫B類

在共享項目中,我只有一個具有邏輯的類,我想要共享,所以在每個類庫項目中,我使用共享項目中的同一個類。但構建之後我得到了類庫C如下因素的錯誤:

「同一類」兩個類庫和類文庫B

存在的類型是有辦法,使這項工作,否則我建議立即進行刪除替換共享項目與經典類庫?

+0

只要確保兩個類都在不同的命名空間下,問題就解決了。 –

+0

每個類庫都有不同的名稱空間,共享項目中的類具有特定的名稱空間,但它在其他庫中共享 – Kazenga

+1

當然存在相同的類型。您將它編譯到每個DLL中。它位於A,B,*和* C中。有關詳細信息,請參閱標記爲重複的內容,以瞭解這與在多個項目中引用常見的獨立DLL有什麼不同。共享項目功能是爲了便於在一次編譯DLL無法工作的場景(例如針對完全不同的平臺)中共享代碼。就個人而言,我仍然會爲每個平臺編譯DLL,但是VS提供了將整個代碼合併到引用項目中的功能。這更像是添加現有文件作爲鏈接,而不是參考。 –

回答

1

「共享項目」實際上是一種在多個項目之間共享源代碼而不必構建DLL(如在類庫中)的方式。您可以將其視爲將SharedProject的源代碼粘貼到類庫A和類庫B中。將文本複製到類庫A和類庫B中。

它應該相當明顯,此時類庫A和類庫B確實具有相同的類定義在SharedProject中,他們都定義了他們,而不是兩個都提到相同的類。

您的初始直覺是正確的,正確的做法是用類庫替換它,這正是它的目的。然後,您將擁有A和B引用的SharedProject.dll,然後C將引用A.dll,B.dll和SharedProject.dll,並且它應該都可以正常運行(禁止版本不匹配)。

相關問題