.NET Core 跨平台发布(dotnet publish) ,无需安装.NET Core SDK,就可以运行。

前面讲解了.NET Core 的VSCode 开发。现在来讲讲发布(dotnet publish)。

.NET Core and ASP.NET Core 1.0 RC2 runtime and libraries 在五月中旬发布。

.NET Core and ASP.NET Core 1.0 RTM ( release ) runtime and libraries  六月底发布。

https://blogs.msdn.microsoft.com/dotnet/2016/05/06/net-core-rc2-improvements-schedule-and-roadmap/

跨平台发布

简单新建一个项目。

mkdir dotnethello
cd dotnethello
dotnet new

dotnet new 之后 修改project.json 如下:

" version " : " 1.0.0-* " , " buildOptions " : { " emitEntryPoint " : true " dependencies " : { " Microsoft.NETCore.App " : { " type " : " platform " , // 去掉 " version " : " 1.0.0-rc2-* " " frameworks " : { " netcoreapp1.0 " : { " imports " : " dnxcore50 " " runtimes " :{ // 加入runtime " win7-x64 " : { }, " win7-x86 " : { }, " osx.10.10-x64 " : { }, " osx.10.11-x64 " : { }, " ubuntu.14.04-x64 " :{ }

添加NuGet.Config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="AspNetCI" value="https://www.myget.org/F/aspnetcirelease/api/v3/index.json" />
    <add key="NuGet.org" value="https://api.nuget.org/v3/index.json" />
  </packageSources>
</configuration>

dotnet restore

还原以后就可以编译发布了。

Windows:

这里默认输入 dotnet publish 会发布 win7-x64 。

我们定位到 win7-x64\publish 文件夹,可以直接执行 dotnethello.exe ,无需安装.netcore sdk 。

Ubuntu:

我们要发布到linux ubuntu 直接指定 runtime 。

dotnet publish -r ubuntu.14.04-x64

把发布文件夹(ubuntu.14.04-x64/publish)拷贝到ubuntu上。

直接就可以执行,不需要安装.netcore sdk,只需.netcore依赖的几个包:

https://github.com/dotnet/cli/blob/rel/1.0.0/Documentation/cli-prerequisites.md

https://github.com/dotnet/core/blob/master/Documentation/prereqs.md

Ubuntu distributions require the following libraries installed:

  • libunwind8
  • libunwind8-dev
  • gettext
  • libicu-dev
  • liblttng-ust-dev
  • libcurl4-openssl-dev
  • libssl-dev
  • uuid-dev
  • unzip
  • 设置文件夹下的执行文件dotnethello 设置好 权限 以后直接 ./dotnethello

    CentOS:

    CentOS distributions require the following libraries installed:

  • deltarpm
  • epel-release
  • unzip
  • libunwind
  • gettext
  • libcurl-devel
  • openssl-devel
  • libicu-devel
  • Mac OS:

    同理mac os 一样,指定osx runtime。

    dotnet publish -r osx.10.10-x64

    将 osx.10.10-x64/publish 拷贝到mac os 。

    OS X 需要安装libssl

    OS X requires the following libraries and versions installed:

  • libssl 1.1
  • 执行dotnethello

    这样我们无需安装.NET Core SDK 就可以运行.NET Core 应用程序。实现了.NET Core 跨平台。

    如果你觉得本文对你有帮助,请点击“ 推荐 ”,谢谢。