目录
一、前言
二、生成可执行
三、RID
首页 后端开发 C#.Net教程 .NET Core如何在新的项目系统中(.csproj)发布可执行文件

.NET Core如何在新的项目系统中(.csproj)发布可执行文件

Apr 23, 2017 pm 04:28 PM
可执行文件

一、前言

  .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项目文件中,我们要想发布一个可执行文件,就在手动创建名为的节点,在这个节点下面,添加RuntimeIdentifiers也就是以前的RID定义,RID是描述系统平台的统一命名标示。例如我想要发布的可执行文件的目标系统平台为Win10Mac os 10.11.* 定义如下:


 <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\目录下,并且每一个目标平台目录下都有生成的可执行文件、发布项目的程序集、.NET Core依赖或必要的文件来保证生成程序的独立可执行。

  我们来看一个新的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

 
  • Visual C++ Redistributable 

  • for Visual Studio 2015

 
  • libunwind8

  • libunwind8-dev

  • gettext

  • libicu-dev

  • liblttng-ust-dev

  • libcurl4-openssl-dev

  • libssl-dev

  • uuid-dev

  • unzip

 
  • deltarpm

  • epel-release

  • unzip

  • libunwind

  • gettext

  • libcurl-devel

  • openssl-devel

  • zlib

  • libicu-devel

 

 

 

  • libssl version 1.0.1

 




以上是.NET Core如何在新的项目系统中(.csproj)发布可执行文件的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Python 应用的独立宣言:PyInstaller 的自由之路 Python 应用的独立宣言:PyInstaller 的自由之路 Feb 20, 2024 am 09:27 AM

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

linux 执行文件是什么 linux 执行文件是什么 Mar 09, 2023 am 10:00 AM

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

Python 应用的终极进化:PyInstaller 的破茧成蝶 Python 应用的终极进化:PyInstaller 的破茧成蝶 Feb 19, 2024 pm 03:27 PM

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

Linux的哪个命令 Linux的哪个命令 Mar 21, 2024 am 09:50 AM

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

Python 代码的盛装派对:PyInstaller 的时尚管家 Python 代码的盛装派对:PyInstaller 的时尚管家 Feb 19, 2024 pm 06:39 PM

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

如何使用PyCharm将代码打包成可执行文件:项目打包技巧详解 如何使用PyCharm将代码打包成可执行文件:项目打包技巧详解 Feb 02, 2024 pm 09:20 PM

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

PyCharm编程秘籍:打包Python程序为独立可执行文件 PyCharm编程秘籍:打包Python程序为独立可执行文件 Feb 21, 2024 am 08:54 AM

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

Python 应用的超级变变变:PyInstaller 的魔法棒 Python 应用的超级变变变:PyInstaller 的魔法棒 Feb 19, 2024 pm 04:39 PM

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

See all articles