.Net Core 跨平臺:一個簡單程序的多平臺(windows、Linux、osx)發佈

.Net Core 跨平臺:一個簡單程序的多平臺(windows、Linux、osx)發佈

 

 

.Net Core 3.0 已於2019年9月23日發佈了,包含了一些新特性,具體參見Announcing .NET Core 3.0git

.NET Core是一個跨平臺,高性能,開放源代碼框架,用於構建現代的,基於雲的,Internet鏈接的應用程序框架,其具備一下優勢和特色:github

 

跨平臺:.NET Framework應用程序僅在Windows平臺上運行,而.NET Core應用程序能夠在Windows平臺上開發並跨Windows,macOS或Linux等不一樣平臺運行。 ASP.NET 4.x應用程序只能託管在IIS上,而ASP.NET Core應用程序能夠託管在IIS,Apache,Docker或您本身的進程中的自託管中。 從開發的角度來看,可使用Visual Studio或Visual Studio Code來構建.NET Core應用程序。開發者可使用第三方編輯器,例如Sublime。編程

 

爲MVC和Web API統一編程模型:經過ASP.NET Core,咱們使用相同的統一編程模型來建立MVC樣式的Web應用程序和ASP.NET Web API。 在這兩種狀況下,咱們建立的Controller都從相同的Controller基類繼承,並返回IActionResult。 顧名思義,IActionResult是一個接口,它具備多種實現。 ViewResult和JsonResult只是實現IActionResult接口的內置結果類型的兩個示例。 所以,對於Web API,控制器返回JsonResult,對於MVC風格的Web應用程序,控制器返回ViewResult。 他們的本質是同樣的,控制器返回的ViewResult能夠認爲是Content-Type不一樣而已。MVC和Web API的一些命名空間也合併了。windows

內置依賴注入:.NET Core內置依賴注入。.NET Core 跨平臺只是一個目的之一,其框架重寫了,後續你會發現不少組件、第三方庫的使用都是經過依賴注入的。官方教程實例也基本是依賴注入貫穿全文。安全

易於測試:經過內置的依賴項注入和用於建立Web應用程序和Web API的統一編程模型,能夠輕鬆進行ASP.NET Core應用程序的單元測試。app

開源:.NET Core是徹底開源的,而且由.NET團隊與廣大的開源開發者社區合做積極開發。 所以,隨着ASP.NET核心背後的廣大社區正在提出改進它並幫助修復錯誤和問題的方法,它不斷髮展。 這意味着咱們擁有更安全,質量更高的軟件。Github地址:https://github.com/dotnet/core框架

模塊化HTTP請求管道:ASP.NET Core經過中間件組件提供模塊化。 在ASP.NET Core中,咱們使用中間件組件來組成請求和響應管道。 它包括一組豐富的內置中間件組件。 咱們還能夠編寫咱們本身的自定義中間件組件。 編輯器

 

下面來以一個簡單的Hello World應用程序發佈到windows、Linux、osx三個平臺做爲實例。模塊化

開發環境能夠選擇windows或者osx,爲了演示在沒有安裝.net core環境的osx下運行.net core應用程序,osx我先不安裝visual studio.性能

Windows 環境使用Visual Studio 2019 ,下載地址https://visualstudio.microsoft.com/zh-hans/

OSX 環境使用Visual Studio for Mac,下載地址:https://visualstudio.microsoft.com/zh-hans/vs/mac/

 

新建控制檯應用(.NET Core),以下圖所示:

 

 

 

 

項目模板自動生成一個Hello World控制檯程序,爲了演示多平臺,將代碼稍做修改:

 

 

 

在解決方案的項目上右鍵菜單選擇發佈:

 

 

 

 

 

 

 

 

配置說明:

部署模式分爲獨立部署和框架依賴,獨立部署能夠在目標平臺沒有安裝.netcore環境下運行;框架依賴須要在目標平臺安裝.netcore運行環境,並且要考慮版本問題。

目標運行時即發佈平臺,win-x8六、win-x6四、win-arm、Linux -8六、Linux-x6四、osx-x64等

這裏要分別發佈三個平臺,分別創建三個目標平臺對應的配置:

 

 

 

 

 

 

 

編輯HelloConsoleApp.csproj工程文件:

<Project Sdk="Microsoft.NET.Sdk">

 

  <PropertyGroup>

    <OutputType>Exe</OutputType>

    <TargetFramework>netcoreapp3.0</TargetFramework>

    <PublishTrimmed>true</PublishTrimmed>

    <PublishReadyToRun>false</PublishReadyToRun>

    <PublishSingleFile>true</PublishSingleFile>

    <RuntimeIdentifier>win-x64</RuntimeIdentifier>

  </PropertyGroup>

 

</Project>

 

選中對應的配置文件,依次發佈,發佈目錄以下

 

 

 

 

先看Windows的

 

 

 

能夠看到,發佈後一個單獨的可執行文件,25.8M !

遙想N年前,不少人就想:

  1. 如何把.net程序打包到沒有安裝.net運行環境的Windows運行?
  2. 如何把依賴的一堆dll打包成一個可執行文件?

如今,這些問題通通已經解決,不但如此,還能同一份代碼發佈到Linux、OSX等其它OS運行!

 

上圖,Window下:

 

 

 

 

Linux 發佈目錄也是一個能夠獨立運行的可執行程序:

 

 

 

 

將其放到Linux系統運行:

 

 

 

 

 

輸出系統版本爲Unix 4.15.0.29

 

 

Osx 環境下:

 

 

 

 

運行:

 

 

 

 

 

 

Osx 上面並無安裝.netcore

 

 

 

 

目標平臺無需安裝.netcore運行環境。

至此,一個簡單的.netcore跨平臺程序發佈示例完成。

相關文章
相關標籤/搜索