13,009
回編集
493行目: | 493行目: | ||
== C#プロジェクトのリリース == | == C#プロジェクトのリリース == | ||
==== 単一のTFM ==== | |||
C#のcsproj拡張子のファイルが存在するディレクトリにおいて、以下のコマンドを実行する。<br> | C#のcsproj拡張子のファイルが存在するディレクトリにおいて、以下のコマンドを実行する。<br> | ||
dotnet publish -c:Release -r:<ターゲットプラットフォーム> -p:PublishReadyToRun=<trueまたはfalse> -p:PublishSingleFile=<trueまたはfalse> --self-contained:<trueまたはfalse> | dotnet publish -c:Release -r:<ターゲットプラットフォーム> -p:PublishReadyToRun=<trueまたはfalse> -p:PublishSingleFile=<trueまたはfalse> --self-contained:<trueまたはfalse> | ||
596行目: | 597行目: | ||
] | ] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | |||
==== 複数のTFM ==== | |||
複数のTFMを指定するプロジェクトをpulishする場合、標準のpublishコマンドでは失敗するが、<br> | |||
マルチターゲットを実行するカスタムターゲットを作成することができる。<br> | |||
<br> | |||
これを行うには、ソリューションディレクトリ下にDirectory.Build.propsファイル、または、Directory.Build.targetsファイルを作成する。<br> | |||
<syntaxhighlight lang="xml"> | |||
<Project> | |||
<Target Name="PublishProjectIfFrameworkSet" | |||
DependsOnTargets="Publish" | |||
Condition=" '$(TargetFramework)' != '' " /> | |||
<Target Name="PublishProjectForAllFrameworksIfFrameworkUnset" Condition=" '$(TargetFramework)' == '' "> | |||
<ItemGroup> | |||
<_PublishFramework Include="$(TargetFrameworks)" /> | |||
</ItemGroup> | |||
<MSBuild Projects="$(MSBuildProjectFile)" Targets="Publish" Properties="TargetFramework=%(_PublishFramework.Identity)" /> | |||
</Target> | |||
<Target Name="PublishAll" | |||
DependsOnTargets="PublishProjectIfFrameworkSet;PublishProjectForAllFrameworksIfFrameworkUnset" /> | |||
</Project> | |||
</syntaxhighlight> | |||
<br> | |||
ソリューションディレクトリ下で以下に示すコマンドを実行することにより、定義された全ての.NETをビルドすることができる。<br> | |||
dotnet msbuild /t:PublishAll /p:Configuration=Release | |||
<br><br> | <br><br> | ||