.NETCore在新的項(xiàng)目系統(tǒng)中發(fā)布可執(zhí)行文件的方法

這篇文章給大家分享的是有關(guān).NET Core在新的項(xiàng)目系統(tǒng)中發(fā)布可執(zhí)行文件的方法的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過來看看吧。

創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括恒山網(wǎng)站建設(shè)、恒山網(wǎng)站制作、恒山網(wǎng)頁制作以及恒山網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,恒山網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到恒山省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

一、前言

.NET工具鏈在最新的Preview3版本中,引入了新的MSBuild項(xiàng)目系統(tǒng),項(xiàng)目文件又回歸了.csproj的XML文件來管理,項(xiàng)目文件、包引用、程序集引用、.NET Core工具集、發(fā)布內(nèi)容定義等內(nèi)容。本文主要將主要討論如何在新的項(xiàng)目系統(tǒng)中(.csproj)發(fā)布可執(zhí)行文件。我們都知道在之前的版本中,項(xiàng)目文件是通過project.json文件來管理項(xiàng)目和包引用的,那么通過刪除 dependencies->Microsoft.NETCore.App-> "type": "platform" 子節(jié)點(diǎn),并定義runtimes節(jié)點(diǎn),來發(fā)布可執(zhí)行文件 。

所為可執(zhí)行文件就是在目標(biāo)機(jī)器上,不需要安裝.NET Core SDK或任何Runtime,就可以執(zhí)行的文件。比如在Windows上可以生成 coreapp.exe的可執(zhí)行文件,而在Linux中可以使用 ./coreapp 來執(zhí)行。

原理上這種可執(zhí)行文件,就是通過一個(gè)C++應(yīng)用程序?yàn)檩d體(宿主),加載CoreCLR,通過CoreCLR再加載任意的程序集,對這里有興趣的朋友也可以到Github上去看一下CoreCLR中ClrHost的部分。

二、生成可執(zhí)行

在新的.csproj項(xiàng)目文件中,我們要想發(fā)布一個(gè)可執(zhí)行文件,就在手動(dòng)創(chuàng)建名為<RuntimeIdentifiers>的節(jié)點(diǎn),在這個(gè)節(jié)點(diǎn)下面,添加RuntimeIdentifiers也就是以前的RID定義,RID是描述系統(tǒng)平臺的統(tǒng)一命名標(biāo)示。例如我想要發(fā)布的可執(zhí)行文件的目標(biāo)系統(tǒng)平臺為Win10Mac os 10.11.*定義如下:

 <PropertyGroup>
      <RuntimeIdentifiers>win10-x64;osx.10.11-x64</RuntimeIdentifiers>
 </PropertyGroup>

通過如下命令發(fā)布各平臺的目標(biāo)可執(zhí)行文件:

dotnet build -r win10-x64
dotnet build -r osx.10.11-x64

上面的命令可以生成帶有符號文件和調(diào)試信息的DEBUG版本,你的應(yīng)用程序?qū)⑸稍?strong>.\bin\Debug\netcoreapp1.0\< runtime_identifier>目錄下,如果想生成生產(chǎn)環(huán)境的最終版本請通過如下命令獲?。?/p>

dotnet publish -c release -r win10-x64
dotnet publish -c release -r osx.10.11-x64

通過上述命令生成的Release版本目標(biāo)執(zhí)行文件將生成在 .\bin\release\netcoreapp1.0\<runtime_identifier>目錄下,并且每一個(gè)目標(biāo)平臺目錄下都有生成的可執(zhí)行文件、發(fā)布項(xiàng)目的程序集、.NET Core依賴或必要的文件等來保證生成程序的獨(dú)立可執(zhí)行。

我們來看一個(gè)新的csproj文件的完整定義:

.NET Core在新的項(xiàng)目系統(tǒng)中發(fā)布可執(zhí)行文件的方法

<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>

.NET Core在新的項(xiàng)目系統(tǒng)中發(fā)布可執(zhí)行文件的方法

三、RID

RID是Runtime Identifier的縮寫,它用于定義目標(biāo)操作系統(tǒng)標(biāo)示。RID會不斷的更新,我們可以在CoreFx項(xiàng)目中找到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

四、系統(tǒng)依賴

發(fā)布出來的目標(biāo)平臺可執(zhí)行文件,也是需要依賴系統(tǒng)特性的,接下來我們來看下系統(tǒng)的需要組件有哪些:

WindowsUbuntuCentOS

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


感謝各位的閱讀!關(guān)于.NET Core在新的項(xiàng)目系統(tǒng)中發(fā)布可執(zhí)行文件的方法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

本文題目:.NETCore在新的項(xiàng)目系統(tǒng)中發(fā)布可執(zhí)行文件的方法
網(wǎng)頁地址:http://bm7419.com/article2/gipeoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站外貿(mào)網(wǎng)站建設(shè)、商城網(wǎng)站、網(wǎng)站策劃、網(wǎng)站排名、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)