1. ホーム
  2. .net-core

Visual Studio 2017を使用して.NET CoreアプリケーションをEXEファイルとしてコンパイルする

2023-07-12 06:53:56

質問内容

Visual Studio 2017 で .NET Core アプリケーション (v1.1) を作成しました。それをコンパイルすると、ビルドされたプロジェクトに期待されるEXEファイルではなく、DLLファイルが生成されます。私は、チェックした csproj ファイルを確認し、出力タイプに exe に設定されていることを確認しましたが、ダメでした。

Visual Studio 2017 はなぜ DLL ファイルが生成されたままなのですか?

どこかに忘れているクイック設定があるはずなのですが・・・。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp1.1</TargetFramework>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <PlatformTarget>AnyCPU</PlatformTarget>
  </PropertyGroup>

  <ItemGroup>
    <ProjectReference Include="..\Core.EF.SqlServer\Core.EF.SqlServer.csproj" />
  </ItemGroup>

</Project>

どのように解決するのですか?

2019年にアップデートします。

.NET Core 3.0+ プロジェクトには、デフォルトでビルドするプラットフォーム用の実行可能ファイルが含まれるようになりました。これは単なるシム実行可能ファイルであり、メイン ロジックはまだ .dll ファイルの中にあります。

しかし、.NET Core 3.0ではシングルファイルデプロイメントも導入されているため、デプロイ時に

dotnet publish -r win-x64 -p:PublishSingleFile=True --self-contained false

は、すべての依存関係を含む単一の .exe ファイルを作成します。あなたは --self-containedtrue に変更し、.NET Core Runtime も含めることで、ターゲット マシンに .NET Core をグローバルにインストールする必要がなくなりました。

オリジナル

.NET Coreアプリケーションは、本来は .dll のファイルです。 OutputType に設定する Exe は実行可能であることを意味し、出力が実行可能であることを保証するために必要なすべてのことを行います(エントリーポイントは Main() メソッドを使用します。 .runtimeconfig.json ファイル)。出来上がったDLLファイルは、これを用いて実行することを想定しています。

dotnet yourapp.dll

この DLL ファイルは、.NET Core ランタイムがサポートするすべてのプラットフォーム (Windows、Linux、macOS) で機能します。これは、quot;portable" または "framework dependent" 配置と呼ばれます。

もし、本当に .exe ファイルが必要な場合は、自己完結型のデプロイメントを検討してください。これは、.NET Core ランタイムの独自のコピーを含む出力と yourapp.exe ファイルを含む出力を作成しますが、公開アプリケーションのサイズが大きくなり、ランタイムの新バージョンがリリースされたときに更新する必要があります。

また、結果として得られるアプリケーションは、公開されたオペレーティングシステム上でのみ動作します。

を参照してください。 .NET Coreアプリケーションのデプロイメント をクリックすると、デプロイメントオプションの詳細とその設定方法が表示されます。