.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跨平台程序发布示例完成。

相关文章
相关标签/搜索