阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

拥抱.NET Core,如何开发跨平台的应用并部署至Ubuntu运行

416次阅读
没有评论

共计 3243 个字符,预计需要花费 9 分钟才能阅读完成。

阅读目录

  • 安装开发环境
  • 编码
  • 谈一谈发布
  • 发布应用
  • 运行
  • 接下来?

之前写了一篇博文宣布 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 控制台项目

    拥抱.NET Core,如何开发跨平台的应用并部署至 Ubuntu 运行

    项目模板说明

  • Class Library(基础类库)
  • Console Application(控制台应用程序)
  • ASP.NET Core(Web 应用程序)

    上方的.NET Framework4.5 大家再熟悉不过了,但是.NET Core 其实与.NET Framework 无关,相信后续的 SDK 版本会解决这个问题。现在只能选择.NET Framework 4.5 或以上才可以看到 3 个类型的项目。

    键入一些代码

    拥抱.NET Core,如何开发跨平台的应用并部署至 Ubuntu 运行

    运行

    拥抱.NET Core,如何开发跨平台的应用并部署至 Ubuntu 运行

    回到目录

    谈一谈发布

    .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”(命令提示符)

    定位到项目路径

    拥抱.NET Core,如何开发跨平台的应用并部署至 Ubuntu 运行

    使用发布命令

    拥抱.NET Core,如何开发跨平台的应用并部署至 Ubuntu 运行

    这样就发布完成了。

    ps: 如果发布失败请先执行 dotnet restore 或使用 Visual Studio 进行生成。

    dotnet publish 有许多可选项,格式如下:

    拥抱.NET Core,如何开发跨平台的应用并部署至 Ubuntu 运行

    -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 发布

    右键发布,可选参数请参考上面的。

    拥抱.NET Core,如何开发跨平台的应用并部署至 Ubuntu 运行

    发布:Self-contained application(自宿主应用)

    修改“project.json”

    删除“Microsoft.NETCore.App”节点中 ”type” : “platform” 的配置

    增加“runtime”节点中对应的平台

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

    拥抱.NET Core,如何开发跨平台的应用并部署至 Ubuntu 运行

    在使用 CLI 或 Visual Studio 进行发布

    CLI 命令:

    dotnet restore

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

    拥抱.NET Core,如何开发跨平台的应用并部署至 Ubuntu 运行

    拥抱.NET Core,如何开发跨平台的应用并部署至 Ubuntu 运行

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

    运行

    Portable applications(便携应用)

    cd 到发布目录,然后运行以下命令

    dotnet ConsoleApp1.dll

    拥抱.NET Core,如何开发跨平台的应用并部署至 Ubuntu 运行

    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,如何开发跨平台的应用并部署至 Ubuntu 运行

    (大致意思是:请删除安装媒介,按回车)然而我早已经分离虚拟光驱了。。

    拷贝发布内容

    方式不定,我用的是虚拟光驱镜像。

    拥抱.NET Core,如何开发跨平台的应用并部署至 Ubuntu 运行

    拥抱.NET Core,如何开发跨平台的应用并部署至 Ubuntu 运行

    运行自宿主应用

    设置执行程序的执行权限

    拥抱.NET Core,如何开发跨平台的应用并部署至 Ubuntu 运行

    使用命令行执行

    拥抱.NET Core,如何开发跨平台的应用并部署至 Ubuntu 运行

    是不是很酷,没有安装任何东西,即可直接运行。

    运行便携式应用

    首先得安装.NET Core 运行环境

    参考资料:https://www.microsoft.com/net/core#ubuntu

    安装完成之后,输入“dotnet –info”来测试是否安装成功。

    拥抱.NET Core,如何开发跨平台的应用并部署至 Ubuntu 运行

    OK, 接下来我们来运行。

    定位到目录,运行“dotnet ConsoleApp1.dll”

    拥抱.NET Core,如何开发跨平台的应用并部署至 Ubuntu 运行

    ps: 记住不要用“dotnet run”这个命令,不然会提示找不到“project.json”,输入之后会执行一段东西因为一些原因没有截到图。

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-11/137009.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3243字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19353
评论数
4
阅读量
8198288
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛 NAS-7:手把手教你免费内网穿透 -Cloudflare tunnel 前言 大家好,我是星...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

  300 元就能买到的 ” 小钢炮 ”?惠普 7L 四盘位小主机解析 最近...
如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的 Nano Banana Pro?附赠邪修的用法 前言 大家好,我是星哥,今天来介绍谷歌的 ...
我用AI做了一个1978年至2019年中国大陆企业注册的查询网站

我用AI做了一个1978年至2019年中国大陆企业注册的查询网站

我用 AI 做了一个 1978 年至 2019 年中国大陆企业注册的查询网站 最近星哥在 GitHub 上偶然...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
云服务器部署OpenClaw:轻量应用服务器+钉钉和QQ机器人

云服务器部署OpenClaw:轻量应用服务器+钉钉和QQ机器人

  云服务器部署 OpenClaw:轻量应用服务器 + 钉钉和 QQ 机器人 一、前言 最近开源圈爆...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...