一个做任务的网站,房产证,响应式网站seo,微商刚起步怎么找客源一、前言 .NET工具链在最新的Preview3版本中#xff0c;引入了新的MSBuild项目系统#xff0c;项目文件又回归了.csproj的XML文件来管理#xff0c;项目文件、包引用、程序集引用、.NET Core工具集、发布内容定义等内容。本文主要将主要讨论#xff0c;如何在新的项目系统中… 一、前言 .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的节点在这个节点下面添加RuntimeIdentifiers也就是以前的RID定义RID是描述系统平台的统一命名标示。例如我想要发布的可执行文件的目标系统平台为Win10和Mac os 10.11.* 定义如下 PropertyGroup RuntimeIdentifierswin10-x64;osx.10.11-x64/RuntimeIdentifiers /PropertyGroup 通过如下命令发布各平台的目标可执行文件 dotnet build -r win10-x64dotnet build -r osx.10.11-x64 上面的命令可以生成带有符号文件和调试信息的DEBUG版本你的应用程序将生成在 .\bin\Debug\netcoreapp1.0\ runtime_identifier目录下如果想生成生产环境的最终版本请通过如下命令获取 dotnet publish -c release -r win10-x64dotnet publish -c release -r osx.10.11-x64 通过上述命令生成的Release版本目标执行文件将生成在 .\bin\release\netcoreapp1.0\runtime_identifier目录下并且每一个目标平台目录下都有生成的可执行文件、发布项目的程序集、.NET Core依赖或必要的文件等来保证生成程序的独立可执行。 我们来看一个新的csproj文件的完整定义 Project ToolsVersion15.0 xmlnshttp://schemas.microsoft.com/developer/msbuild/2003 Import Project$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props / PropertyGroup OutputTypeExe/OutputType TargetFrameworknetcoreapp1.0/TargetFramework VersionPrefix1.0.0/VersionPrefix DebugTypePortable/DebugType RuntimeIdentifierswin10-x64;osx.10.11-x64/RuntimeIdentifiers /PropertyGroup ItemGroup Compile Include**\*.cs / EmbeddedResource Include**\*.resx / /ItemGroup ItemGroup PackageReference IncludeMicrosoft.NETCore.App Version1.0.1/Version /PackageReference PackageReference IncludeNewtonsoft.Json Version9.0.1/Version /PackageReference PackageReference IncludeMicrosoft.NET.Sdk Version1.0.0-alpha-20161102-2/Version PrivateAssetsAll/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 R2win7-x64win7-x86 Windows 8 / Windows Server 2012win8-x64win8-x86win8-arm Windows 8.1 / Windows Server 2012 R2win81-x64win81-x86win81-arm Windows 10 / Windows Server 2016win10-x64win10-x86win10-armwin10-arm64 Linux RIDs Red Hat Enterprise Linuxrhel.7.0-x64rhel.7.1-x64rhel.7.2-x64 Ubuntuubuntu.14.04-x64ubuntu.14.10-x64ubuntu.15.04-x64ubuntu.15.10-x64ubuntu.16.04-x64ubuntu.16.10-x64 CentOScentos.7-x64 Debiandebian.8-x64 Fedorafedora.23-x64fedora.24-x64 OpenSUSEopensuse.13.2-x64opensuse.42.1-x64 Oracle Linuxol.7-x64ol.7.0-x64ol.7.1-x64ol.7.2-x64 Currently supported Ubuntu derivativeslinuxmint.17-x64linuxmint.17.1-x64linuxmint.17.2-x64linuxmint.17.3-x64linuxmint.18-x64 OS X RIDs osx.10.10-x64osx.10.11-x64osx.10.12-x64 四、系统依赖 发布出来的目标平台可执行文件也是需要依赖系统特性的接下来我们来看下系统的需要组件有哪些 WindowsUbuntuCentOSOS X Visual C Redistributablefor Visual Studio 2015 libunwind8libunwind8-devgettextlibicu-devliblttng-ust-devlibcurl4-openssl-devlibssl-devuuid-devunzip deltarpmepel-releaseunziplibunwindgettextlibcurl-developenssl-develzliblibicu-devel libssl version 1.0.1 原文地址http://www.cnblogs.com/maxzhang1985/p/6136886.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注