NET Core,Ubuntu運行

來源:互聯網
上載者:User

標籤:

NET Core,如何開發跨平台的應用並部署至Ubuntu運行

之前寫了一篇博文宣布Rabbit Rpc跨平台了“擁抱.NET Core,跨平台的輕量級RPC:Rabbit.Rpc”,在過程中嘗試了如何編寫支援跨平台的類庫與應用程式,也嘗試了在linux上的運行,今天特此將過程中的一些經曆記錄下來,方便後人。

安裝開發環境

本人用Windows環境就直接用Visual Studio了,當然也可以用記事本或Visual Code。

.NET Core開發要求

  • Visual Studio 2015 Update3
  • .NET Core 1.0 for Visual Studio(DotNetCore.1.0.0-SDK.Preview2)

    具體的移步:https://www.microsoft.com/net/core#windows

    編碼新建立一個.NET Core控制台項目

    項目模板說明
  • Class Library(基礎類庫)
  • Console Application(控制台應用程式)
  • ASP.NET Core(Web應用程式)

    上方的.NET Framework4.5 大家再熟悉不過了,但是.NET Core其實與.NET Framework無關,相信後續的SDK版本會解決這個問題。現在只能選擇.NET Framework 4.5或以上才可以看到3個類型的項目。

    鍵入一些代碼

    運行

    談一談發布

    .NET Core分為兩種應用類型,分別是:

  • Portable applications(便攜應用)
  • Self-contained application(自宿主應用)Portable applications(便攜應用)

    這個類似於現有的.NET Framework方式,需要目標主機安裝有.NET Core的運行時,對比現在的情況就是需要機器安裝.NET Framework。

    對於這種方式我想大家都很熟悉了,微軟有放出不同平台(作業系統)上的.NET Core運行時。

    .NET Core運行時與.NET Framework是同層級但不是同一個。

    優點
  • 易移植
  • 發布的內容較小缺點
  • 需要安裝.NET Core運行時Self-contained application(自宿主應用)

    噹噹當,這種方式很酷,也是我最喜歡的一種發布方式。

    這種方式會將運行時與程式共同打包,也就意味著目標機器不需要裝.NET Core運行時。

    優點
  • 部署簡單缺點
  • 發布內容較大備忘

    這種方式不是之前所說的.NET Native,也不會有效能提升,因為我們的程式還是IL,還是需要CLR中的JIT進行編譯,只是將Core CLR打包進去了而已,可以理解為提供了綠色版的.NET Core運行時,然後提供了一個對應平台的可執行程式來進行載入調用。

    參考資料:https://docs.microsoft.com/zh-cn/dotnet/articles/core/app-types

    發布應用使用(CLI)命令列發布發布:Portable applications(便攜應用)

    運行“CMD”(命令提示字元)

    定位到項目路徑

    使用發布命令

    這樣就發布完成了。

    ps:如果發布失敗請先執行dotnet restore或使用Visual Studio進行產生。

    dotnet publish有許多可選項,格式如下:

    -f, --framework [FID]

    指定運行架構,如:netcoreapp1.0,net45,net451等,具體由“project.json”中的“framework”節點指定。

    -r, --runtime [RID]

    指定應用程式運行時(自宿主應用),這種方式將會把指定平台的Core CLR打包進去。

    格式:[os].[version]-[arch]

    例子:win7-x64、win7-x86、win10-x64、win10-x86、rhel.7.0-x64、ubuntu.14.04-x64、osx.10.10-x64等。

    參考資料:https://docs.microsoft.com/zh-cn/dotnet/articles/core/rid-catalog

    -b, --build-base-path [DIR]

    指定輸出路徑根。

    -o, –output

    指定具體的輸出路徑,會與“-b”命令配合。

    預設路徑:

  • Portable applications:./bin/[configuration]/[framework]//app
  • Self-contained application:./bin/[configuration]/[framework]/[runtime]/app

    --version-suffix [VERSION_SUFFIX]

    替換在“project.json”檔案中依賴包版本號碼中的*。

    -c, --configuration [Debug|Release]

    發布配置,這個大家都懂,預設為:Debug。

    參考資料:https://docs.microsoft.com/zh-cn/dotnet/articles/core/tools/dotnet-publish

    使用Visual Studio發布

    右鍵發布,選擇性參數請參考上面的。

    發布:Self-contained application(自宿主應用)修改“project.json”

    刪除“Microsoft.NETCore.App”節點中"type" : "platform"的配置

    增加“runtime”節點中對應的平台

    修改後的“project.json”如下:

    在使用CLI或Visual Studio進行發布

    CLI命令:

    dotnet restore

    dotnet publish –r [win10-x64 | ubuntu.16.04-x64] –c release

    參考資料:https://docs.microsoft.com/zh-cn/dotnet/articles/core/deploying/index#self-contained-applications

    運行Portable applications(便攜應用)

    cd到發布目錄,然後運行以下命令

    dotnet ConsoleApp1.dll

    Self-contained application(自宿主應用)

    直接開啟可執行檔

    Windows

    下直接雙擊“ConsoleApp1.exe”你懂的。。

    Ubuntu安裝Ubuntu

    目前官方給出的支援版本有

  • Ubuntu 14.04 LTS(長時間支援版本)
  • Ubuntu 15.04 LTS(長時間支援版本) 這個我沒有發布成功
  • Ubuntu 16.04 LTS(長時間支援版本)

    作者採用的是16.04,鏡像檔案在1.4gb左右。

    :http://releases.ubuntu.com/16.04/ubuntu-16.04-desktop-amd64.iso

    作者使用系統內建的Hyper-V作為虛擬機器軟體。

    安裝的具體流程不貼了,網上很多,說個注意點。

    使用Hyper-V安裝Ubuntu時最後一步會卡住很久,大家強制重啟即可(最好等個幾分鐘在強制重啟),當然也可以等,很久很久之後他會好的。

    (大致意思是:請刪除安裝媒介,按斷行符號)然而我早已經分離虛擬光碟機了。。

    拷貝發布內容

    方式不定,我用的是虛擬光碟機鏡像。

    運行自宿主應用

    設定執行程式的執行許可權

    使用命令列執行

    是不是很酷,沒有安裝任何東西,即可直接運行。

    運行攜帶型應用

    首先得安裝.NET Core運行環境

    參考資料:https://www.microsoft.com/net/core#ubuntu

    安裝完成之後,輸入“dotnet --info”來測試是否安裝成功。

    OK,接下來我們來運行。

    定位到目錄,運行“dotnet ConsoleApp1.dll”

    ps:記住不要用 “dotnet run”這個命令,不然會提示找不到“project.json”,輸入之後會執行一段東西因為一些原因沒有截到圖。

    接下來?

    接下來我會分享一樣在.NET Core如何編寫支援多種平台的類庫與應用程式。

    比如寫一個類庫同時支援4.5,和.NETStandard 1.6等。

NET Core,Ubuntu運行

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.