.NET Core が新しいプロジェクト システム (.csproj) で実行可能ファイルを公開する方法

PHPz
リリース: 2017-04-23 16:28:24
オリジナル
2843 人が閲覧しました

一、前言

  .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\目录下,如果想生成生产环境的最终版本请通过如下命令获取:


dotnet publish -c release -r win10-x64
dotnet publish -c release -r osx.10.11-x64
ログイン後にコピー


  通过上述命令生成的Release版本目标执行文件将生成在 .\bin\release\netcoreapp1.0\目录下,并且每一个目标平台目录下都有生成的可执行文件、发布项目的程序集、.NET Core依赖或必要的文件来保证生成程序的独立可执行。

  我们来看一个新的csproj文件的完整定义:

.NET Core が新しいプロジェクト システム (.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>
ログイン後にコピー

.NET Core が新しいプロジェクト システム (.csproj) で実行可能ファイルを公開する方法

三、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-x64ubuntu.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

    centos.7-x64fedora.23-x64
    Debian
      debian.8-x64

      Fedora

          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

            • 現在サポートされている Ubuntu派生物
              • 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 Studio 2015 用 Visual C++ 再頒布可能パッケージ

          🎜🎜 🎜🎜🎜 🎜🎜🎜libunwind8🎜🎜🎜🎜libunwind8-dev🎜🎜🎜🎜gettext🎜🎜🎜🎜libicu-dev🎜🎜🎜🎜liblttng-ust-dev🎜 🎜🎜🎜libcurl4-openssl-dev🎜🎜🎜🎜libssl- dev🎜🎜🎜🎜uuid-dev🎜🎜🎜🎜unzip🎜🎜🎜🎜🎜 🎜🎜🎜deltarrpm🎜🎜🎜🎜epel-release🎜🎜🎜🎜unzip🎜 🎜🎜🎜libunwind🎜🎜🎜🎜gettext🎜🎜🎜🎜libcurl- devel🎜🎜🎜🎜openssl-devel🎜🎜🎜🎜zlib🎜🎜🎜🎜libicu-devel🎜🎜🎜🎜🎜🎜 🎜🎜 🎜🎜 🎜🎜🎜 🎜libssl バージョン 1.0.1🎜🎜🎜🎜 🎜🎜🎜🎜🎜🎜🎜 🎜🎜🎜🎜🎜

          以上が.NET Core が新しいプロジェクト システム (.csproj) で実行可能ファイルを公開する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

          関連ラベル:
          ソース:php.cn
          このウェブサイトの声明
          この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
          人気のチュートリアル
          詳細>
          最新のダウンロード
          詳細>
          ウェブエフェクト
          公式サイト
          サイト素材
          フロントエンドテンプレート