Jadual Kandungan
一、前言
二、生成可执行
三、RID
Rumah pembangunan bahagian belakang Tutorial C#.Net .NET Core如何在新的项目系统中(.csproj)发布可执行文件

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

Apr 23, 2017 pm 04:28 PM
fail boleh laku

一、前言

  .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>
Salin selepas log masuk


  通过如下命令发布各平台的目标可执行文件:


dotnet build -r win10-x64
dotnet build -r osx.10.11-x64
Salin selepas log masuk


  上面的命令可以生成带有符号文件和调试信息的DEBUG版本,你的应用程序将生成在.\bin\Debug\netcoreapp1.0\< runtime_identifier>目录下,如果想生成生产环境的最终版本请通过如下命令获取:


dotnet publish -c release -r win10-x64
dotnet publish -c release -r osx.10.11-x64
Salin selepas log masuk


  通过上述命令生成的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>
Salin selepas log masuk

复制代码

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

 




Atas ialah kandungan terperinci .NET Core如何在新的项目系统中(.csproj)发布可执行文件. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah fail boleh laku linux? Apakah fail boleh laku linux? Mar 09, 2023 am 10:00 AM

Di Linux, fail boleh laku bermakna fail itu boleh dijalankan dan fail itu mempunyai kebenaran "x"; Terdapat dua cara untuk menjalankan fail: 1. Gunakan penterjemah untuk menjalankan fail secara terus 2. Gunakan "./" untuk menjalankan fail, dan sintaksnya ialah "./ nama fail".

Pengisytiharan Kemerdekaan untuk Aplikasi Python: PyInstaller's Road to Freedom Pengisytiharan Kemerdekaan untuk Aplikasi Python: PyInstaller's Road to Freedom Feb 20, 2024 am 09:27 AM

PyInstaller: Kebebasan aplikasi Python PyInstaller ialah alat pembungkusan python sumber terbuka yang membungkus aplikasi Python dan kebergantungannya ke dalam fail boleh laku bebas. Proses ini menghapuskan pergantungan pada penterjemah Python sambil membenarkan aplikasi berjalan pada pelbagai platform, termasuk Windows, MacOS dan Linux. Proses Pembungkusan Proses pembungkusan PyInstaller adalah agak mudah dan melibatkan langkah-langkah berikut: pipinstallpyinstallerpyinstaller--onefile--windowedmain.py--onefile option mencipta satu

Evolusi muktamad aplikasi Python: PyInstaller muncul dari kepompong dan menjadi rama-rama Evolusi muktamad aplikasi Python: PyInstaller muncul dari kepompong dan menjadi rama-rama Feb 19, 2024 pm 03:27 PM

PyInstaller ialah alat revolusioner yang memperkasakan aplikasi Python melebihi bentuk skrip asalnya. Dengan menyusun kod Python ke dalam fail boleh laku kendiri, PyInstaller membuka kunci bidang pengedaran, penggunaan dan penyelenggaraan kod baharu. Daripada skrip tunggal kepada aplikasi berkuasa Pada masa lalu, skrip Python hanya wujud dalam persekitaran Python tertentu. Mengedarkan skrip sedemikian memerlukan pengguna memasang Python dan perpustakaan yang diperlukan, yang merupakan proses yang memakan masa dan menyusahkan. PyInstaller memperkenalkan konsep pembungkusan, menggabungkan kod Python dengan semua kebergantungan yang diperlukan ke dalam satu fail boleh laku. Seni Pembungkusan Kod Kerja PyInstaller

Perintah mana dalam Linux Perintah mana dalam Linux Mar 21, 2024 am 09:50 AM

Tajuk: Petikan daripada LinuxWhichCommand: Tutorial praktikal dengan contoh menggunakan arahan "mana" pada Linux dan cara mencari pelbagai boleh laku dan skrip daripada pembolehubah PATH. Pautan kekal: linux-which-command Kategori: Perintah Linux Dalam panduan ini, kita akan mempelajari tentang arahan "Which" dalam Linux. Prasyarat: Untuk melaksanakan langkah yang ditunjukkan dalam panduan ini, anda memerlukan komponen berikut: Sistem Linux yang dikonfigurasikan dengan betul. Untuk tujuan ujian, disyorkan untuk menggunakan LinuxVM Mempunyai pemahaman asas tentang antara muka baris arahan yang mana sistem Linux Moden datang dengan berbilang alat terbina dalam yang boleh digunakan untuk pelbagai tugas seperti pentadbiran sistem.

