重新設定.NET代碼的目標平臺

jopen 8年前發布 | 5K 次閱讀 .NET

自從.NET平臺問世以來,隨著多年的發展與流行度的不斷增長,它已經逐漸擴展到了多個平臺與設備上。如果開發者想要將他們的項目從一個平臺移植到另一個平臺上,他們經常會面對一個難題:如何確定他們的代碼使用了哪些API,而目標平臺又提供了哪些API。微軟最近推出了.NET可移植性分析器(NPA —— .NET Portability Analyzer),能夠使遷移的過程得到簡化。

來自微軟的Taylor Southwick與Connie Yao參加了由Seth Juarez所主持的一次Channel 9 談話 ,他們的話題包括NPA的功能,以及開發者如何在自己的項目中使用這一工具。NPA的設計目標是幫助開發者處理在由一個平臺轉換至另一個平臺時所遇到的問題。該工具對于源平臺與目標平臺的選擇沒有限制,這就意味著開發者可以進行任意類型的遷移。(舉例來說,開發者可以從Widows Phone遷移至Silverlight,或從Xamarin.Android遷移至.NET Core。)

NPA在執行時要指定源項目,它可以分析出項目中使用了哪些API,以及轉換至新的目標平臺時需要進行哪些改動。當前所支持的平臺包括:

  • .NET Framework的每個桌面版本
  • Silverlight
  • Xamarin
  • Mono 3.3
  • Windows 8
  • Windows Phone
  • .NET Core

請注意,雖然開發者可以選擇使用離線分析模式,但在默認情形下,所分析的代碼信息將通過web服務發送給微軟。整個分析過程將生成一個API列表,并發送給某個web服務(可移植性服務),該服務能夠確定可用的目標,以及每種目標所具備的API。在分析過程結束之后將為用戶生成一份報告,包含了“可移植性索引”信息,其中含有你所使用的API中有多少比例是在其他平臺中不可用的細節信息。但該報告并不會告訴你這些API使用了多少次,只會告訴你是否使用過某個API(也就是說,無論某個API使用了1次或是100次,分析結果的評分都是一樣的。)

在分析過程中使用web服務的原因有兩個。微軟希望通過一種簡單的方式讓分析功能保持更新,并且通過這種方式了解客戶使用了哪些API。這些信息也將幫助微軟決定有哪些API應該從桌面版本中移植到“次世代”的版本中,即.NET Core、ASP.NET等等。

如果有人對于這種方式存在隱私方面的顧慮,或者在他們的開發環境中無法訪問互聯網,那么NPA還提供了一種離線模式,可以通過重編譯NPA以支持這一模式。微軟已盡力減少通過web服務發送至服務器的信息,作為這一簡化流程的一部分,NPA會嘗試確定哪些代碼是微軟的API、哪些代碼是客戶自行編寫的API,并僅發送微軟的API數據。此外,還可以通過一個命令行選項查看發送給微軟的信息。通常來說,以下信息將發送至微軟服務器:

  • 所使用的API
  • 所引用的程序集
  • 你的代碼所在的程序集的名稱

該工具將提供三種不同的報告格式:

  • HTML報告 —— 對于你的代碼庫的可移植性給出一個總體概述
  • Excel電子表格 —— 可為API的使用提供過濾數據
  • JSON文件格式同樣可用 —— 可將該文件與其他程序工具相結合,提供進一步的行為

作為微軟開源計劃的一部分,NPA的源代碼托管在 GitHub 平臺。除了命令行工具之外,還可以通過一個擴展在Visual Studio中使用NPA功能。可以在extension gallery中 找到 該擴展,在VS2013及VS2015中使用。

在Visual Studio中使用該工具除了能夠生成報告之外,還有一個額外的好處。它能夠以編輯器消息的方式指出你的代碼中出現的可移植性問題,因此,每個有沖突的API調用都會指向你的代碼中的實際位置。如果可能的話,它還能夠建議你如何對代碼進行修正。通過它還能跳轉至特定的代碼調用之處,這將為你節省大量的時間。(請注意,當前版本的Visual Studio擴展僅支持HTML格式的報告。)

查看英文原文: Retargeting .NET Code

來自: http://www.infoq.com/cn/news/2016/02/netportability

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!