*.runtimeconfig.jsonやら*.deps.jsonやら外部のDLLやexeを使用していた場合はリリース対象のexeファイルと同階層に配置されます。
あまりにごちゃごちゃしてると目的のexeを探すのが大変なのでいっそのこと1つにまとめてしまおうという話です。
Visual Studioを使用してリリースファイルを1つのexeファイルにまとめる その2でもできます。
環境
- Visual Studio 2022 v17.3.0
- .NET 6.0
- Windows10 Pro
設定手順
サンプルプロジェクトとしてJsonSchema.Netを参照したものを用意しました。
Releaseでビルドした際の構成は以下のようになっています。
System.Text.Json.dll JetBrains.Annotations.dll Json.More.dll JsonPointer.Net.dll JsonSchema.Net.dll onefile.deps.json onefile.dll onefile.exe onefile.pdb onefile.runtimeconfig.json
.csproj編集
それでは設定していきます。
プロジェクトをダブルクリックし、XXX.csprojを開きます。
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> <ItemGroup> <PackageReference Include="JsonSchema.Net" Version="3.2.0" /> </ItemGroup> </Project>
PropertyGroupに以下を追加してください。
RuntimeIdentifierに設定する値はwin-x64、win10-x64など実行環境に合わせて指定していきます。
詳細はhttps://docs.microsoft.com/ja-jp/dotnet/core/rid-catalogを参照してください。
<PublishSingleFile>true</PublishSingleFile> <SelfContained>true</SelfContained> <RuntimeIdentifier>win-x64</RuntimeIdentifier> <PublishReadyToRun>true</PublishReadyToRun>
リリースファイル作成準備
次にプロジェクトを右クリック -> 発行 をクリックします。
ダイアログが出てくるのでフォルダー -> 次へ -> フォルダーを選択します。ダイアログが出てこなければ画面上に出ている発行プロファイルの追加をクリックしてください。
保存先を指定し完了をクリックします。
以上で準備が整いました。
リリースファイル生成
準備が完了すると画像のように発行ボタンが表示されるのでこちらをクリックして完了です。
指定したリリースフォルダを確認すると実行に必要なdll等を全て盛り込んだファイルであるため多少サイズが大きくなりますが目的のexeファイルとpdbが出来上がります。
onefile.exe onefile.pdb
除外設定
exe内に埋め込みたくないファイルがある場合は <ExcludeFromSingleFile>true</ExcludeFromSingleFile>で設定できます。
<ItemGroup> <Content Update="Test.dll"> <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> <ExcludeFromSingleFile>true</ExcludeFromSingleFile> </Content> </ItemGroup>
コメント