您好,登錄后才能下訂單哦!
遷移#SNMP到.NET Core平臺的心得是什么,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
準備階段
首先,Visual Studio 2015是必要的開發工具。雖然它已經包含了.NET Core的原始測試版,這里還是推薦下載 RC1 安裝包,
http://get.asp.net
請下載 ASP.NET 5 RC 那個版本。下面都是假設在 Windows 系統上。
執行安裝程序,它會進一步下載更多的部件。等到安裝完成,就可以進行 .NET Core RC1程序的開發。
下面讓我們進一步升級到 RC1 Update 1這個升級版本:
打開 Visual Studio Command Prompt。
執行”dnvm upgrade”命令。
再執行”dnvm list”命令。
如果一切正常,那么這時候輸出應該是這樣的,
C:\Program Files (x86)\Microsoft Visual Studio 14.0>dnvm list
Active Version Runtime Architecture Location Alias
—— ——- ——- ———— ——– —–
1.0.0-rc1-final clr x86 C:\Users\lextm\.dnx\runtimes
1.0.0-rc1-update1 clr x64 C:\Users\lextm\.dnx\runtimes
* 1.0.0-rc1-update1 clr x86 C:\Users\lextm\.dnx\runtimes default
1.0.0-rc1-update1 coreclr x64 C:\Users\lextm\.dnx\runtimes
1.0.0-rc1-update1 coreclr x86 C:\Users\lextm\.dnx\runtimes
開始遷移
下面可以開啟 Visual Studio 2015,并且創建一個類型是 Class Library (Package) 的新工程(Visual Studio 2015 Update 1似乎把這個工程類型改名了,研究中)。這種工程的文件后綴是.xproj。這種工程的編譯結果會是一個 NuGet 包。
在往里面加入新東西之前,我們先來研究一下 project.json 文件。
需要注意的是 project.json 是全新的管理依賴項的方式,它既代替了原來管理 NuGet 包的 packages.config,也替代了原來 .csproj 工程文件中管理引用的部分。
一個范例是 #SNMP Library 現在使用的 project.json 文件,
https://github.com/lextm/sharpsnmplib/blob/netcore5/SharpSnmpLib/project.json
從中我們可以看到,既有用來描述 NuGet 包的各種元數據信息,也包含依賴項。
其中比較主要的部分是它指明了兩個平臺別名(moniker),一個是 .NET Framework 4.5.1(net451),另一個是 .NET Platform Standard 5.4(dotnet5.4)。
前者有一個基本的引用列表,所以不太需要指明具體庫的應用,但是比較特殊的是 System.Runtime.Serialization,所以它是唯一需要寫明的一個引用。
而后者怎是一個新的別名,用來標識一個包含完整 API 清單的 .NET 平臺。凡是支持這個平臺標準5.4版本的 CLR 實現(不限 .NET Framework,Mono 或者 Xamarin),都可以使用我們編譯之后的 NuGet 包。關于平臺標準的細節可以閱讀下面的文檔,
https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md
不過它已經更新 RC2 的版本,所以版本號已經改為從1.0計算了。
面向平臺標準開發的一大困擾就是所有的引用都需要手工指明。而這些引用也最后來自于對應的 NuGet 包。那么怎么尋找這些包和它們的對應版本呢?
簡單來說,步驟就是將要遷移的項目代碼手工拷貝到新工程里,然后編譯。凡是找不到的類型,我們使用微軟臨時發布的一個查詢網站
http://packagesearch.azurewebsites.net
來查詢包含它的 NuGet 包和版本。這是一個有點費時間的過程,因為
有些類型是 RC1不存在的,而且可能也不會出現在 RC2等后續版本。于是需要換變通的方式。
有些類型在后續版本中會有,那么需要等待。
有些類型僅僅出現在桌面版本的 .NET Framework 中于是需要條件編譯。
因為僅僅作為一個測試,所以我在遷移 #SNMP Library 過程中就刪去了很多代碼。另外由于 Socket 類型的同步方法都被移除,我也不得不將很多 #SNMP Library 的代碼改寫為 async/await 方式。等微軟正式發布 RC2,我會考慮再遷移一部分代碼過去。
到此,只要編譯通過,那么初步的遷移工作也就結束了。
寫在最后
還有其他值得注意之處:
和 project.json 對應,Visual Studio 會維護一個 project.lock.json 文件。這個文件詳細記錄了依賴項展開的情況,了解它的結構有利于調試一些依賴項問題。但是不要將它簽入到版本控制。
.xproj 工程不像 .csproj 那樣需要明確指示工程包含的源文件,而是默認將同一文件夾下面所有源文件引入。因此有可能遷移過程中需要調整下工程文件的組織。
暫時沒有特別方便的單元測試集成。后面應該會有。
dotnet5.x 是個臨時的別名,后面都會改成 netstandard1.x。
上面僅僅談到了遷移過程中最為重要的步驟。一些工具,如 dnvm 由于 RC2 起會被 dotnet 工具取代,所以都沒有詳細介紹。現在這個階段,還是淺嘗輒止比較經濟實惠。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。