.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\< runtime_identifier>目录下,如果想生成生产环境的最终版本请通过如下命令获取:
dotnet publish -c release -r win10-x64 dotnet publish -c release -r osx.10.11-x64
通过上述命令生成的Release版本目标执行文件将生成在 .\bin\release\netcoreapp1.0\
我们来看一个新的csproj文件的完整定义:
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" /> <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 Include="**\*.cs" /> <EmbeddedResource Include="**\*.resx" /> </ItemGroup> <ItemGroup> <PackageReference Include="Microsoft.NETCore.App"> <Version>1.0.1</Version> </PackageReference> <PackageReference Include="Newtonsoft.Json"> <Version>9.0.1</Version> </PackageReference> <PackageReference Include="Microsoft.NET.Sdk"> <Version>1.0.0-alpha-20161102-2</Version> <PrivateAssets>All</PrivateAssets> </PackageReference> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> </Project>
三、RID
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.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
四、系统依赖
发布出来的目标平台可执行文件,也是需要依赖系统特性的,接下来我们来看下系统的需要组件有哪些:
Windows | Ubuntu | CentOS | OS X |
|
|
|
|
以上是.NET Core如何在新的项目系统中(.csproj)发布可执行文件的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

PyInstaller:Python应用的独立化PyInstaller是一款开源的python打包工具,它将Python应用程序及其依赖项打包为一个独立的可执行文件。这一过程消除了对Python解释器的依赖,同时允许应用程序在各种平台上运行,包括windows、MacOS和linux。打包过程PyInstaller的打包过程相对简单,涉及以下步骤:pipinstallpyinstallerpyinstaller--onefile--windowedmain.py--onefile选项创建一个单一

在linux中,执行文件是指的是该文件可以被运行,文件有“x”权限;执行文件可以是一个代码文件(脚本文件),也可以是一个二进制文件。一个文件运行有两种方式:1、用解释器直接去运行文件;2、利用“./”运行文件,语法“./ 文件名”。

PyInstaller是一个革命性的工具,它赋予python应用程序以超越其原始脚本形态的能力。通过将Python代码编译成独立的可执行文件,PyInstaller解锁了代码分发、部署和维护的新境界。从单一脚本到强大应用程序以往,Python脚本只存在于特定的Python环境中。分发这样的脚本需要用户安装Python和必要的库,这是一个费时且繁琐的过程。PyInstaller引入了打包的概念,将Python代码与所有必需的依赖项组合成一个单独的可执行文件。代码打包的艺术PyInstaller的工

标题:LinuxWhichCommand摘录:关于在Linux上使用”which”命令以及如何从PATH变量查找各种可执行文件和脚本的实用教程以及示例。固定链接:linux-哪个-命令Category:Linux命令在本指南中,我们将了解Linux中的“Which”命令。先决条件:要执行本指南中演示的步骤,您需要以下组件:正确配置的Linux系统。出于测试目的,建议使用LinuxVM对命令行界面有基本了解which命令现代Linux系统都内置了多个工具,可用于各种任务,如系统管理、

在软件开发的世界中,将代码打包成可执行文件是一个至关重要的步骤。对于python开发人员来说,PyInstaller脱颖而出,成为他们的时尚管家,将Python脚本转化为独立且易于部署的应用程序。PyInstaller的魅力PyInstaller是一款强大的工具,可以将Python代码及其依赖项打包成单个可执行文件。它消除了在目标计算机上安装Python解释器和依赖库的繁琐任务,使应用程序的部署变得轻而易举。使用PyInstaller打包应用程序要使用PyInstaller打包应用程序,请遵循以

PyCharm项目打包技巧:教你如何将代码打包为可执行文件引言:在软件开发过程中,将代码打包为可执行文件是一个非常重要的步骤。它可以让我们的应用程序更加便捷地在不同的机器上运行,同时也可以保护我们的代码不被修改。本文将介绍如何使用PyCharm将Python代码打包为可执行文件,并提供具体的代码示例。正文:一、安装PyInstallerPyInstaller

随着Python编程的不断发展,开发者们常常面临一个问题:如何将自己的Python程序打包成独立可执行文件,以方便分享和部署?这就涉及到了PyCharm中的一项重要技能:打包Python程序。本文将分享一些PyCharm编程秘籍,教你如何使用PyCharm来打包Python程序为独立可执行文件。准备工作在开始之前,确保你已经安装好PyCharm以及需要的第三

python是一种功能强大的编程语言,广泛应用于各种领域。然而,当您需要将Python应用程序部署到其他计算机时,将面临脚本不可执行的问题。为了解决这一难题,PyInstaller应运而生。这是一款出色的工具,可以将Python脚本转换为独立的可执行文件,让您的应用程序能够在任何计算机上运行,无需安装Python解释器。PyInstaller的神奇转换PyInstaller的工作原理简单而高效。它使用Python代码、所需的库和所有依赖项创建一个可执行文件。该可执行文件包含应用程序的所有必需组件
