我創建三個項目如下:有沒有辦法來判斷一個項目是否引用瞭解決方案中的另一個項目,或者只是它的二進制文件?
ConsoleApp(控制檯應用程序)
ProjectReference(類庫)
BinaryReference(類庫)
向每個在上面提到的類庫中,我添加了一個類如下:
ProjectReference
namespace ProjectReference
{
public class Class1
{
public string Property1 = "Property 1 from project reference.";
}
}
BinaryReference
namespace BinaryReference
{
public class Class1
{
public string Property1 = "Property 1 from binary reference.";
}
}
然後,在ConsoleApp項目,我點擊添加引用從解決方案選擇的ProjectReference類庫項目 - >項目選項卡。
然後我點擊再次添加引用在ConsoleApp項目,這次從瀏覽選項卡上,我選擇了BinaryReference類庫項目的二進制文件。
接下來,我構建解決方案。我擴展了參考節點爲ConsoleApp來看看我的兩個參考的屬性,他們出現正好相同。如果不是我給他們命名的方式,我不能告訴哪一個是項目參考,哪一個是二元的。
質詢
這讓我想知道這兩個東西:
有沒有辦法告訴從另一個?
如果兩個參考目標都在相同的解決方案中,那麼它更重要嗎?無論如何,當您在Visual Studio中構建解決方案時,它們都將以正確的順序構建。
即使我本來想自定義生成序列,並希望有一個MS構建腳本這個,而不是Visual Studio中建立它,它仍然也就沒有什麼區別既引用的項目必須要建首先,因爲它們是ConsoleApp項目的依存關係?
一個比另一個更好嗎?我曾經認爲項目的參考比較好,但現在我正在以這種方式批判性地審視他們所持有的小信念。
事情可能會有所不同,如果BinaryReference沒有在解決方案中的項目,但在另一種解決方案的一個項目(但不是我從未有過的,因爲那麼這是不是一個有爭議的問題的來源,我們有與我們引用的每個微軟或第三方程序集)?在這種情況下,它會要求我打開其他溶液,其BinaryReference作爲項目參考和去之前建立這個解決方案,其中BinaryReference是一個二進制參考構建。
即使我已經編寫好幾年了,我把所有這些問題了,是因爲我在看與溶液中的一個極大的項目的大型企業項目,一些引用是可疑二進制,而不是項目。棘手的部分是:項目名稱與它們生成的程序集名稱不同。
所以...爲什麼你關心的一些是在大項目引用和其他二進制文件? – JuanR
引用鬆散的DLL已成爲過去。將它們包裝在NuGet包中並部署到NuGet服務器,以便您可以管理版本依賴性。如果它在相同的解決方案中,那麼可以做一個項目引用。 – mason
相關[github上的問題(https://github.com/dotnet/roslyn/issues/4358):「Visual Studio的2015年不再使用二進制參考時,其項目相同的解決方案加載庫」 –