ホームページ >バックエンド開発 >C#.Net チュートリアル >.NET Core が新しいプロジェクト システム (.csproj) で実行可能ファイルを公開する方法
.NET工具链在最新的Preview3版本中,引入了新的MSBuild项目系统,项目文件又回归了.csproj的XML文件来管理,项目文件、包引用、程序集引用、.NET Core工具集、发布内容定义等内容。本文主要将主要讨论如何在新的项目系统中(.csproj)发布可执行文件。我们都知道在之前的版本中,项目文件是通过project.json文件来管理项目和包引用的,那么通过删除 dependencies->Microsoft.NETCore.App-> "type": "platform" 子节点,并定义runtimes节点,来发布可执行文件 。
所为可执行文件就是在目标机器上,不需要安装.NET Core SDK或任何Runtime,就可以执行的文件。比如在Windows上可以生成 coreapp.exe的可执行文件,而在Linux中可以使用 ./coreapp 来执行。
原理上这种可执行文件,就是通过一个C++应用程序为载体(宿主),加载CoreCLR,通过CoreCLR再加载任意的程序集,对这里有兴趣的朋友也可以到Github上去看一下CoreCLR中ClrHost的部分。
在新的.csproj项目文件中,我们要想发布一个可执行文件,就在手动创建名为
<propertygroup> <runtimeidentifiers>win10-x64;osx.10.11-x64</runtimeidentifiers> </propertygroup>
通过如下命令发布各平台的目标可执行文件:
dotnet build -r win10-x64 dotnet build -r osx.10.11-x64
上面的命令可以生成带有符号文件和调试信息的DEBUG版本,你的应用程序将生成在.\bin\Debug\netcoreapp1.0\目录下,如果想生成生产环境的最终版本请通过如下命令获取:
dotnet publish -c release -r win10-x64 dotnet publish -c release -r osx.10.11-x64
通过上述命令生成的Release版本目标执行文件将生成在 .\bin\release\netcoreapp1.0\
我们来看一个新的csproj文件的完整定义:
<project> <import></import> <propertygroup> <outputtype>Exe</outputtype> <targetframework>netcoreapp1.0</targetframework> <versionprefix>1.0.0</versionprefix> <debugtype>Portable</debugtype> <runtimeidentifiers>win10-x64;osx.10.11-x64</runtimeidentifiers> </propertygroup> <itemgroup> <compile></compile> <embeddedresource></embeddedresource> </itemgroup> <itemgroup> <packagereference> <version>1.0.1</version> </packagereference> <packagereference> <version>9.0.1</version> </packagereference> <packagereference> <version>1.0.0-alpha-20161102-2</version> <privateassets>All</privateassets> </packagereference> </itemgroup> <import></import> </project>
RID是Runtime Identifier的缩写,它用于定义目标操作系统标示。RID会不断的更新,我们可以在CoreFx项目中找到RID定义,常用的RID有如下:
Windows RIDs
Windows 7 / Windows Server 2008 R2
win7-x64
win7-x86
Windows 8 / Windows Server 2012
win8-x64
win8-x86
win8-arm
Windows 8.1 / Windows Server 2012 R2
win81-x64
win81-x86
win81-arm
Windows 10 / Windows Server 2016
win10-x64
win10-x86
win10-arm
win10-arm64
Linux RIDs
Red Hat Enterprise Linux
rhel.7.0-x64
rhel.7.1-x64
rhel.7.2-x64
Ubuntu
ubuntu.14.04-x64
ubuntu.14.10-x64
ubuntu.15.04-x64
ubuntu.15.10-x64
ubuntu.16.04-x64
ubuntu.16.04-x64
ubuntu.16.10-x64
CentOS
centos.7-x64
Debian
debian.8-x64
Fedora
fedora.23-x64
fedora.24-x64
OpenSUSE
opensuse.13.2-x64
opensuse.42.1-x64
Oracle Linux
ol.7-x64
ol.7.0-x64
ol.7.1-x64
ol.7.2-x64
Currently supported Ubuntu derivatives
linuxmint.17-x64
linuxmint.17.1-x64
linuxmint.17.2-x64
linuxmint.17.3-x64
linuxmint.18-x64
OS X RIDs
osx.10.10-x64
osx.10.11-x64
osx.10.12-x64
ubuntu.16.10-x64
CentOS
Debian |
debian.8-x64
|
Fedora |
|
fedora.24-x64 opensuse.13.2-x64
|
|
linuxmint.17.2-x64
|
Windows Ubuntu
|
Visual Studio 2015 用 Visual C++ 再頒布可能パッケージ
以上が.NET Core が新しいプロジェクト システム (.csproj) で実行可能ファイルを公開する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。