Pesta berpakaian untuk kod Python: butler bergaya PyInstaller Pesta berpakaian untuk kod Python: butler bergaya PyInstaller Feb 19, 2024 pm 06:39 PM

Dalam dunia pembangunan perisian, kod pembungkusan ke dalam fail boleh laku adalah langkah penting. Untuk pembangun python, PyInstaller menonjol sebagai butler bergaya mereka yang mengubah skrip Python menjadi aplikasi kendiri dan mudah digunakan. Daya tarikan PyInstaller PyInstaller ialah alat berkuasa yang boleh membungkus kod Python dan kebergantungannya ke dalam satu fail boleh laku. Ia menghapuskan tugas yang membosankan untuk memasang penterjemah Python dan perpustakaan bergantung pada mesin sasaran, menjadikan penggunaan aplikasi menjadi mudah. Membungkus aplikasi menggunakan PyInstaller Untuk membungkus aplikasi menggunakan PyInstaller, ikut perkara di bawah

Cara menggunakan PyCharm untuk membungkus kod ke dalam fail boleh laku: Penjelasan terperinci tentang teknik pembungkusan projek Cara menggunakan PyCharm untuk membungkus kod ke dalam fail boleh laku: Penjelasan terperinci tentang teknik pembungkusan projek Feb 02, 2024 pm 09:20 PM

Kemahiran pembungkusan projek PyCharm: mengajar anda cara membungkus kod ke dalam fail boleh laku Pengenalan: Dalam proses pembangunan perisian, kod pembungkusan ke dalam fail boleh laku merupakan langkah yang sangat penting. Ia membolehkan aplikasi kami berjalan pada mesin yang berbeza dengan lebih mudah, sambil juga melindungi kod kami daripada pengubahsuaian. Artikel ini akan memperkenalkan cara menggunakan PyCharm untuk membungkus kod Python ke dalam fail boleh laku dan memberikan contoh kod khusus. Teks: 1. Pasang PyInstallerPyInstaller

Petua pengaturcaraan PyCharm: pakej program Python ke dalam fail boleh laku bebas Petua pengaturcaraan PyCharm: pakej program Python ke dalam fail boleh laku bebas Feb 21, 2024 am 08:54 AM

Dengan pembangunan berterusan pengaturcaraan Python, pembangun sering menghadapi soalan: Bagaimana untuk membungkus program Python mereka ke dalam fail boleh laku bebas untuk perkongsian dan penggunaan yang mudah? Ini melibatkan kemahiran penting dalam PyCharm: pembungkusan program Python. Artikel ini akan berkongsi beberapa petua pengaturcaraan PyCharm dan mengajar anda cara menggunakan PyCharm untuk membungkus program Python ke dalam fail boleh laku bebas. Persediaan Sebelum memulakan, pastikan anda telah memasang PyCharm dan pihak ketiga yang diperlukan

Transformasi Python yang tidak kelihatan: sihir hitam PyInstaller Transformasi Python yang tidak kelihatan: sihir hitam PyInstaller Feb 19, 2024 pm 12:48 PM

Python telah menjadi salah satu bahasa pengaturcaraan yang paling popular di kalangan pembangun kerana perpustakaannya yang luas dan sintaks yang mudah digunakan. Walau bagaimanapun, perkara boleh menjadi rumit apabila aplikasi Python perlu digunakan sebagai boleh laku kendiri. Di sinilah PyInstaller masuk, alat yang berkuasa dan percuma dalam Python yang menukar skrip anda kepada program kendiri dan boleh laku. Memahami PyInstallerPyInstaller ialah alat merentas platform, yang bermaksud ia boleh dijalankan pada sistem Windows, MacOS dan Linux. Ia berfungsi dengan membungkus aplikasi Python dan kebergantungannya ke dalam satu fail boleh laku. fail boleh laku ini

See all articles