12
A
回答
28
缺點鏈接文件:
- 添加爲鏈接可能很難維持,尤其是當你擴展到多個項目,許多源文件。工具(例如Visual Studio 2010的Project Linker,或者在Visual Studio 2012中拖動時保持ALT)可以使這更容易。
- 重構工具不適用於鏈接文件。例如,如果您重命名鏈接文件中的類或方法,重構工具將不會更新對該API的其他鏈接副本的引用。
- 在鏈接文件中編輯代碼時,智能感知可能會向您顯示在文件鏈接到的所有平臺上都不可用的API。
- 當您嘗試打開已被另一個項目打開的鏈接文件時,Visual Studio會爲您提供一個消息框,指出「此文檔由另一個項目打開」。
- 您最終將爲每個平臺分配一個DLL。如果你正在創建一個可重用的庫,你希望與其他人分享,如果只有一個版本,可能會更容易分發,而不是每個平臺的獨立版本。便攜式類庫的
缺點:
- 您僅限於可用在所有你的目標平臺的API。您不能使用條件編譯(
#if
語句)來解決平臺之間的差異 - 可能很難弄清楚給定的平臺組合支持哪些API。這裏是一個電子表格,可以在這方面幫助:Portable Class Library API List
有關如何利用便攜式類庫的一些指導,請參閱以下內容:
- How to Make Portable Class Libraries Work for You
- Create Cross-platform Apps with Portable Class Libraries (BUILD session)
儘管我偏愛可移植類庫(作爲PCL團隊的成員),但鏈接文件也是共享代碼的完全有效方式,如果您不願意不會遇到或不介意這些缺點,然後繼續使用鏈接的源文件。我主要使用可移植類庫,但當PCL不適合時,我仍然使用鏈接的源文件。
相關問題
- 1. 什麼是可移植類庫?
- 2. 爲什麼我應該在Xamarin中使用可移植類庫?
- 3. 使用REST而不是SOAP的優點是什麼?
- 4. 使用Cassini而不是IIS的(dis)優點是什麼?
- 5. 使用ObjectId而不是純String的優點是什麼?
- 6. 移植Windows代碼,使用什麼而不是__int64 _tmain和_TCHAR *?
- 7. 爲什麼使用追加()而不是+
- 8. 爲什麼使用.on()添加事件而不是直接添加事件?
- 9. 使用控制器作爲語法而不是$ scope的優點是什麼?
- 10. 使用類而不是使用將對象作爲返回值的函數的優點是什麼?
- 11. 鏈接防靜電共享庫是不可移植的
- 12. C#可移植類庫 - 使用圖像
- 13. 如何使用可移植類庫和EF代碼優先?
- 14. 使用服務而不是組件的優點和缺點是什麼?
- 15. 什麼使用,而不是數據庫?
- 16. 使用Spring PropertySource的優點是什麼?
- 17. 使用DataRelation的優點是什麼?
- 18. 使用Signalr的優缺點是什麼
- 19. 使用Object.assign()的優點是什麼?
- 20. 使用「option explict」的優點是什麼?
- 21. 使用automapper的優點是什麼?
- 22. 使用特徵優於抽象類的優點是什麼?
- 23. 爲什麼添加註釋會逐個植入引腳而不是使用數組並將其植入塊中?
- 24. 爲什麼使用folder.close()而不是直接使用store.close()?
- 25. 爲什麼不是我用JavaScript點擊添加到DOM的鏈接?
- 26. 優點/不使用原型鏈和返回對象,而不是
- 27. 是否可以使用在MonoDroid中引用System.Net的可移植類庫?
- 28. UINT_MIN的可移植值是什麼?
- 29. 爲什麼使用str.chatAt(0)而不是str [0]進行優化?
- 30. 爲什麼使用classmethod而不是staticmethod?
這個答案對我來說很不錯。我唯一要補充的是鏈接文件路由還增加了N維護問題。當我用來維護mvvmcross的鏈接文件版本時,添加新的平臺是一個令人望而生畏的前景,但現在我已經切換到PCL代碼,我很高興考慮添加一些新平臺 - 添加它們並不那麼大或不愉快一個任務。 – Stuart
我說謊了...還有更多的東西要加 - 1. pcl路線鼓勵測試,使測試更容易; 2. imo pcl路由鼓勵良好的體系結構 - 它鼓勵使用接口和依賴注入,而文件鏈接鼓勵靜態鏈接到類和#if語句,這些語句稍後會導致其他構建破壞。 – Stuart
我們看着轉換到PCL,但我認爲這是從第1天開始需要考慮的事情。 – iwayneo