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+プロジェクトには、デフォルトで構築するプラットフォームの実行可能ファイルが含まれるようになります。これは単なるshim実行可能ファイルであり、メインロジックはまだ.dll
ファイル内にあります。
ただし、.NET Core 3.0では単一ファイルの導入も導入されているため、
dotnet publish -r win-x64 -p:PublishSingleFile=True --self-contained false
すべての依存関係を含む単一の.exeファイルを作成します。に変更--self-contained
しtrue
て、.NET Coreランタイムも含めるようにできます。これにより、.NET Coreをターゲットマシンにグローバルにインストールする必要がなくなります。
元の
.NET Coreアプリケーションは.dll
ファイルであることが想定されています。この場合のにOutputType
設定するとExe
、「実行可能」を意味し、出力を確実に実行可能にするために必要なすべてのことを実行します(Main()
メソッド、.runtimeconfig.json
ファイルからのエントリポイント)。結果のDLLファイルは、以下を使用して実行することを意図しています。
dotnet yourapp.dll
このDLLファイルは、.NET Coreランタイム(Windows、Linux、およびmacOS)でサポートされるすべてのプラットフォームで機能します。これは、「ポータブル」または「フレームワークに依存する」配備と呼ばれます。
本当に.exe
ファイルが必要な場合は、自己完結型の展開を検討してください。これにより、.NET Coreランタイムの独自のコピーとyourapp.exe
ファイルを含む出力が作成されますが、公開アプリケーションのサイズが大きくなるため、ランタイムの新しいバージョンがリリースされたときに更新する必要があります。
また、作成されたアプリケーションは、公開されているオペレーティングシステムでのみ動作します。
参照してください.NETのコアアプリケーションの展開展開オプションとその設定方法の詳細については。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加