簡體   English   中英

最終編譯程序集中.Net中項目和dll依賴項之間的差異

[英]Difference between project and dll dependencies in .Net in the final compiled assembly

假設我有兩個項目A和B. A取決於B.我可以用兩種方式指定:

  • 在同一個解決方案中包含A和B,並將B指定為A的項目依賴項。這在A的msbuild項目中顯示為“ProjectReference”節點。
  • 包含對B的已編譯dll的引用作為A的依賴項。這在A的msbuild項目中顯示為“Reference”節點

我的問題是,一旦我為A構建程序集,這兩種方法之間的最終輸出是否存在差異。

我嘗試創建幾個簡單的項目來模擬這種關系並嘗試比較 - 但不同的比較工具告訴我不同​​的東西。 在寫一些逐字節比較這些文件的東西時,我想知道你們是否對此有所了解。 具體來說,如果我使用dll引用而不是項目引用,構建的程序集的行為是否會有任何差異。

如果項目B源在項目A的兩個版本之間沒有變化,則項目A輸出的行為將沒有差異。 但是,如果項目B源已更改,則將其作為項目A中的項目引用也將導致項目B重建。 這種差異決定了您如何從項目A中引用項目B:

  • 如果您擁有項目B和項目A的源,並且它們緊密耦合,或者如果它們都處於活動開發狀態並且項目B經常斷開其公共接口的更改,則您希望將項目B作為項目引用。 這將確保項目A始終在其構建中使用項目B的最新輸出。

  • 如果項目B是外部依賴項,您不自行開發,或者您沒有源代碼,或者如果它已經已經發貨且您無法運送帶有項目A的修改版本,則需要參考預先構建的項目B輸出,以確保您使用相同版本的項目B進行開發和測試,這很可能是在用戶的計算機上。

添加為項目參考只是具有如果需要則自動構建組件“B”的優點。

組裝“A”后,沒有區別。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM