NET Core,Ubuntu运行

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等。

时间: 2024-11-05 18:46:39

NET Core,Ubuntu运行的相关文章

拥抱.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 V

asp.net core 在Ubuntu 运行

环境: Ubuntu 16.04 dotnet-dev-1.0.0-preview2-003121 Visual Studio 2015 update 3 Ubuntu 安装.net core 参考:https://www.microsoft.com/net/core#ubuntu 1.添加源 sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet/ xenial main" &

ubuntu运行级别,设置单用户模式

redhat的runlevel级别定义如下: 0:关机.不能将系统缺省运行级别设置为0,否则无法启动. 1:单用户模式,只允许root用户对系统进行维护. 2:多用户模式,但不能使用NFS(相当于Windows下的网上邻居) 3:字符界面的多用户模式. 4:未定义. 5:图形界面的多用户模式. 6:重启.不能将系统缺省运行级别设置为0,否则会一直重启. ubuntu的runlevel级别(默认为2)定义如下: 0 – Halt,关机模式 1 – Single,单用户模式 2 - Full mul

centos下搭建.NET Core项目运行环境

centos下搭建.NET Core项目运行环境:https://github.com/Somnus/somnus.github.io/blob/master/doc/code/centos%E4%B8%8B%E6%90%AD%E5%BB%BA.NET%20Core%E9%A1%B9%E7%9B%AE%E8%BF%90%E8%A1%8C%E7%8E%AF%E5%A2%83.md#%E7%99%BB%E5%BD%95%E6%95%B0%E6%8D%AE%E5%BA%93 原文地址:https://

【ASP.NET Core】运行原理(1):创建WebHost

本系列将分析ASP.NET Core运行原理 [ASP.NET Core]运行原理[1]:创建WebHost [ASP.NET Core]运行原理[2]:启动WebHost [ASP.NET Core]运行原理[3]:认证 本节将分析WebHost.CreateDefaultBuilder(args).UseStartup<Startup>().Build();代码. 源代码参考.NET Core 2.0.0 WebHostBuilder WebHost Kestrel 问题概要 Hostin

Ubuntu运行DOTNET Core MVC(基础,非部署项目)

一. 配置 Ubuntu18.04.3 LTS DOTNET Core3.0 SDK 1.更新 sudo apt-get update 二.安装DOTNET Core SDK 1.首先注册微软密钥以及所需依赖 wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-micro

Visual Studio 2017 发布的项目在 Ubuntu 运行出错 *.deps.json was not found

原文网址:https://blog.csdn.net/lihongzhai/article/details/79039160 今天遇到了很奇怪的现象,在Windows上发布的asp.net core app部署到linux上就不好用了.提示如下错误: Error: An assembly specified in the application dependencies manifest (Calculate24Web.deps.json) was not found: package: 'Mi

ubuntu 运行级别initlevel

Linux 系统任何时候都运行在一个指定的运行级上,并且不同的运行级的程序和服务都不同,所要完成的工作和要达到的目的都不同,系统可以在这些运行级之间进行切换,以完成不同的工作.Ubuntu 的系统运行级别:0        系统停机状态1        单用户或系统维护状态2~5 多用户状态6        重新启动 查看当前运行级别:runlevelrunlevel 显示上次的运行级别和当前的运行级别,"N"表示没有上次的运行级别 切换运行级别: int [0123456Ss]即在

关于Ubuntu运行级别、开机启动脚本的说明

目录简介 1.1介绍Ubuntu下面的自启动脚本目录 1.2 Linux操作系统运行级别的概念 1.3关于操作系统自启脚本的启动顺序 1.4    Linux操作系统运行级别的概念 1.5 自启和关闭自启服务 1.6 对于init [number]命令 Content: 1.1 介绍Ubuntu操作系统关于自启动脚本的几个目录 其中rc0.d~rc.6.d文件夹下分别对应的是操作系统0-6级运行的状态下需要执行的脚本.此外还有rcS.d文件夹和rc.local文件,而在这些文件夹下的文件,都是软