2012-12-10 19 views

回答

28

缺點鏈接文件:

  • 添加爲鏈接可能很難維持,尤其是當你擴展到多個項目,許多源文件。工具(例如Visual Studio 2010的Project Linker,或者在Visual Studio 2012中拖動時保持ALT)可以使這更容易。
  • 重構工具不適用於鏈接文件。例如,如果您重命名鏈接文件中的類或方法,重構工具將不會更新對該API的其他鏈接副本的引用。
  • 在鏈接文件中編輯代碼時,智能感知可能會向您顯示在文件鏈接到的所有平臺上都不可用的API。
  • 當您嘗試打開已被另一個項目打開的鏈接文件時,Visual Studio會爲您提供一個消息框,指出「此文檔由另一個項目打開」。
  • 您最終將爲每個平臺分配一個DLL。如果你正在創建一個可重用的庫,你希望與其他人分享,如果只有一個版本,可能會更容易分發,而不是每個平臺的獨立版本。便攜式類庫的

缺點:

  • 您僅限於可用在所有你的目標平臺的API。您不能使用條件編譯(#if語句)來解決平臺之間的差異
  • 可能很難弄清楚給定的平臺組合支持哪些API。這裏是一個電子表格,可以在這方面幫助:Portable Class Library API List

有關如何利用便攜式類庫的一些指導,請參閱以下內容:

儘管我偏愛可移植類庫(作爲PCL團隊的成員),但鏈接文件也是共享代碼的完全有效方式,如果您不願意不會遇到或不介意這些缺點,然後繼續使用鏈接的源文件。我主要使用可移植類庫,但當PCL不適合時,我仍然使用鏈接的源文件。

+2

這個答案對我來說很不錯。我唯一要補充的是鏈接文件路由還增加了N維護問題。當我用來維護mvvmcross的鏈接文件版本時,添加新的平臺是一個令人望而生畏的前景,但現在我已經切換到PCL代碼,我很高興考慮添加一些新平臺 - 添加它們並不那麼大或不愉快一個任務。 – Stuart

+3

我說謊了...還有更多的東西要加 - 1. pcl路線鼓勵測試,使測試更容易; 2. imo pcl路由鼓勵良好的體系結構 - 它鼓勵使用接口和依賴注入,而文件鏈接鼓勵靜態鏈接到類和#if語句,這些語句稍後會導致其他構建破壞。 – Stuart

+0

我們看着轉換到PCL,但我認爲這是從第1天開始需要考慮的事情。 – iwayneo

相關問題