linux .net跨平台,.Net Core 跨平台:一个简单程序的多平台(windows、Linux、osx)发布...

本文介绍.NETCore3.0的跨平台特性,演示如何将一个简单的.NETCore控制台应用程序发布到Windows、Linux和macOS平台。.NETCore提供统一编程模型、内置依赖注入等优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

.Net Core 跨平台:一个简单程序的多平台(windows、Linux、osx)发布

.Net Core 3.0 已于2019年9月23日发布了,包含了一些新特性,具体参见Announcing .NET Core 3.0

.NET Core是一个跨平台,高性能,开放源代码框架,用于构建现代的,基于云的,Internet连接的应用程序框架,其具有一下优点和特点:

跨平台:.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的一些命名空间也合并了。

内置依赖注入:.NET Core内置依赖注入。.NET Core 跨平台只是一个目的之一,其框架重写了,后续你会发现很多组件、第三方库的使用都是通过依赖注入的。官方教程实例也基本是依赖注入贯穿全文。

易于测试:通过内置的依赖项注入和用于创建Web应用程序和Web API的统一编程模型,可以轻松进行ASP.NET Core应用程序的单元测试。

开源:.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.

新建控制台应用(.NET Core),如下图所示:

7df7d80db0cb9da403f258334318fa21.png

项目模板自动生成一个Hello World控制台程序,为了演示多平台,将代码稍作修改:

2e25c3d01a1b3517729059ef84b95b5d.png

在解决方案的项目上右键菜单选择发布:

cf8f1798fcfe992349a5486f1a535d79.png

72c63d25cb2179f1f42d7ff6d96d0062.png

配置说明:

部署模式分为独立部署和框架依赖,独立部署可以在目标平台没有安装.netcore环境下运行;框架依赖需要在目标平台安装.netcore运行环境,而且要考虑版本问题。

目标运行时即发布平台,win-x86、win-x64、win-arm、Linux -86、Linux-x64、osx-x64等

这里要分别发布三个平台,分别建立三个目标平台对应的配置:

da2f6be86e8f445cb15e60da39d5e603.png

55c7cf191fce79abd986e35e7feba278.png

编辑HelloConsoleApp.csproj工程文件:

Exe

netcoreapp3.0

true

false

true

win-x64

选中对应的配置文件,依次发布,发布目录如下

a7ea7dcdf5de779fa4088c91ab3081b8.png

先看Windows的

2bb10bd34bbf1931c8a99701b990a5f1.png

可以看到,发布后一个单独的可执行文件,25.8M !

遥想N年前,很多人就想:

如何把.net程序打包到没有安装.net运行环境的Windows运行?

如何把依赖的一堆dll打包成一个可执行文件?

现在,这些问题统统已经解决,不但如此,还能同一份代码发布到Linux、OSX等其它OS运行!

上图,Window下:

2d3b8026df6267e7e474968e6b8430dd.png

Linux 发布目录也是一个可以独立运行的可执行程序:

47ee3bd8efc8c2b94cbc3c3e892c44ab.png

将其放到Linux系统运行:

17ec6d87fd5e47a0e4c96595b9770365.png

输出系统版本为Unix 4.15.0.29

Osx 环境下:

7dc26547f39a474c88355a6d4acbda13.png

运行:

b4b30caf7cdd17691775df3b323b1e10.png

Osx 上面并没有安装.netcore

290122931394bda63619e802e820ea8c.png

目标平台无需安装.netcore运行环境。

至此,一个简单的.netcore跨平台程序发布示例完成。

b739ec46bb5c46d9c0aa4ce35ba1ea56.png

关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。

本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。

[.Net Core 跨平台:一个简单程序的多平台(windows、Linux、osx)发布]http://www.zyiz.net/tech/detail-92146.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值