2011-01-11 126 views
1

我有幾個解決方案。添加到同一解決方案中的項目之一的項目引用在另一個解決方案中顯示爲中斷

在第一個解決方案中,我有很多項目。名爲'A'的項目之一具有相同解決方案的另一項目'B'的項目參考。

在第二種解決方案中,添加了項目'A',但未添加項目'B'。

這兩個解決方案都成功構建。

然而,在第二溶液中,參考 的乙項目甲加入,會出現 破碎。

爲什麼?

現在,在第一溶液中,而不是添加B的項目引用到A,I簡單地添加B的DLL(其在對所有的項目創建的公共輸出目錄複製)的「文件參考」組合成。現在參考文獻在解決方案中出現問題,並且第一個解決方案無法成功構建。

我可以知道當我 有這種情況時該怎麼辦?

EDIT:我看着項目A的項目文件,並發現,對於B的項目參考路徑(<ProjectReference Include = "..\B\B.csproj" />屬性),是相對路徑。 (如「.. \ B \ B.csproj」)。 我想這就是爲什麼這個引用在第二個程序集中出現中斷的原因,因爲程序集B不是第二個解決方案的一部分,顯然'B.csproj'在使用相對路徑解析引用時不可用。

回答

1

有兩種方法來引用項目的輸出:

  1. 引用編譯的程序集(.dll文件)
  2. 引用項目本身,這意味着您需要編譯它的輸出

第一個方案用於沒有將該程序集創建爲零件的項目o你的解決方案。通常這用於引用來自第三方的程序集,或者不會經常更改。

第二種情況需要您參考的項目出現在解決方案中。

聽起來好像你混合了引用,創建了一個不屬於解決方案一部分的項目的項目引用。這不起作用。

+0

是的,你說的是正確的。我混合了參考文獻。但是,這似乎不是唯一的問題。我仍在調查,似乎這個問題也可能與我的自動化構建操作有關,這些操作正在通過某些腳本構建解決方案。感謝您的回覆。 – Learner 2011-01-12 04:13:55

1

在第一個解決方案中,您將「B」添加爲項目「A」的「項目參考」。現在,當您向第二個解決方案添加項目「A」時,它在第二個解決方案中尋找「項目B」(因爲它是「項目引用」),顯然找不到它,因此它顯示了警告。

但是,在運行時,項目「A」知道在哪裏找到項目B的輸出,所以引用將被解除,並且在運行時應該沒有問題。 (這就是爲什麼兩個解決方案都能成功構建)

對於第二種情況(直接添加對B的DLL的引用),它對我來說工作得很好。當你說「添加文件引用」時,我假設你的意思是直接添加對DLL的引用(右鍵點擊References-> Add Reference-> Assemblies-> browse-> B.dll),或者是另一個我不知道的方式? :■

希望這有助於:)

+0

感謝您的回覆。我仍然在調查,因爲問題似乎與參考文獻沒有關係。問題可能在於自動連續建立解決方案...... – Learner 2011-01-12 04:03:43

相關問題