日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

如何迁移#SNMP到.NET Core平台的一些体会

發(fā)布時(shí)間:2023/12/4 asp.net 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何迁移#SNMP到.NET Core平台的一些体会 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

.NET Core 依然在飛速進(jìn)化中,所以如果不是非常喜歡折騰的性格,建議各位還是暫時(shí)忍耐。

準(zhǔn)備階段

首先,Visual Studio 2015是必要的開發(fā)工具。雖然它已經(jīng)包含了.NET Core的原始測(cè)試版,這里還是推薦下載 RC1 安裝包,

http://get.asp.net

請(qǐng)下載 ASP.NET 5 RC 那個(gè)版本。下面都是假設(shè)在 Windows 系統(tǒng)上。

執(zhí)行安裝程序,它會(huì)進(jìn)一步下載更多的部件。等到安裝完成,就可以進(jìn)行 .NET Core RC1程序的開發(fā)。

下面讓我們進(jìn)一步升級(jí)到 RC1 Update 1這個(gè)升級(jí)版本:

  • 打開 Visual Studio Command Prompt。

  • 執(zhí)行”dnvm upgrade”命令。

  • 再執(zhí)行”dnvm list”命令。

  • 如果一切正常,那么這時(shí)候輸出應(yīng)該是這樣的,

    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,并且創(chuàng)建一個(gè)類型是 Class Library (Package) 的新工程(Visual Studio 2015 Update 1似乎把這個(gè)工程類型改名了,研究中)。這種工程的文件后綴是.xproj。這種工程的編譯結(jié)果會(huì)是一個(gè) NuGet 包。

    在往里面加入新東西之前,我們先來(lái)研究一下 project.json 文件。

    需要注意的是 project.json 是全新的管理依賴項(xiàng)的方式,它既代替了原來(lái)管理 NuGet 包的 packages.config,也替代了原來(lái) .csproj 工程文件中管理引用的部分。

    一個(gè)范例是 #SNMP Library 現(xiàn)在使用的 project.json 文件,

    https://github.com/lextm/sharpsnmplib/blob/netcore5/SharpSnmpLib/project.json

    從中我們可以看到,既有用來(lái)描述 NuGet 包的各種元數(shù)據(jù)信息,也包含依賴項(xiàng)。

    其中比較主要的部分是它指明了兩個(gè)平臺(tái)別名(moniker),一個(gè)是 .NET Framework 4.5.1(net451),另一個(gè)是 .NET Platform Standard 5.4(dotnet5.4)。

    前者有一個(gè)基本的引用列表,所以不太需要指明具體庫(kù)的應(yīng)用,但是比較特殊的是 System.Runtime.Serialization,所以它是唯一需要寫明的一個(gè)引用。

    而后者怎是一個(gè)新的別名,用來(lái)標(biāo)識(shí)一個(gè)包含完整 API 清單的 .NET 平臺(tái)。凡是支持這個(gè)平臺(tái)標(biāo)準(zhǔn)5.4版本的 CLR 實(shí)現(xiàn)(不限 .NET Framework,Mono 或者 Xamarin),都可以使用我們編譯之后的 NuGet 包。關(guān)于平臺(tái)標(biāo)準(zhǔn)的細(xì)節(jié)可以閱讀下面的文檔,

    https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md

    不過(guò)它已經(jīng)更新 RC2 的版本,所以版本號(hào)已經(jīng)改為從1.0計(jì)算了。

    面向平臺(tái)標(biāo)準(zhǔn)開發(fā)的一大困擾就是所有的引用都需要手工指明。而這些引用也最后來(lái)自于對(duì)應(yīng)的 NuGet 包。那么怎么尋找這些包和它們的對(duì)應(yīng)版本呢?

    簡(jiǎn)單來(lái)說(shuō),步驟就是將要遷移的項(xiàng)目代碼手工拷貝到新工程里,然后編譯。凡是找不到的類型,我們使用微軟臨時(shí)發(fā)布的一個(gè)查詢網(wǎng)站

    http://packagesearch.azurewebsites.net

    來(lái)查詢包含它的 NuGet 包和版本。這是一個(gè)有點(diǎn)費(fèi)時(shí)間的過(guò)程,因?yàn)?/p>

    • 有些類型是 RC1不存在的,而且可能也不會(huì)出現(xiàn)在 RC2等后續(xù)版本。于是需要換變通的方式。

    • 有些類型在后續(xù)版本中會(huì)有,那么需要等待。

    • 有些類型僅僅出現(xiàn)在桌面版本的 .NET Framework 中于是需要條件編譯。

    因?yàn)閮H僅作為一個(gè)測(cè)試,所以我在遷移 #SNMP Library 過(guò)程中就刪去了很多代碼。另外由于 Socket 類型的同步方法都被移除,我也不得不將很多 #SNMP Library 的代碼改寫為 async/await 方式。等微軟正式發(fā)布 RC2,我會(huì)考慮再遷移一部分代碼過(guò)去。

    到此,只要編譯通過(guò),那么初步的遷移工作也就結(jié)束了。


    寫在最后

    還有其他值得注意之處:

    • 和 project.json 對(duì)應(yīng),Visual Studio 會(huì)維護(hù)一個(gè) project.lock.json 文件。這個(gè)文件詳細(xì)記錄了依賴項(xiàng)展開的情況,了解它的結(jié)構(gòu)有利于調(diào)試一些依賴項(xiàng)問(wèn)題。但是不要將它簽入到版本控制。

    • .xproj 工程不像 .csproj 那樣需要明確指示工程包含的源文件,而是默認(rèn)將同一文件夾下面所有源文件引入。因此有可能遷移過(guò)程中需要調(diào)整下工程文件的組織。

    • 暫時(shí)沒(méi)有特別方便的單元測(cè)試集成。后面應(yīng)該會(huì)有。

    • dotnet5.x 是個(gè)臨時(shí)的別名,后面都會(huì)改成 netstandard1.x。

    上面僅僅談到了遷移過(guò)程中最為重要的步驟。一些工具,如 dnvm 由于 RC2 起會(huì)被 dotnet 工具取代,所以都沒(méi)有詳細(xì)介紹。現(xiàn)在這個(gè)階段,還是淺嘗輒止比較經(jīng)濟(jì)實(shí)惠。

    敬請(qǐng)關(guān)注后續(xù)文章。


    相關(guān)文章

    • ASP.NET Core 1.0 入門——Application Startup

    • ASP.NET Core 1.0 入門——了解一個(gè)空項(xiàng)目

    • ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1)

    • .NET Core 1.0、ASP.NET Core 1.0和EF Core 1.0簡(jiǎn)介

    • 云服務(wù)器下ASP.NET Core 1.0環(huán)境搭建(包含mono與coreclr)

    • 使用VS Code開發(fā)ASP.NET Core 應(yīng)用程序

    • dotnet run是如何啟動(dòng)asp.net core站點(diǎn)的

    • ASP.NET Core提供模塊化Middleware組件

    • “dotnet restore"和"dotnet run"都做了些什么?

    • 探秘 dotnet run 如何運(yùn)行 .NET Core 應(yīng)用程序

    • .NET Portability Analyzer 已開源

    • .NET跨平臺(tái)之旅:corehost 是如何加載 coreclr 的

    • ASP.NET Core 行軍記 -----拔營(yíng)啟程

    原文地址:https://blog.lextudio.com/2016/03/how-to-port-snmp-library-to-net-core-zh/


    .NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注

    贊賞

    人贊賞

    總結(jié)

    以上是生活随笔為你收集整理的如何迁移#SNMP到.NET Core平台的一些体会的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。