EXEを出力するための.NETCoreコンソールアプリケーションをビルドします



Build Net Core Console Application Output An Exe



解決:

デバッグの目的で、DLLファイルを使用できます。あなたはそれを使用して実行することができますdotnetConsoleApp2.dll。 EXEファイルを生成する場合は、自己完結型のアプリケーションを生成する必要があります。

自己完結型アプリケーション(WindowsではEXE)を生成するには、ターゲットランタイム(ターゲットとするオペレーティングシステムに固有)を指定する必要があります。



Pre-.NET Core2.0のみ :最初に、ターゲットランタイムのランタイム識別子を.csprojファイル(サポートされているRIDのリスト)に追加します。

win10-x64; ubuntu.16.10-x64

.NET Core 2.0以降、上記の手順は不要になりました



次に、アプリケーションを公開するときに目的のランタイムを設定します。

dotnet publish-cリリース-rwin10-x64 dotnet publish-cリリース-rubuntu.16.10-x64 

.NET 5のアップデート!

以下は、.NET5が正式にリリースされた2020年11月以降に適用されます。



(ハウツーだけでなく、以下の簡単な用語のセクションを参照してください)

ハウツー(CLI)

前提条件

  • .net 5SDKの最新バージョンをダウンロードします。リンク

ステップ

  1. ターミナル(例:bash、コマンドプロンプト、powershell)を開き、.csprojファイルと同じディレクトリに次のコマンドを入力します。
dotnet publish --output '{any directory}' --runtime {runtime} --configuration Debug -p:PublishSingleFile = true -p:PublishTrimmed = false --self-contained true

例:

dotnet publish --output'c:/ temp / myapp '--runtime win-x64 --configuration Release -p:PublishSingleFile = true -p:PublishTrimmed = true --self-contained true

ハウツー(GUI)

前提条件

  • 2020年11月より前に読んだ場合:最新バージョンのVisual Studio Preview *
  • NOV2020 +を読んでいる場合:最新バージョンのVisual Studio *

*上記の2つの場合、最新の.net5SDKがPCに自動的にインストールされます。

ステップ

  1. [プロジェクト]を右クリックし、[公開]をクリックします
    ここに画像の説明を入力してください

  2. [スタート]をクリックして[フォルダターゲット]を選択し、[次へ]をクリックして[フォルダ]を選択します ここに画像の説明を入力してください

  3. 任意のフォルダの場所を入力し、[完了]をクリックします

  4. [編集]をクリックします
    ここに画像の説明を入力してください

  5. ターゲットランタイムを選択し、[単一ファイルの作成]にチェックマークを付けて保存します。* ここに画像の説明を入力してください

  6. [公開]をクリックします

  7. アプリを公開した場所でターミナルを開き、.exeを実行します。例: ここに画像の説明を入力してください

少しの用語

ターゲットランタイム
RIDのリストを参照してください

展開モード

  • フレームワーク依存とは、小さな.exeファイルが生成されたが、アプリは.Net5がホストマシンにインストールされていることを前提としています。
  • 自己完結型とは、.exeにフレームワークが含まれているため、より大きな.exeファイルを意味しますが、.Net 5をプリインストールする必要がなく、どのマシンでも.exeを実行できます。注:自己完結型を使用する場合、.EXEだけでなく、追加の依存関係(.dll)が生成されます

ReadyToRunコンパイルを有効にする
TLDR:.Net5のAhead of Timeコンパイル(AOT)に相当します。ネイティブコードにプリコンパイルされているため、アプリは通常、起動が速くなります。多くの要因に応じて、アプリのパフォーマンスが向上します(またはそうではありません!)。詳細はこちら

未使用のアセンブリをトリミングする
trueに設定すると、dotnetは非常にスリムで小さな.exeを生成し、必要なものだけを含めます。ここでは注意してください。例:アプリでリフレクションを使用する場合、このフラグをtrueに設定したくない可能性があります。

Microsoft Doc


前の投稿

更新(2019年10月31日)

GUIを介してこれを実行したい人のために:

  • Visual Studio2019を使用しています
  • .NET Core 3.0がインストールされています(Visual Studio 2019の最新バージョンに含まれています)
  • を生成したい 単一ファイル

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ノート

このような小さなアプリケーションのファイルサイズが大きいことに注意してください

'PublishTrimmed'プロパティを追加できます。アプリケーションには、アプリケーションで使用されるコンポーネントのみが含まれます。 注意 :リフレクションを使用している場合はこれを行わないでください

再度公開する


以下は、出力ディレクトリに、を生成します。

  • すべてのパッケージリファレンス
  • 出力アセンブリ
  • ブートストラップexe

ただし、すべての.NETCoreランタイムアセンブリが含まれているわけではありません。

$(SolutionDir) p​​ackages 

ここでサンプルにまとめました: https://github.com/SimonCropp/NetCoreConsole