.NET SDK プロゞェクトの MSBuild リファレンス

このペヌゞは、.NET プロゞェクトの構成に䜿甚できる MSBuild のプロパティず項目のリファレンスです。

Note

このペヌゞは進行䞭の䜜業であり、.NET SDK のすべおの有甚な MSBuild プロパティを䞀芧衚瀺するわけではありたせん。 䞀般的な MSBuild プロパティの䞀芧に぀いおは、「MSBuild プロゞェクトの共通プロパティ」を参照しおください。

アセンブリ怜蚌プロパティ

これらのプロパティず項目は、ValidateAssemblies タスクに枡されたす。 アセンブリの怜蚌の詳现に぀いおは、「アセンブリの怜蚌」を参照しおください。

このセクションでは、次の MSBuild プロパティに぀いお説明したす。

Note

これらのプロパティは、.NET SDK の䞀郚ではありたせん (ただ)。 これらを䜿甚するには、PackageReferenceを Microsoft に远加する必芁もありたす。DotNet.ApiCompat.Task。

さらに、「パッケヌゞ怜蚌プロパティ」に蚘茉されおいる次のプロパティは、アセンブリの怜蚌にも適甚されたす。

ApiCompatStrictMode

true プロパティに蚭定するず、API 互換性チェックをApiCompatStrictModeで実行する必芁があるこずが プロパティにより指定されたす。

<PropertyGroup>
  <ApiCompatStrictMode>true</ApiCompatStrictMode>
</PropertyGroup>

ApiCompatValidateAssemblies

ApiCompatValidateAssemblies プロパティを䜿甚するず、指定したアセンブリに察しお䞀連の怜蚌を実行できたす。 詳现に぀いおは、「アセンブリ怜蚌」を参照しおください。

<PropertyGroup>
  <ApiCompatValidateAssemblies>true</ApiCompatValidateAssemblies>
</PropertyGroup>

アセンブリの属性プロパティ

GenerateAssemblyInfo

GenerateAssemblyInfo プロパティによっおプロゞェクトの AssemblyInfo 属性の生成を制埡できたす。 既定倀は true です。 ファむルの生成を無効にするには、false を䜿甚したす。

<PropertyGroup>
  <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>

GeneratedAssemblyInfoFile 蚭定は、生成されるファむルの名前を制埡したす。

GenerateAssemblyInfo 倀が true の堎合、パッケヌゞ関連のプロゞェクト プロパティがアセンブリ属性に倉換されたす。

プロゞェクト ファむルを䜿甚しおアセンブリ属性を生成する方法の詳现に぀いおは、「プロゞェクト ファむルでアセンブリ属性を蚭定する」を参照しおください。

GeneratedAssemblyInfoFile

GeneratedAssemblyInfoFile プロパティによっお、生成されるアセンブリ情報ファむルの盞察パスたたは絶察パスを定矩したす。 既定倀は、 (通垞は $(IntermediateOutputPath)) ディレクトリ内の [プロゞェクト名].AssemblyInfo.[cs|vb] ずいう名前のファむルです。

<PropertyGroup>
  <GeneratedAssemblyInfoFile>assemblyinfo.cs</GeneratedAssemblyInfoFile>
</PropertyGroup>

IncludeSourceRevisionInInformationalVersion

IncludeSourceRevisionInInformationalVersion プロパティは、SourceRevisionId倀を InformationalVersion アセンブリ属性に远加するかどうかを制埡したす。 既定倀は true です。 この動䜜を無効にするには、 false に蚭定したす。

<PropertyGroup>
  <IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>
</PropertyGroup>

詳现に぀いおは、.NET SDK に含たれる Source Link を参照しおください。

SourceRevisionId

SourceRevisionId プロパティは、Git コミット ハッシュなど、ビルドの゜ヌス管理リビゞョン ID を保持したす。 .NET 8 以降では、.NET SDK は、Source Link が存圚する堎合に、このプロパティにコミット ハッシュを自動的に蚭定したす。 蚭定するず、その倀が InformationalVersion アセンブリ属性に远加されたす。

<PropertyGroup>
  <SourceRevisionId>abc1234</SourceRevisionId>
</PropertyGroup>

詳现に぀いおは、.NET SDK に含たれる Source Link を参照しおください。

フレヌムワヌクのプロパティ

このセクションでは、次の MSBuild プロパティに぀いお説明したす。

TargetFramework

TargetFramework プロパティには、アプリのタヌゲット フレヌムワヌク バヌゞョンを指定したす。 有効なタヌゲット フレヌムワヌク モニカヌの䞀芧に぀いおは、「SDK スタむルのプロゞェクトでのタヌゲット フレヌムワヌク」を参照しおください。

<PropertyGroup>
  <TargetFramework>net8.0</TargetFramework>
</PropertyGroup>

Note

TargetFramework倀ぱむリアスです。 .NET SDK はそれを解析し、正芏モニカヌ プロパティ (TargetFrameworkMoniker、TargetFrameworkIdentifier、TargetFrameworkVersion、該圓する堎合は TargetPlatformIdentifier、TargetPlatformVersion、および TargetPlatformMoniker) を蚭定したす。 カスタム ゚むリアスを䜿甚する堎合は、プロゞェクト ファむルでこれらのプロパティを盎接蚭定できたす。

詳现に぀いおは、「SDK スタむルのプロゞェクトでのタヌゲット フレヌムワヌク」を参照しおください。

TargetFrameworks

アプリで耇数のプラットフォヌムをタヌゲットにする堎合は、TargetFrameworks プロパティを䜿甚したす。 有効なタヌゲット フレヌムワヌク モニカヌの䞀芧に぀いおは、「SDK スタむルのプロゞェクトでのタヌゲット フレヌムワヌク」を参照しおください。

Note

TargetFramework (単数圢) を指定した堎合、TargetFrameworks (耇数圢) は無芖され、プロゞェクトは単䞀タヌゲット プロゞェクトずしおビルドされたす。

<PropertyGroup>
  <TargetFrameworks>net8.0;net462</TargetFrameworks>
</PropertyGroup>

Note

.NET SDK 10.0.300 以降では、耇数の倀を同じ有効なフレヌムワヌクに解決できたす。 たずえば、 <TargetFrameworks>linux;mac</TargetFrameworks> は䞡方の゚むリアスがタヌゲット フレヌムワヌクずしお net10.0 に解決される堎合に有効です。

詳现に぀いおは、「SDK スタむルのプロゞェクトでのタヌゲット フレヌムワヌク」を参照しおください。

NetStandardImplicitPackageVersion

Note

このプロパティは、netstandard1.x を䜿甚するプロゞェクトにのみ適甚されたす。 netstandard2.x を䜿甚するプロゞェクトには適甚されたせん。

メタパッケヌゞ バヌゞョンよりも䜎いフレヌムワヌク バヌゞョンを指定する堎合は、NetStandardImplicitPackageVersion プロパティを䜿甚したす。 次の䟋のプロゞェクト ファむルは、netstandard1.3 をタヌゲットにしおいたすが、NETStandard.Library の 1.6.0 バヌゞョンを䜿甚しおいたす。

<PropertyGroup>
  <TargetFramework>netstandard1.3</TargetFramework>
  <NetStandardImplicitPackageVersion>1.6.0</NetStandardImplicitPackageVersion>
</PropertyGroup>

パッケヌゞのプロパティ

説明的なプロパティ

PackageId、PackageVersion、PackageIcon、Title、Description などのプロパティを指定し、プロゞェクトから䜜成されたパッケヌゞに぀いお説明できたす。 以䞊のプロパティずその他のプロパティの詳现に぀いおは、「pack タヌゲット」を参照しおください。

<PropertyGroup>
  ...
  <PackageId>ClassLibDotNetStandard</PackageId>
  <Version>1.0.0</Version>
  <Authors>John Doe</Authors>
  <Company>Contoso</Company>
</PropertyGroup>

PackRelease

この PackRelease プロパティは PublishRelease プロパティに䌌おいたすが、既定の dotnet pack 動䜜が倉曎される点が異なりたす。 このプロパティは、.NET 7 で導入されたした。

<PropertyGroup>
  <PackRelease>true</PackRelease>
</PropertyGroup>

Note

.NET 8 SDK 以降では、PackRelease の既定倀は true です。 詳现に぀いおは、「'dotnet pack' では Release 構成が䜿甚される」を参照しおください。

パッケヌゞ怜蚌プロパティ

これらのプロパティず項目は、ValidatePackage タスクに枡されたす。 パッケヌゞの怜蚌の詳现に぀いおは、「パッケヌゞ怜蚌の抂芁」を参照しおください。

ValidateAssemblies タスクのプロパティに぀いおは、「アセンブリ怜蚌プロパティ」を参照しおください。

このセクションでは、次の MSBuild プロパティず項目に぀いお説明したす。

ApiCompatEnableRuleAttributesMustMatch

true に蚭定するず、ApiCompatEnableRuleAttributesMustMatch プロパティによっお、属性が䞀臎するかどうかをチェックする怜蚌芏則が有効になりたす。 既定倀は、false です。

<PropertyGroup>
  <ApiCompatEnableRuleAttributesMustMatch>true</ApiCompatEnableRuleAttributesMustMatch>
</PropertyGroup>

ApiCompatEnableRuleCannotChangeParameterName

trueに蚭定するず、ApiCompatEnableRuleCannotChangeParameterName プロパティにより、パラメヌタヌ名がパブリック メ゜ッドで倉曎されたかどうかを確認する怜蚌芏則が有効になりたす。 既定倀は、false です。

<PropertyGroup>
  <ApiCompatEnableRuleCannotChangeParameterName>true</ApiCompatEnableRuleCannotChangeParameterName>
</PropertyGroup>

ApiCompatExcludeAttributesFile

ApiCompatExcludeAttributesFile 項目は、DocId 圢匏で陀倖する属性を含むファむルぞのパスを指定したす。

<ItemGroup>
  <ApiCompatExcludeAttributesFile Include="ApiCompatExcludedAttributes.txt" />
  <ApiCompatExcludeAttributesFile Include="ApiCompatBaselineExcludedAttributes.txt" />
</ItemGroup>

ApiCompatGenerateSuppressionFile

ApiCompatGenerateSuppressionFile プロパティにより、互換性抑制ファむルを生成するかどうかが指定されたす。

<PropertyGroup>
  <ApiCompatGenerateSuppressionFile>true</ApiCompatGenerateSuppressionFile>
</PropertyGroup>

ApiCompatPermitUnnecessarySuppressions

ApiCompatPermitUnnecessarySuppressions プロパティにより、抑制ファむルで䞍芁な抑制を蚱可するかどうかが指定されたす。

既定倀は、false です。

<PropertyGroup>
  <ApiCompatPermitUnnecessarySuppressions>true</ApiCompatPermitUnnecessarySuppressions>
</PropertyGroup>

ApiCompatPreserveUnnecessarySuppressions

ApiCompatPreserveUnnecessarySuppressions プロパティにより、抑制ファむルを再生成するずきに䞍芁な抑制を保持するかどうかが指定されたす。 既存の抑制ファむルが再生成されるずきは、その内容が読み取られ、䞀連の抑制に逆シリアル化された埌、リストに栌玍されたす。 非互換性が修正されおいる堎合、䞀郚の抑制は䞍芁になる可胜性がありたす。 抑制をディスクにシリアル化し盎す堎合は、このプロパティを に蚭定するこずで、既存の (逆シリアル化された) 匏を "すべお" 保持するこずができたす。true

既定倀は、false です。

<PropertyGroup>
  <ApiCompatPreserveUnnecessarySuppressions>true</ApiCompatPreserveUnnecessarySuppressions>
</PropertyGroup>

ApiCompatRespectInternals

ApiCompatRespectInternals プロパティにより、internal API に加えお、 public API の互換性を確認する必芁があるかどうかが指定されたす。

<PropertyGroup>
  <ApiCompatRespectInternals>true</ApiCompatRespectInternals>
</PropertyGroup>

ApiCompatSuppressionFile

ApiCompatSuppressionFile 項目により、読み取る 1 ぀以䞊の抑制ファむルぞのパスが指定されたす。 指定しない堎合、抑制ファむル <project-directory>/CompatibilitySuppressions.xml が読み取られたす (存圚する堎合)。

<ItemGroup>
  <ApiCompatSuppressionFile Include="CompatibilitySuppressions.xml;CompatibilitySuppressions.WasmThreads.xml" />
</ItemGroup>

ApiCompatSuppressionOutputFile

ApiCompatSuppressionOutputFile プロパティにより、<ApiCompatGenerateSuppressionFile> が true の堎合に曞き蟌む抑制ファむルぞのパスが指定されたす。 指定しないず、最初の ApiCompatSuppressionFile 項目が䜿われたす。

EnablePackageValidation

EnablePackageValidation プロパティを䜿甚するず、Pack タスクの埌にパッケヌゞの䞀連の怜蚌が有効になりたす。 詳现に぀いおは、パッケヌゞの怜蚌に関する蚘事を参照しおください。

<PropertyGroup>
  <EnablePackageValidation>true</EnablePackageValidation>
</PropertyGroup>

EnableStrictModeForBaselineValidation

trueに蚭定するず、 EnableStrictModeForBaselineValidation プロパティにより、パッケヌゞのベヌスラむン チェックの厳栌モヌドが有効になりたす。 既定倀は、false です。

EnableStrictModeForCompatibleFrameworksInPackage

true に蚭定するず、EnableStrictModeForCompatibleFrameworksInPackage プロパティにより、タヌゲット フレヌムワヌクに基づいお互換性のあるアセンブリの厳栌モヌドが有効になりたす。 既定倀は、false です。

EnableStrictModeForCompatibleTfms

true に蚭定するず、EnableStrictModeForCompatibleTfms プロパティにより、互換性のあるすべおのタヌゲット フレヌムワヌクのコントラクトおよび実装アセンブリの厳栌モヌドが有効になりたす。 既定倀は、true です。

NoWarn

NoWarn プロパティにより、抑制する蚺断 ID が指定されたす。

<PropertyGroup>
  <NoWarn>$(NoWarn);PKV0001</NoWarn>
</PropertyGroup>

PackageValidationBaselineFrameworkToIgnore

PackageValidationBaselineFrameworkToIgnore 項目により、ベヌスラむン パッケヌゞから無芖するタヌゲット フレヌムワヌクが指定されたす。 フレヌムワヌク文字列は、ベヌスラむン パッケヌゞ内のフォルダヌ名ず正確に䞀臎する必芁がありたす。

<ItemGroup>
  <PackageValidationBaselineFrameworkToIgnore Include="netcoreapp2.1" />
</ItemGroup>

PackageValidationBaselineName

PackageValidationBaselineName プロパティにより、珟圚のパッケヌゞを怜蚌するベヌスラむン パッケヌゞの名前が指定されたす。 指定しない堎合は、PackageId 倀が䜿甚されたす。

PackageValidationBaselineVersion

PackageValidationBaselineVersion プロパティにより、珟圚のパッケヌゞを怜蚌するベヌスラむン パッケヌゞのバヌゞョンが指定されたす。

PackageValidationReferencePath

PackageValidationReferencePath 項目により、TFM ごずに参照アセンブリが芋぀かるディレクトリ パスが指定されたす。

<ItemGroup>
  <PackageValidationReferencePath Include="path/to/reference-assembly" TargetFramework="net9.0" />
</ItemGroup>

RoslynAssembliesPath

RoslynAssembliesPath プロパティは、Microsoftを含むディレクトリぞのパスを指定したす。䜿甚する CodeAnalysis アセンブリ。 このプロパティを蚭定する必芁があるのは、SDK のコンパむラより新しいコンパむラでテストする堎合のみです。

このセクションでは、次の MSBuild プロパティに぀いお説明したす。

AppendTargetFrameworkToOutputPath

AppendTargetFrameworkToOutputPath プロパティは、タヌゲット フレヌムワヌク モニカヌ (TFM) を出力パス (OutputPath で定矩されおいる) に远加するかどうかを制埡したす。 .NET SDK により、タヌゲット フレヌムワヌクが自動的に远加され、存圚する堎合はランタむム識別子が出力パスに远加されたす。 AppendTargetFrameworkToOutputPath を false に蚭定するず、TFM が出力パスに远加されなくなりたす。 ただし、出力パスに TFM がないず、耇数のビルド成果物が盞互に䞊曞きされる可胜性がありたす。

たずえば、.NET 5 アプリの堎合、出力パスは次の蚭定で bin\Debug\net5.0 から bin\Debug に倉わりたす。

<PropertyGroup>
  <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
</PropertyGroup>

AppendRuntimeIdentifierToOutputPath

AppendRuntimeIdentifierToOutputPath プロパティは、ランタむム識別子 (RID) を出力パスに远加するかどうかを制埡したす。 .NET SDK によっおタヌゲット フレヌムワヌクが自動的に远加され、存圚する堎合はランタむム識別子 (RID) が出力パスに远加されたす。 AppendRuntimeIdentifierToOutputPath を false に蚭定するず、RID が出力パスに远加されなくなりたす。 (ただし、RID は 匕き続き発行パスに远加されたす。詳现に぀いおは、 dotnet/sdk#12114 を参照しおください)。

たずえば、.NET 9 アプリず win-x64 の RID の堎合、次の蚭定では出力パスが bin\Debug\net9.0\win-x64 から bin\Debug\net9.0 に倉曎されたす。

<PropertyGroup>
  <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
</PropertyGroup>

CopyLocalLockFileAssemblies

CopyLocalLockFileAssemblies プロパティは、他のラむブラリに䟝存しおいるプラグむン プロゞェクトにずっお䟿利です。 このプロパティを true に蚭定するず、掚移的な NuGet パッケヌゞの䟝存関係が出力ディレクトリにコピヌされたす。 ぀たり、dotnet build の出力を䜿甚し、任意のコンピュヌタヌでプラグむンを実行できたす。

<PropertyGroup>
  <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>

CopyLocalLockFileAssembliesの既定倀は、出力の皮類によっお異なる堎合がありたす。 たずえば、クラス ラむブラリの堎合、既定倀は false、コン゜ヌル アプリケヌションの堎合、既定倀は true。 必芁に応じお、このプロパティを明瀺的に指定しお既定倀をオヌバヌラむドできたす。

Tip

あるいは、dotnet publish を䜿甚し、クラス ラむブラリを発行できたす。 詳现に぀いおは、「dotnet publish」を参照しおください。

ErrorOnDuplicatePublishOutputFiles

ErrorOnDuplicatePublishOutputFiles プロパティは、MSBuild によっお発行出力のファむル重耇が怜出されるが、削陀するべきファむルを刀断できないずき、SDK によっお゚ラヌ NETSDK1148 が生成されるかどうかに関係したす。 ゚ラヌを生成しない堎合、ErrorOnDuplicatePublishOutputFiles プロパティを false に蚭定したす。

<PropertyGroup>
  <ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>
</PropertyGroup>

このプロパティは、.NET 6 で導入されたした。

GenerateRuntimeConfigDevFile

.NET 6 SDK 以降では、[Appname].runtimesettings.dev.json ファむルはコンパむル時に既定で生成されなくなりたす。 このファむルを生成させる堎合、GenerateRuntimeConfigDevFile プロパティを true に蚭定しおください。

<PropertyGroup>
  <GenerateRuntimeConfigDevFile>true</GenerateRuntimeConfigDevFile>
</PropertyGroup>

GenerateRuntimeConfigurationFiles

GenerateRuntimeConfigurationFiles プロパティによっお、ランタむム構成オプションを runtimeconfig.template.json ファむルから [appname].runtimeconfig.json ファむルにコピヌするかどうかを制埡したす。 runtimeconfig.json ファむルが必芁なアプリの堎合 (぀たり、その OutputType が Exe である堎合)、このプロパティの既定倀は true です。

<PropertyGroup>
  <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
</PropertyGroup>

GenerateSatelliteAssembliesForCore

GenerateSatelliteAssembliesForCore プロパティは、.NET Framework プロゞェクトでcsc.exe たたは Al.exe (アセンブリ リンカヌ) を䜿甚しおサテラむト アセンブリを生成するかどうかを制埡したす。 (.NET Core および .NET 5 以䞊のプロゞェクトでは、サテラむト アセンブリを生成するために垞に csc.exe を䜿甚したす)。.NET Framework プロゞェクトの堎合、サテラむト アセンブリは既定で al.exe によっお䜜成されたす。 GenerateSatelliteAssembliesForCore プロパティを true に蚭定するず、代わりに csc.exe によっおサテラむト アセンブリが䜜成されたす。 csc.exe を䜿うず、次の状況で有利になる堎合がありたす。

  • C# コンパむラの deterministic オプションを䜿甚する必芁がある。
  • al.exe はパブリック眲名をサポヌトせず、AssemblyInformationalVersionAttribute を適切に凊理できないずいう事実によっお制限されおいる。
<PropertyGroup>
  <GenerateSatelliteAssembliesForCore>true</GenerateSatelliteAssembliesForCore>
</PropertyGroup>

IsPublishable

IsPublishable プロパティを䜿甚するず、Publish タヌゲットを実行できたす。 このプロパティは、.*proj ファむルず Publish タヌゲット (dotnet publish コマンドなど) を䜿甚するプロセスにのみ圱響したす。 PublishOnly タヌゲットを䜿甚するVisual Studioでの発行には圱響したせん。 既定倀は true です。

このプロパティを䜿甚するず、発行する必芁があるプロゞェクトを自動的に遞択できるようになるため、゜リュヌション ファむルで dotnet publish を実行する堎合に䟿利です。

<PropertyGroup>
  <IsPublishable>false</IsPublishable>
</PropertyGroup>

PreserveCompilationContext

PreserveCompilationContext プロパティを䜿甚するず、ビルド時に䜿甚したのず同じ蚭定を䜿甚しお、ビルドたたは発行されたアプリケヌションで実行時により倚くのコヌドをコンパむルできたす。 ビルド時に参照されるアセンブリは、出力ディレクトリの ref サブディレクトリにコピヌされたす。 参照アセンブリの名前は、コンパむラに枡されるオプションず共に、アプリケヌションの .deps.json ファむルに栌玍されたす。 この情報は、DependencyContext.CompileLibraries ず DependencyContext.CompilationOptions のプロパティを䜿甚しお取埗できたす。

この機胜は、ほずんどの堎合、Razor ファむルのランタむム コンパむルをサポヌトするために、MVC ペヌゞず Razor ペヌゞ ASP.NET Core内郚で䜿甚されたす。

<PropertyGroup>
  <PreserveCompilationContext>true</PreserveCompilationContext>
</PropertyGroup>

PreserveCompilationReferences

PreserveCompilationReferences プロパティは PreserveCompilationContext プロパティず䌌おいたすが、 .deps.json ファむルではなく、発行ディレクトリに参照アセンブリのみがコピヌされる点が異なりたす。

<PropertyGroup>
  <PreserveCompilationReferences>true</PreserveCompilationReferences>
</PropertyGroup>

詳现に぀いおは、「Razor SDK」の「プロパティ」を参照しおください。

ProduceReferenceAssemblyInOutDir

.NET 5 以前のバヌゞョンでは、参照アセンブリは垞に OutDir ディレクトリに曞き蟌たれたす。 .NET 6 以降のバヌゞョンでは、ProduceReferenceAssemblyInOutDir プロパティを䜿甚しお、参照アセンブリを OutDir ディレクトリに曞き蟌むかどうかを制埡できたす。 既定倀は false で、参照アセンブリは IntermediateOutputPath ディレクトリにのみ曞き蟌たれたす。 参照アセンブリを true ディレクトリに曞き蟌むには、倀を OutDir に蚭定したす。

<PropertyGroup>
  <ProduceReferenceAssemblyInOutDir>true</ProduceReferenceAssemblyInOutDir>
</PropertyGroup>

詳现に぀いおは、「䞭間出力ぞの参照アセンブリの曞き蟌み」を参照しおください。

PublishDocumentationFile

このプロパティが true の堎合、プロゞェクトの XML ドキュメント ファむルが (生成されおいれば)、プロゞェクトの発行出力に含たれたす。 このプロパティでは、既定倀が true に蚭定されたす。

Tip

コンパむル時に XML ドキュメント ファむルを生成するには、GenerateDocumentationFile を true に蚭定したす。

PublishDocumentationFiles

このプロパティは、さたざたな皮類の XML ドキュメント ファむル (぀たり PublishDocumentationFile や PublishReferencesDocumentationFiles) を既定で発行ディレクトリにコピヌするかどうかを制埡する他のいく぀かのプロパティ甚の有効化フラグです。 これらのプロパティが未蚭定で、このプロパティを蚭定するず、これらのプロパティは既定で true になりたす。 このプロパティでは、既定倀が true に蚭定されたす。

PublishReferencesDocumentationFiles

このプロパティを trueするず、プロゞェクトの参照の XML ドキュメント ファむルは、DLL ファむルなどのランタむム資産だけでなく、発行ディレクトリにコピヌされたす。 このプロパティでは、既定倀が true に蚭定されたす。

PublishReferencesSymbols

このプロパティが trueされるず、プロゞェクトの参照のシンボル ファむル (PDB ファむルずも呌ばれたす) は、DLL ファむルなどのランタむム アセットだけでなく、発行ディレクトリにコピヌされたす。 このプロパティでは、既定倀が true に蚭定されたす。

PublishRelease

この PublishRelease プロパティは、既定で dotnet publish 構成の代わりに Release 構成を䜿甚するように Debug に通知したす。 このプロパティは、.NET 7 で導入されたした。

<PropertyGroup>
  <PublishRelease>true</PublishRelease>
</PropertyGroup>

Note

  • .NET 8 SDK 以降では、 は、8 以降をタヌゲットずするプロゞェクトでは既定で になりたす。 詳现に぀いおは、「'dotnet publish' では Release 構成が䜿甚される」を参照しおください。
  • このプロパティは、dotnet build /t:Publish の動䜜には圱響せず、.NET CLI を䜿甚しお発行する堎合にのみ構成を倉曎したす。

PublishRuntimeIdentifier

発行操䜜専甚の 1 ぀の ランタむム識別子 (RID) を指定したす。 このプロパティは、.NET 7 で導入されたした。 ビルド操䜜には圱響したせん。 発行時に、 PublishRuntimeIdentifier セット RuntimeIdentifier。 RuntimeIdentifierをグロヌバル プロパティずしお枡す堎合、その倀が優先されたす。

<PropertyGroup>
  <PublishRuntimeIdentifier>linux-x64</PublishRuntimeIdentifier>
</PropertyGroup>

PublishSelfContained

PublishSelfContained プロパティは、dotnet publishずしおアプリを発行するように に通知したす。 このプロパティは、゜リュヌション レベルで発行する堎合など、--self-contained コマンドに 匕数を䜿甚できない堎合に䟿利です。 その堎合は、PublishSelfContained MSBuild プロパティをプロゞェクトたたは Directory.Build.Props ファむルに远加できたす。

このプロパティは、.NET 7 で導入されたした。 これは、 動詞に固有である点を陀いお、publish プロパティに䌌おいたす。 PublishSelfContained の代わりに SelfContained を䜿甚するこずが掚奚されたす。

<PropertyGroup>
  <PublishSelfContained>true</PublishSelfContained>
</PropertyGroup>

RollForward

RollForward プロパティによっお、耇数のランタむム バヌゞョンが利甚できるずきのアプリケヌションによるランタむム遞択方法が制埡されたす。 この倀は .runtimeconfig.json に rollForward 蚭定ずしお出力されたす。

<PropertyGroup>
  <RollForward>LatestMinor</RollForward>
</PropertyGroup>

RollForward には、次のいずれかの倀を遞択したす。

Value Description
Minor 既定の (指定されおいない堎合)。
芁求されたマむナヌ バヌゞョンがない堎合は、次に利甚可胜な䞊䜍マむナヌ バヌゞョン (およびそのマむナヌ バヌゞョン内で䜿甚可胜な最高のパッチ バヌゞョン) にロヌルフォワヌドしたす。 芁求されたマむナヌ バヌゞョンが存圚する堎合は、LatestPatch ポリシヌが䜿甚されたす。
Major 芁求されたメゞャヌ バヌゞョンが芋぀からない堎合は、次に利甚可胜な䞊䜍メゞャヌ バヌゞョン (䜿甚可胜な最小マむナヌ バヌゞョンで、そのマむナヌ バヌゞョン内で利甚可胜な最も高いパッチ バヌゞョン) にロヌルフォワヌドしたす。 芁求されたメゞャヌ バヌゞョンが存圚する堎合は、Minor ポリシヌが䜿甚されたす。
LatestPatch 芁求されたメゞャヌ バヌゞョンずマむナヌ バヌゞョンで䜿甚可胜な最高のパッチ バヌゞョンにロヌルフォワヌドしたす。 この倀によっお、マむナヌ バヌゞョンのロヌルフォワヌドが無効になりたす。
LatestMinor 芁求されたマむナヌ バヌゞョンが存圚する堎合でも、芁求されたメゞャヌ バヌゞョン (およびそのマむナヌ バヌゞョン内で䜿甚可胜な最も高いパッチ バヌゞョン) で䜿甚可胜な最高のマむナヌ バヌゞョンにロヌルフォワヌドしたす。
LatestMajor 芁求されたメゞャヌが存圚する堎合でも、䜿甚可胜なメゞャヌ バヌゞョン (およびそのメゞャヌ バヌゞョン内で䜿甚可胜なマむナヌバヌゞョンずパッチ バヌゞョンの䞭で最も高いバヌゞョン) にロヌルフォワヌドしたす。
Disable ロヌルフォワヌドせず、指定されたバヌゞョンにバむンドされるだけです。 このポリシヌは、最新のパッチにロヌルフォワヌドする機胜が無効になるため、䞀般的な䜿甚にはお勧めできたせん。 この倀はテスト甚にのみ掚奚されたす。

詳现に぀いおは、ロヌルフォワヌド動䜜の制埡に関するペヌゞを参照しおください。

RuntimeFrameworkVersion

RuntimeFrameworkVersion プロパティによっお、発行時に䜿甚するランタむムのバヌゞョンが指定されたす。 ランタむム バヌゞョンを指定する:

<PropertyGroup>
  <RuntimeFrameworkVersion>5.0.7</RuntimeFrameworkVersion>
</PropertyGroup>

フレヌムワヌク䟝存のアプリケヌションを発行するずき、この倀によっお、必須の "最小" バヌゞョンが指定されたす。 自己完結型のアプリケヌションを発行するずき、この倀によっお、必須ずなる "厳密な" バヌゞョンが指定されたす。

RuntimeIdentifier

RuntimeIdentifier プロパティを䜿甚するず、プロゞェクトに 1 ぀のランタむム識別子 (RID) を指定できたす。 RID により、自己完結型の展開を発行できたす。

<PropertyGroup>
  <RuntimeIdentifier>linux-x64</RuntimeIdentifier>
</PropertyGroup>

RuntimeIdentifiers

RuntimeIdentifiers プロパティには、プロゞェクトのランタむム識別子 (RID) のセミコロン区切りリストを指定できたす。 耇数のランタむムに発行する必芁がある堎合は、このプロパティを䜿甚したす。 RuntimeIdentifiers は、埩元時に適切な資産をグラフに確実に含めるために䜿甚されたす。

Tip

RuntimeIdentifier (単数圢) を䜿甚するず、必芁なランタむムが 1 ぀だけのずき、ビルドが速くなりたす。

<PropertyGroup>
  <RuntimeIdentifiers>win-x64;osx-x64;linux-x64</RuntimeIdentifiers>
</PropertyGroup>

SatelliteResourceLanguages

SatelliteResourceLanguages プロパティを䜿甚するず、ビルドおよび発行時にサテラむト リ゜ヌス アセンブリを保持する蚀語を指定できたす。 倚くの NuGet パッケヌゞには、そのメむン パッケヌゞにロヌカラむズされたリ゜ヌス サテラむト アセンブリが含たれおいたす。 ロヌカラむズされたリ゜ヌスを必芁ずしない NuGet パッケヌゞを参照するプロゞェクトの堎合、ロヌカラむズされたアセンブリによっおビルドず発行の出力サむズが䞍必芁に倧きくなる可胜性がありたす。 プロゞェクト ファむルに SatelliteResourceLanguages プロパティを远加するこずで、指定した蚀語のロヌカラむズされたアセンブリだけがビルドず発行の出力に含たれたす。 たずえば、次のプロゞェクト ファむルでは、英語 (米囜) ずドむツ語 (ドむツ) のリ゜ヌス サテラむト アセンブリだけが保持されたす。

<PropertyGroup>
  <SatelliteResourceLanguages>en-US;de-DE</SatelliteResourceLanguages>
</PropertyGroup>

Note

  • このプロパティは、ロヌカラむズされたリ゜ヌス サテラむト アセンブリを含む NuGet を参照するプロゞェクトで指定する必芁がありたす。

  • 匕数 dotnet publish ずしお耇数の蚀語を指定するには、蚀語識別子を囲む匕甚笊の "ペアを 3 ぀" 远加する必芁がありたす。 䟋えば次が挙げられたす。

    dotnet msbuild multi.msbuildproj -p:SatelliteResourceLanguages="""de;en"""

SelfContained

SelfContained プロパティは、dotnet build ず dotnet publish に、自己完結型アプリずしおアプリをビルドたたは発行するように通知したす。 このプロパティは、゜リュヌション レベルで発行する堎合など、--self-contained コマンドで 匕数を䜿甚できない堎合に䟿利です。 その堎合は、SelfContained MSBuild プロパティをプロゞェクトたたは Directory.Build.Props ファむルに远加できたす。

このプロパティは、PublishSelfContained プロパティに䌌おいたす。 可胜な限り PublishSelfContained の代わりに SelfContained を䜿甚するこずが掚奚されたす。

<PropertyGroup>
  <SelfContained>true</SelfContained>
</PropertyGroup>

UseAppHost

UseAppHost プロパティにより、デプロむ甚にネむティブ実行可胜ファむルを䜜成するかどうかが制埡されたす。 自己完結型の配眮にはネむティブの実行可胜ファむルが必芁です。 フレヌムワヌクに䟝存する実行可胜ファむルが既定で䜜成されたす。 実行可胜ファむルの生成を無効にするには、UseAppHost プロパティを false に蚭定したす。

<PropertyGroup>
  <UseAppHost>false</UseAppHost>
</PropertyGroup>

デプロむの詳现に぀いおは、「.NET アプリケヌションのデプロむ」を参照しおください。

UseNativeLibPrefix

UseNativeLibPrefix プロパティは、NativeAOT が Unix プラットフォヌム䞊の実行可胜でないネむティブ ラむブラリ出力にlib プレフィックスを適甚するかどうかを制埡したす。 既定では、 lib プレフィックスが適甚され、共有ラむブラリず静的ラむブラリ ( libmylib.so、 libmylib.a など) の Unix の名前付け芏則に合わせお調敎されたす。

既定の動䜜からオプトアりトするには、 UseNativeLibPrefix を false に蚭定したす。

<PropertyGroup>
  <UseNativeLibPrefix>false</UseNativeLibPrefix>
</PropertyGroup>

このプロパティは、.NET 11 で導入されたした。 詳现に぀いおは、「 NativeAOT では Unix 䞊のネむティブ ラむブラリ出力に lib プレフィックスを䜿甚する」を参照しおください。

さたざたな MSBuild プロパティをトリミングの埮調敎に䜿甚できたす。これは、自己完結型の展開から未䜿甚のコヌドをトリミングする機胜です。 これらのオプションの詳现に぀いおは、「トリミングのオプション」を参照しおください。 次の衚に、クむック リファレンスを瀺したす。

Property Values Description
PublishTrimmed true たたは false 公開䞭にトリミングを有効にするかどうかを制埡したす。
TrimMode full たたは partial 既定倀は full です。 トリミングの粒床を制埡したす。
SuppressTrimAnalysisWarnings true たたは false トリミング分析の譊告を生成するかどうかを制埡したす。
EnableTrimAnalyzer true たたは false トリミング分析の譊告のサブセットを生成するかどうかを制埡したす。 PublishTrimmed が false に蚭定されおいる堎合でも、分析を有効にするこずができたす。
ILLinkTreatWarningsAsErrors true たたは false トリミングの譊告を゚ラヌずしお扱うかどうかを制埡したす。 たずえば、false が TreatWarningsAsErrors に蚭定されおいる堎合は、このプロパティを true に蚭定するこずができたす。
TrimmerSingleWarn true たたは false アセンブリごずに 1 ぀の譊告を衚瀺するか、すべおの譊告を衚瀺するかを制埡したす。
TrimmerRemoveSymbols true たたは false トリミングされたアプリケヌションからすべおのシンボルを削陀するかどうかを制埡したす。

このセクションでは、次の MSBuild プロパティに぀いお説明したす。

LangVersion や Nullable などの C# コンパむラ オプションは、プロゞェクト ファむルの MSBuild プロパティずしお指定するこずもできたす。 詳现に぀いおは、「C# コンパむラ オプション」を参照しおください。

ContinuousIntegrationBuild

ContinuousIntegrationBuild プロパティは、ビルドが継続的むンテグレヌション (CI) サヌバヌ䞊で実行されおいるかどうかを瀺したす。 true に蚭定するず、このプロパティによっお、開発者甚マシン䞊のロヌカル ビルドではなく、公匏ビルドにのみ適甚される蚭定が有効になりたす。 たずえば、栌玍されたファむルのパスは公匏ビルド甚に正芏化されたす。 ただし、ロヌカル開発マシンでは、ファむル パスが正芏化されおいる堎合、デバッガヌはロヌカル ゜ヌス ファむルを芋぀けるこずができたせん。

CI システムの倉数を䜿っお、ContinuousIntegrationBuild プロパティを条件付きで蚭定するこずができたす。 たずえば、Azure Pipelinesの倉数名は TF_BUILD です。

<PropertyGroup Condition="'$(TF_BUILD)' == 'true'">
  <ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>

GitHub Actionsの堎合、倉数名は GITHUB_ACTIONS です。

<PropertyGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">
  <ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>

CopyDebugSymbolFilesFromPackages

このプロパティを true に蚭定するず、プロゞェクト内の PackageReference 項目のすべおのシンボル ファむル (PDB ファむルずも呌ばれる) がビルド出力にコピヌされたす。 これらのファむルは、䟋倖に関するより有益な情報を含むスタック トレヌスを提䟛し、実行䞭のアプリケヌションのメモリ ダンプずトレヌスを理解しやすくしたす。 ただし、これらのファむルを含めるず、デプロむ バンドルのサむズが倧きくなりたす。

このプロパティは .NET SDK 7.0.100 で導入されたしたが、既定では指定されおいたせん。

CopyDocumentationFilesFromPackages

このプロパティを true に蚭定するず、プロゞェクト内の PackageReference 項目のすべおの生成された XML ドキュメント ファむルがビルド出力にコピヌされたす。 この機胜を有効にするず、デプロむ バンドルのサむズが倧きくなるこずに泚意しおください。

このプロパティは .NET SDK 7.0.100 で導入されたしたが、既定では指定されおいたせん。

DisableImplicitFrameworkDefines

DisableImplicitFrameworkDefines プロパティは、SDK が.NET プロゞェクトのタヌゲット フレヌムワヌクずプラットフォヌムのプリプロセッサ シンボルを生成するかどうかを制埡したす。 このプロパティは false に蚭定されおいるか、蚭定されおいない (既定倀) ずきは、次のプリプロセッサ シンボルが生成されたす。

  • バヌゞョンのないフレヌムワヌク (NETFRAMEWORK、NETSTANDARD、NET)
  • バヌゞョンのあるフレヌムワヌク (NET48、NETSTANDARD2_0、NET6_0)
  • バヌゞョンが最小バむンドのフレヌムワヌク (NET48_OR_GREATER、NETSTANDARD2_0_OR_GREATER、NET6_0_OR_GREATER)

タヌゲット フレヌムワヌク モニカヌずそれらのプリプロセッサ シンボルの詳现に぀いおは、タヌゲット フレヌムワヌクに関するペヌゞを参照しおください。

たた、プロゞェクトでオペレヌティング システム固有のタヌゲット フレヌムワヌク (たずえば net6.0-android) を指定する堎合、次のプリプロセッサ シンボルが生成されたす。

  • バヌゞョンのないプラットフォヌム (ANDROID、IOS、WINDOWS)
  • バヌゞョンのあるプラットフォヌム (IOS15_1)
  • バヌゞョンが最小バむンドのプラットフォヌム (IOS15_1_OR_GREATER)

オペレヌティング システム固有のタヌゲット フレヌムワヌク モニカヌの詳现に぀いおは、OS 固有の TFM に関するセクションを参照しおください。

最埌に、タヌゲット フレヌムワヌクが前のタヌゲット フレヌムワヌクのサポヌトを意味する堎合は、それらの前のフレヌムワヌクのプリプロセッサ シンボルが生成されたす。 たずえば、net6.0net5.0のサポヌトなど、.netcoreapp1.0に戻りたす。 そのため、これらの各タヌゲット フレヌムワヌクに぀いお "バヌゞョンが最小限にバむンドされおいるフレヌムワヌク" のシンボルが定矩されたす。

DocumentationFile

DocumentationFile プロパティを䜿甚するず、そのラむブラリのドキュメントが含たれる XML ファむルのファむル名を指定できたす。 IntelliSense がドキュメントで正しく機胜するには、ファむル名がアセンブリ名ず同じである必芁があり、アセンブリず同じディレクトリにある必芁がありたす。 このプロパティを指定せず、GenerateDocumentationFile を true に蚭定するず、そのドキュメント ファむルの名前は既定でアセンブリの名前になりたすが、ファむル拡匵子は .xml になりたす。 このため、倚くの堎合はこのプロパティを省略し、代わりに GenerateDocumentationFile プロパティを䜿甚する方が簡単です。

このプロパティを指定しおも、GenerateDocumentationFile を false に蚭定した堎合は、そのコンパむラでドキュメント ファむルは生成 されたせん。 このプロパティを指定し、GenerateDocumentationFile プロパティを省略した堎合は、そのコンパむラでドキュメント ファむルが生成 されたす。

<PropertyGroup>
  <DocumentationFile>path/to/file.xml</DocumentationFile>
</PropertyGroup>

EmbeddedResourceUseDependentUponConvention

EmbeddedResourceUseDependentUponConvention プロパティによっお、リ゜ヌス マニフェスト ファむル名が、リ゜ヌス ファむルず䜵眮されおいる゜ヌス ファむルの型情報から生成されるかどうかを定矩したす。 たずえば、Form1.vb が Form1.cs ず同じフォルダヌにあり、EmbeddedResourceUseDependentUponConvention が true に蚭定されおいる堎合、生成された .resources ファむルは Form1.cs で定矩されおいる最初の型から名前を受け取りたす。 MyNamespace.Form1 が Form1.cs で定矩されおいる最初の型である堎合、生成されるファむル名は MyNamespace.Form1.resources になりたす。

Note

LogicalName、ManifestResourceName、たたは DependentUpon メタデヌタが EmbeddedResource 項目に察しお指定されおいる堎合、そのリ゜ヌス ファむルに察しお生成されたマニフェスト ファむル名は、代わりにそのメタデヌタがベヌスになりたす。

既定では、.NET Core 3.0 以降のバヌゞョンを察象ずする新しい.NET プロゞェクトでは、このプロパティは true に蚭定されたす。 false に蚭定され、か぀プロゞェクト ファむルの LogicalName 項目に ManifestResourceName、DependentUpon、EmbeddedResource のメタデヌタがどれも指定されおいない堎合、リ゜ヌス マニフェストのファむル名は、プロゞェクトのルヌト名前空間ず、 .resx ファむルぞの盞察ファむル パスがベヌスになりたす。 詳现に぀いおは、「リ゜ヌス マニフェスト ファむルの名前付けの方法」を参照しおください。

<PropertyGroup>
  <EmbeddedResourceUseDependentUponConvention>true</EmbeddedResourceUseDependentUponConvention>
</PropertyGroup>

EnablePreviewFeatures

EnablePreviewFeatures プロパティによっお、RequiresPreviewFeaturesAttribute 属性で修食されおいる API たたはアセンブリにプロゞェクトが䟝存するかどうかを定矩したす。 この属性は、API たたはアセンブリによっお、䜿甚しおいる SDK バヌゞョンの "プレビュヌ段階" ず芋なされる機胜が䜿われるこずを瀺す堎合に䜿甚されたす。 プレビュヌ機胜はサポヌトされおおらず、将来のバヌゞョンで削陀される可胜性がありたす。 プレビュヌ機胜の䜿甚を有効にするには、このプロパティを True に蚭定したす。

<PropertyGroup>
  <EnablePreviewFeatures>True</EnablePreviewFeatures>
</PropertyGroup>

True に蚭定されたこのプロパティがプロゞェクトに含たれおいる堎合、AssemblyInfo.cs ファむルに次のアセンブリ レベルの属性が远加されたす。

[assembly: RequiresPreviewFeatures]

EnablePreviewFeatures が True に蚭定されおいないプロゞェクトの䟝存関係にこの属性が存圚する堎合、アナラむザヌによっお譊告が衚瀺されたす。

プレビュヌ アセンブリをリリヌスする予定のラむブラリ䜜成者は、このプロパティを True に蚭定する必芁がありたす。 プレビュヌず非プレビュヌの API を組み合わせおアセンブリず共に出荷する必芁がある堎合は、以䞋の「GenerateRequiresPreviewFeaturesAttribute」セクションを参照しおください。

EnableWindowsTargeting

EnableWindowsTargeting プロパティを true に蚭定しお、Windows以倖のプラットフォヌムでWindows アプリ (Windows フォヌム アプリやWindows Presentation Foundation アプリなど) をビルドしたす。 このプロパティを true に蚭定しないず、ビルド譊告 NETSDK1100 が衚瀺されたす。 この゚ラヌは、タヌゲット パックやランタむム パックが、サポヌトされおいないプラットフォヌムで自動的にダりンロヌドされおいないこずが原因で発生したす。 このプロパティを蚭定するず、これらのパックはクロスタヌゲット時にダりンロヌドされたす。

Note

珟圚、このプロパティは、Windows以倖のプラットフォヌムでの開発を可胜にするために掚奚されおいたす。 ただし、アプリケヌションをリリヌスする準備ができたら、Windows䞊にビルドする必芁がありたす。 Windows以倖のプラットフォヌムでビルドする堎合、出力が Windows 䞊でビルドする堎合ず同じにならない堎合がありたす。 特に、実行可胜ファむルはWindows アプリケヌションずしおマヌクされず (぀たり、垞にコン゜ヌル りィンドりを起動したす)、アむコンは埋め蟌たれたせん。

<PropertyGroup>
  <EnableWindowsTargeting>true</EnableWindowsTargeting>
</PropertyGroup>

GenerateDocumentationFile

GenerateDocumentationFile プロパティは、コンパむラでそのラむブラリの XML ドキュメント ファむルが生成されるかどうかを制埡したす。 このプロパティを true に蚭定し、DocumentationFile プロパティを䜿甚しおファむル名を指定しなかった堎合、生成された XML ファむルはアセンブリず同じ出力ディレクトリに配眮され、同じファむル名になりたす (ただし、拡匵子は .xml になりたす)。

<PropertyGroup>
  <GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>

コヌド コメントからドキュメントを生成する方法の詳现に぀いおは、 XML ドキュメント コメント (C#)、 XML (Visual Basic)、たたは XML (F#) でコヌドをドキュメント化する方法を参照しおください。

GenerateRequiresPreviewFeaturesAttribute

GenerateRequiresPreviewFeaturesAttribute プロパティは、EnablePreviewFeatures プロパティず密接に関連しおいたす。 ラむブラリでプレビュヌ機胜を䜿甚しおいるが、アセンブリ党䜓を RequiresPreviewFeaturesAttribute 属性でマヌクしたくない堎合 (すべおのコンシュヌマヌがプレビュヌ機胜を有効にする必芁がありたす) は、このプロパティを False に蚭定したす。

<PropertyGroup>
    <EnablePreviewFeatures>True</EnablePreviewFeatures>
    <GenerateRequiresPreviewFeaturesAttribute>False</GenerateRequiresPreviewFeaturesAttribute>
</PropertyGroup>

Important

GenerateRequiresPreviewFeaturesAttribute プロパティを False に蚭定する堎合は、プレビュヌ機胜に䟝存するすべおのパブリック API を RequiresPreviewFeaturesAttribute で修食する必芁がありたす。

OptimizeImplicitlyTriggeredBuild

ビルド時間を短瞮するために、null 蚱容分析を含むコヌド分析をスキップVisual Studioによっお暗黙的にトリガヌされるビルド。 Visual Studioは、たずえば、テストの実行時に暗黙的なビルドをトリガヌしたす。 ただし、暗黙的なビルドは、TreatWarningsAsErrors が true ではない堎合にのみ最適化されたす。 TreatWarningsAsErrors を true に蚭定したが、暗黙的にトリガヌされるビルドを匕き続き最適化したい堎合は、OptimizeImplicitlyTriggeredBuild を True に蚭定できたす。 暗黙的にトリガヌされるビルドに察しおビルドの最適化を無効にする堎合は、OptimizeImplicitlyTriggeredBuild を False に蚭定したす。

<PropertyGroup>
    <OptimizeImplicitlyTriggeredBuild>True</OptimizeImplicitlyTriggeredBuild>
</PropertyGroup>

DisableRuntimeMarshalling

DisableRuntimeMarshalling プロパティを指定するず、プロゞェクトのランタむム マヌシャリング サポヌトを無効にするこずができたす。 このプロパティを true に蚭定するず、DisableRuntimeMarshallingAttribute がアセンブリに远加され、P/Invoke たたはデリゲヌト ベヌスの盞互運甚機胜は、無効になっおいるランタむム マヌシャリングの芏則に埓いたす。

<PropertyGroup>
    <DisableRuntimeMarshalling>True</DisableRuntimeMarshalling>
</PropertyGroup>

BuildWithNetFrameworkHostedCompiler

BuildWithNetFrameworkHostedCompiler=trueの指定は、RoslynCompilerType=FrameworkPackageを指定するこずず同じです。 詳现に぀いおは、「 RoslynCompilerType」を参照しおください。 BuildWithNetFrameworkHostedCompiler=falseを指定するず、RoslynCompilerType=FrameworkPackageぞの自動オプトむンが行われないようにしたす。 RoslynCompilerTypeを明瀺的に指定した堎合、BuildWithNetFrameworkHostedCompilerは効果がありたせん。

RoslynCompilerType

RoslynCompilerType プロパティは、C# たたは Visual Basic コンパむラのバヌゞョンを制埡したす。 次の倀が認識されたす。

  • Core: .NET SDK に付属するコンパむラを䜿甚したす。 これは、.NET Framework MSBuild を䜿甚する堎合でも、.NET 10 であるための既定倀です。
  • Framework: .NET Framework MSBuild に付属するコンパむラを䜿甚したす。
  • FrameworkPackage: .NET Framework MSBuild を䜿甚する堎合は、.NET SDK バヌゞョンに察応する .NET Framework コンパむラでパッケヌゞをダりンロヌドしお䜿甚したす。

既定の項目の包含プロパティ

このセクションでは、次の MSBuild プロパティに぀いお説明したす。

詳现に぀いおは、「既定で含たれるものず陀倖されるもの」を参照しおください。

DefaultItemExcludes

DefaultItemExcludes プロパティを䜿甚しお、含たれる、陀倖される、および削陀の glob から陀倖するファむルずフォルダヌの glob パタヌンを定矩したす。 既定では、 ./bin および ./obj フォルダヌは、glob パタヌンから陀倖されたす。

<PropertyGroup>
  <DefaultItemExcludes>$(DefaultItemExcludes);**/*.myextension</DefaultItemExcludes>
</PropertyGroup>

Note

DefaultItemExcludes プロパティは、ファむルずフォルダヌがdotnet watchによっお監芖されないように陀倖したす。 詳现に぀いおは、「dotnet watchから指定されたフォルダヌずファむルを無芖する」を参照しおください。

DefaultItemExcludesInProjectFolder

DefaultItemExcludesInProjectFolder プロパティを䜿甚しお、含たれる、陀倖される、および削陀の glob から陀倖する、プロゞェクト フォルダヌのファむルずフォルダヌの glob パタヌンを定矩したす。 既定では、ピリオド (.) で始たるフォルダヌ ( .git や .vs など) は、glob パタヌンから陀倖されたす。

このプロパティは、プロゞェクト フォルダヌ内のファむルずフォルダヌのみが考慮される点を陀いお、DefaultItemExcludes プロパティずよく䌌おいたす。 glob パタヌンが意図せずにプロゞェクト フォルダヌ倖の項目ず盞察パスを照合する堎合は、DefaultItemExcludesInProjectFolder プロパティの代わりに DefaultItemExcludes プロパティを䜿甚したす。

<PropertyGroup>
  <DefaultItemExcludesInProjectFolder>$(DefaultItemExcludesInProjectFolder);**/myprefix*/**</DefaultItemExcludesInProjectFolder>
</PropertyGroup>

EnableDefaultItems

EnableDefaultItems プロパティは、コンパむル項目、埋め蟌みリ゜ヌス項目、および None 項目がプロゞェクトに暗黙的に含たれるかどうかを制埡したす。 既定倀は true です。 EnableDefaultItems プロパティを false に蚭定しお、暗黙的なファむルの組み蟌みをすべお無効にしたす。

<PropertyGroup>
  <EnableDefaultItems>false</EnableDefaultItems>
</PropertyGroup>

EnableDefaultCompileItems

EnableDefaultCompileItems プロパティは、コンパむル項目がプロゞェクトに暗黙的に含たれるかどうかを制埡したす。 既定倀は true です。 EnableDefaultCompileItems プロパティを false に蚭定しお、*.cs およびその他の蚀語拡匵ファむルの暗黙的な包含を無効にしたす。

<PropertyGroup>
  <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
</PropertyGroup>

EnableDefaultEmbeddedResourceItems

EnableDefaultEmbeddedResourceItems プロパティは、埋め蟌みリ゜ヌス項目がプロゞェクトに暗黙的に含たれるかどうかを制埡したす。 既定倀は true です。 埋め蟌みリ゜ヌス ファむルの暗黙的な包含を無効にするには、EnableDefaultEmbeddedResourceItems プロパティを false に蚭定したす。

<PropertyGroup>
  <EnableDefaultEmbeddedResourceItems>false</EnableDefaultEmbeddedResourceItems>
</PropertyGroup>

EnableDefaultNoneItems

EnableDefaultNoneItems プロパティは、None 項目 (ビルド プロセスでロヌルがないファむル) がプロゞェクトに暗黙的に含たれるかどうかを制埡したす。 既定倀は true です。 EnableDefaultNoneItems プロパティを false に蚭定しお、None 項目の暗黙的な包含を無効にしたす。

<PropertyGroup>
  <EnableDefaultNoneItems>false</EnableDefaultNoneItems>
</PropertyGroup>

コヌド分析のプロパティ

このセクションでは、次の MSBuild プロパティに぀いお説明したす。

AnalysisLevel

AnalysisLevel プロパティを䜿甚するず、.NET リリヌスに埓っお実行するコヌド アナラむザヌのセットを指定できたす。 各.NETリリヌスには、䞀連のコヌド分析ルヌルがありたす。 そのセットのうち、そのリリヌスで既定で有効になっおいるルヌルによっお、コヌドが分析されたす。 たずえば、.NET 8 から .NET 9 にアップグレヌドしおも、コヌド分析芏則の既定のセットを倉曎したくない堎合は、AnalysisLevel を 8 に蚭定したす。

<PropertyGroup>
  <AnalysisLevel>8</AnalysisLevel>
</PropertyGroup>

必芁に応じお、このプロパティの耇合倀を指定しお、ルヌルを有効にするアグレッシブな方法を指定するこずもできたす。 耇合倀は、<version>-<mode> ずいう圢匏になりたす。ここで、<mode> 倀は、AnalysisMode 倀の 1 ぀です。 次の䟋では、コヌド アナラむザヌの preview バヌゞョンを䜿甚し、 recommended ルヌルのセットを有効にしたす。

<PropertyGroup>
  <AnalysisLevel>preview-recommended</AnalysisLevel>
</PropertyGroup>

既定倀

  • プロゞェクト.NET 5 以降を察象ずする堎合、たたは AnalysisMode プロパティを远加した堎合、既定倀は latest です。
  • それ以倖の堎合、このプロパティは、プロゞェクト ファむルに明瀺的に远加されおいない限り省略されたす。

次の衚は、指定できる倀を瀺しおいたす。

Value Meaning
latest リリヌスされおいる最新のコヌド アナラむザヌが䜿甚されたす。 既定倀です。
latest-<mode> リリヌスされおいる最新のコヌド アナラむザヌが䜿甚されたす。 <mode> 倀によっお、有効になる芏則が決たりたす。
preview 最新のコヌド アナラむザヌが、プレビュヌ段階であっおも䜿甚されたす。
preview-<mode> 最新のコヌド アナラむザヌが、プレビュヌ段階であっおも䜿甚されたす。 <mode> 倀によっお、有効になる芏則が決たりたす。
10.0 .NET 10 リリヌスで䜿甚できた䞀連のルヌルは、新しいルヌルが䜿甚可胜な堎合でも䜿甚されたす。
10.0-<mode> .NET 10 リリヌスで䜿甚できた䞀連のルヌルは、新しいルヌルが䜿甚可胜な堎合でも䜿甚されたす。 <mode> 倀によっお、有効になる芏則が決たりたす。
10 .NET 10 リリヌスで䜿甚できた䞀連のルヌルは、新しいルヌルが䜿甚可胜な堎合でも䜿甚されたす。
10-<mode> .NET 10 リリヌスで䜿甚できた䞀連のルヌルは、新しいルヌルが䜿甚可胜な堎合でも䜿甚されたす。 <mode> 倀によっお、有効になる芏則が決たりたす。
9.0 .NET 9 リリヌスで䜿甚できた䞀連のルヌルは、新しいルヌルが䜿甚可胜な堎合でも䜿甚されたす。
9.0-<mode> .NET 9 リリヌスで䜿甚できた䞀連のルヌルは、新しいルヌルが䜿甚可胜な堎合でも䜿甚されたす。 <mode> 倀によっお、有効になる芏則が決たりたす。
9 .NET 9 リリヌスで䜿甚できた䞀連のルヌルは、新しいルヌルが䜿甚可胜な堎合でも䜿甚されたす。
9-<mode> .NET 9 リリヌスで䜿甚できた䞀連のルヌルは、新しいルヌルが䜿甚可胜な堎合でも䜿甚されたす。 <mode> 倀によっお、有効になる芏則が決たりたす。
8.0 .NET 8 リリヌスで䜿甚できた䞀連のルヌルは、新しいルヌルが䜿甚可胜な堎合でも䜿甚されたす。
8.0-<mode> .NET 8 リリヌスで䜿甚できた䞀連のルヌルは、新しいルヌルが䜿甚可胜な堎合でも䜿甚されたす。 <mode> 倀によっお、有効になる芏則が決たりたす。
8 .NET 8 リリヌスで䜿甚できた䞀連のルヌルは、新しいルヌルが䜿甚可胜な堎合でも䜿甚されたす。
8-<mode> .NET 8 リリヌスで䜿甚できた䞀連のルヌルは、新しいルヌルが䜿甚可胜な堎合でも䜿甚されたす。 <mode> 倀によっお、有効になる芏則が決たりたす。

Note

  • EnforceCodeStyleInBuild を true に蚭定した堎合、このプロパティは (コヌド品質芏則に加えお) code-style (IDEXXXX) ルヌルに圱響したす。
  • AnalysisLevel に耇合倀を蚭定した堎合、AnalysisMode を指定する必芁はありたせん。 ただし、そのようにした堎合、AnalysisLevel が AnalysisMode よりも優先されたす。
  • このプロパティは、Microsoftを参照するレガシ .NET Framework プロゞェクトなど、project SDK を参照しないプロゞェクトのコヌド分析には圱響したせん。CodeAnalysis.NetAnalyzers NuGet パッケヌゞ。 詳现に぀いおは、「 レガシ プロゞェクトでコヌド分析を有効にする」を参照しおください。

AnalysisLevel<カテゎリ>

このプロパティは、コヌド分析芏則の特定のカテゎリにのみ適甚される点を陀いお、AnalysisLevel ず同じです。 このプロパティを䜿甚するず、特定のカテゎリに察しお異なるバヌゞョンのコヌド アナラむザヌを䜿甚したり、他の芏則カテゎリに察しお異なるレベルの芏則を有効たたは無効にしたりできたす。 特定の芏則カテゎリに察しおこのプロパティを省略した堎合、既定で AnalysisLevel 倀に蚭定されたす。 䜿甚可胜な倀は、AnalysisLevel に䜿甚できるものず同じです。

<PropertyGroup>
  <AnalysisLevelSecurity>preview</AnalysisLevelSecurity>
</PropertyGroup>
<PropertyGroup>
  <AnalysisLevelSecurity>preview-recommended</AnalysisLevelSecurity>
</PropertyGroup>

次の衚は、各芏則カテゎリのプロパティ名を瀺しおいたす。

プロパティ名 ルヌル カテゎリ
<AnalysisLevelDesign> デザむン芏則
<AnalysisLevelDocumentation> ドキュメント芏則
<AnalysisLevelGlobalization> グロヌバリれヌション芏則
<AnalysisLevelInteroperability> 移怍性ず盞互運甚性の芏則
<AnalysisLevelMaintainability> 保守容易性の芏則
<AnalysisLevelNaming> 名前付け芏則
<AnalysisLevelPerformance> パフォヌマンス ルヌル
<AnalysisLevelSingleFile> 単䞀ファむルのアプリケヌション芏則
<AnalysisLevelReliability> 信頌性芏則
<AnalysisLevelSecurity> セキュリティ芏則
<AnalysisLevelStyle> コヌド スタむル (IDEXXXX) 芏則
<AnalysisLevelUsage> 䜿い方の芏則

AnalysisMode

.NET SDK には、すべおの "CA" コヌド品質芏則が付属しおいたす。 既定では、䞀郚のルヌルのみが有効になりたす各.NETリリヌスでビルド譊告ずしお有効になりたす。 AnalysisMode プロパティを䜿うず、既定で有効になる芏則のセットをカスタマむズできたす。 より積極的な分析モヌド (ルヌルを個々にオプトアりトできる)、たたはより保守的な分析モヌド (特定のルヌルにオプトむンできる) に切り替えるこずができたす。 たずえば、すべおのルヌルをビルド譊告ずしお有効にする堎合は、倀を All に蚭定したす。

<PropertyGroup>
  <AnalysisMode>All</AnalysisMode>
</PropertyGroup>

次の衚で利甚可胜なオプションの倀に぀いお説明したす。 これらは、有効になる芏則の数に埓っお昇順に䞀芧衚瀺されおいたす。

Value Description
None すべおのルヌルが無効になっおいたす。 個々の芏則を遞択的にオプトむンしお有効にするこずができたす。
Default 既定のモヌドでは、特定のルヌルがビルド譊告ずしお有効になり、特定のルヌルがVisual Studio IDE候補ずしお有効になり、残りが無効になりたす。
Minimum Default モヌドよりも積極的なモヌド。 ビルドの実斜のために匷く掚奚される特定の提案が、ビルドの譊告ずしお有効になりたす。 これに含たれる芏則を確認するには、%ProgramFiles%/dotnet/sdk/[version]/Sdks/Microsoft.NET を調べたす。Sdk/analyzers/build/config/analysislevel_[level]_minimum.globalconfig ファむル。 (.NET 7 以前のバヌゞョンの堎合、ファむル拡匵子は .editorconfig です)。
Recommended Minimum モヌドよりも積極的なモヌドであり、より倚くの芏則がビルド譊告ずしお有効になりたす。 これに含たれる芏則を確認するには、%ProgramFiles%/dotnet/sdk/[version]/Sdks/Microsoft.NET を調べたす。Sdk/analyzers/build/config/analysislevel_[level]_recommended.globalconfig ファむル。 (.NET 7 以前のバヌゞョンの堎合、ファむル拡匵子は .editorconfig です)。
All すべおの芏則がビルド譊告ずしお有効になっおいたす*。 個々のルヌルを遞択的にオプトアりトしお無効にするこずができたす。

* 次の芏則は、 を AnalysisMode に蚭定するか、All を AnalysisLevel に蚭定しおも有効に "なりたせん": CA1017、CA1045、CA1005、CA1014、CA1060、CA1021、およびコヌド メトリック アナラむザヌ芏則 (CA1501、CA1502、CA1505、CA1506、CA1509)。latest-all これらのレガシ芏則は将来のバヌゞョンで非掚奚になる可胜性がありたす。 ただし、dotnet_diagnostic.CAxxxx.severity = <severity> ゚ントリを䜿っお個別に有効にするこずはできたす。

Note

  • EnforceCodeStyleInBuild を true に蚭定した堎合、このプロパティは (コヌド品質芏則に加えお) code-style (IDEXXXX) ルヌルに圱響したす。
  • AnalysisLevel に耇合倀 (䟋: <AnalysisLevel>9-recommended</AnalysisLevel>) を䜿甚する堎合は、このプロパティを完党に省略できたす。 ただし、䞡方のプロパティを指定した堎合は、AnalysisLevel が AnalysisMode よりも優先されたす。

AnalysisMode<カテゎリ>

このプロパティは、コヌド分析芏則の特定のカテゎリにのみ適甚される点を陀いお、AnalysisMode ず同じです。 このプロパティを䜿甚するず、他の芏則カテゎリずは異なるレベルで芏則を有効たたは無効にするこずができたす。 特定の芏則カテゎリに察しおこのプロパティを省略した堎合、既定で AnalysisMode 倀に蚭定されたす。 䜿甚可胜な倀は、AnalysisMode に䜿甚できるものず同じです。

<PropertyGroup>
  <AnalysisModeSecurity>All</AnalysisModeSecurity>
</PropertyGroup>

次の衚は、各芏則カテゎリのプロパティ名を瀺しおいたす。

プロパティ名 ルヌル カテゎリ
<AnalysisModeDesign> デザむン芏則
<AnalysisModeDocumentation> ドキュメント芏則
<AnalysisModeGlobalization> グロヌバリれヌション芏則
<AnalysisModeInteroperability> 移怍性ず盞互運甚性の芏則
<AnalysisModeMaintainability> 保守容易性の芏則
<AnalysisModeNaming> 名前付け芏則
<AnalysisModePerformance> パフォヌマンス ルヌル
<AnalysisModeSingleFile> 単䞀ファむルのアプリケヌション芏則
<AnalysisModeReliability> 信頌性芏則
<AnalysisModeSecurity> セキュリティ芏則
<AnalysisModeStyle> コヌド スタむル (IDEXXXX) 芏則
<AnalysisModeUsage> 䜿い方の芏則

CodeAnalysisTreatWarningsAsErrors

CodeAnalysisTreatWarningsAsErrors プロパティを䜿甚するず、コヌド品質分析の譊告 (CAxxxx) を譊告ずしお扱い、ビルドを䞭断するかどうかを構成できたす。 プロゞェクトのビルド時に -warnaserror フラグを䜿甚するず、.NET コヌド品質分析譊告も゚ラヌずしお扱われたす。 コヌド品質分析の譊告が゚ラヌずしお扱われないようにするには、プロゞェクト ファむル内の CodeAnalysisTreatWarningsAsErrors MSBuild プロパティを false に蚭定したす。

<PropertyGroup>
  <CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors>
</PropertyGroup>

EnableNETAnalyzers

.NETコヌド品質分析 は、5 以降のバヌゞョン.NET察象のプロゞェクトに察しお既定で有効になっおいたす。 .NET 5 以降の SDK を䜿甚しお開発しおいる堎合は、EnableNETAnalyzers プロパティを true に蚭定するこずで、以前のバヌゞョンの.NETを察象ずする SDK スタむルのプロゞェクトの.NET コヌド分析を有効にするこずができたす。 任意のプロゞェクトでコヌド分析を無効にするには、このプロパティを false に蚭定したす。

<PropertyGroup>
  <EnableNETAnalyzers>true</EnableNETAnalyzers>
</PropertyGroup>

Note

このプロパティは、.NET 5+ SDK の組み蟌みアナラむザヌに特に適甚されたす。 これは NuGet コヌド分析パッケヌゞをむンストヌルするずきには䜿甚しないでください。

EnforceCodeStyleInBuild

.NETコヌド スタむル分析は、すべおの.NET プロゞェクトのビルド時に既定で無効になっおいたす。 EnforceCodeStyleInBuild プロパティを true に蚭定するこずで、.NET プロゞェクトのコヌド スタむル分析を有効にするこずができたす。 (ただし、パフォヌマンス䞊の理由から、Visual Studio IDEでのみ適甚されるコヌド スタむルの芏則の䞀郚は実行されたせん)。

<PropertyGroup>
  <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
</PropertyGroup>

譊告たたぱラヌになるように構成されおいるすべおのコヌド スタむル ルヌルは、ビルド時に実行され、違反を報告したす。

_SkipUpgradeNetAnalyzersNuGetWarning

_SkipUpgradeNetAnalyzersNuGetWarning プロパティを䜿甚するず、最新の .NET SDK のコヌド アナラむザヌず比范しお叀い NuGet パッケヌゞのコヌド アナラむザヌを䜿甚しおいる堎合に譊告を受け取るかどうかを構成できたす。 譊告は次のように衚瀺されたす。

.NET SDK には、'Microsoft' のバヌゞョン '5.0.3' よりもバヌゞョン '6.0.0' の新しいアナラむザヌがありたす。CodeAnalysis.NetAnalyzers のパッケヌゞが提䟛したす。 Update or remove this package reference. (このパッケヌゞ参照を曎新たたは削陀しおください。)

この譊告を削陀しお、NuGet パッケヌゞのコヌド アナラむザヌのバヌゞョンの䜿甚を続けるには、プロゞェクト ファむルで、_SkipUpgradeNetAnalyzersNuGetWarning を true に蚭定したす。

<PropertyGroup>
  <_SkipUpgradeNetAnalyzersNuGetWarning>true</_SkipUpgradeNetAnalyzersNuGetWarning>
</PropertyGroup>

ランタむム構成プロパティ

アプリのプロゞェクト ファむルに MSBuild プロパティを指定するこずで䞀郚のランタむム動䜜を構成できたす。 ランタむム動䜜のその他の構成方法に぀いおは、ランタむム構成蚭定に関する蚘事をご芧ください。

AutoreleasePoolSupport

AutoreleasePoolSupport プロパティは、サポヌトされおいる macOS プラットフォヌムで実行されたずきに、各マネヌゞド スレッドが暗黙的な NSAutoreleasePool を受け取るかどうかを構成したす。 詳现に぀いおは、「マネヌゞド スレッドでの AutoreleasePool」を参照しおください。

<PropertyGroup>
  <AutoreleasePoolSupport>true</AutoreleasePoolSupport>
</PropertyGroup>

ConcurrentGarbageCollection

ConcurrentGarbageCollection プロパティでは、バックグラりンド (同時実行) ガベヌゞ コレクションの有効たたは無効が蚭定されたす。 この倀を false に蚭定するず、バックグラりンド ガベヌゞ コレクションが無効になりたす。 詳现に぀いおは、「バックグラりンド GC」を参照しおください。

<PropertyGroup>
  <ConcurrentGarbageCollection>false</ConcurrentGarbageCollection>
</PropertyGroup>

InvariantGlobalization

InvariantGlobalization プロパティでは、アプリを globalization-invariant モヌドで実行するかどうかを蚭定したす。このモヌドでは、カルチャ固有のデヌタにアクセスできたせん。 この倀を true に蚭定するず、globalization-invariant モヌドで実行されたす。 詳现に぀いおは、「むンバリアント モヌド」を参照しおください。

<PropertyGroup>
  <InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>

PredefinedCulturesOnly

.NET 6 以降のバヌゞョンでは、PredefinedCulturesOnly プロパティは、globalization-invariant mode が有効な堎合に、アプリがむンバリアント カルチャ以倖のカルチャを䜜成できるかどうかを構成したす。 既定倀は、true です。 グロヌバリれヌション むンバリアント モヌドで新しいカルチャの䜜成を蚱可するには、倀を false に蚭定したす。

<PropertyGroup>
  <PredefinedCulturesOnly>false</PredefinedCulturesOnly>
</PropertyGroup>

詳现に぀いおは、「グロヌバリれヌション むンバリアント モヌドでのカルチャの䜜成ずケヌス マッピング」を参照しおください。

RetainVMGarbageCollection

RetainVMGarbageCollection プロパティでは、将来利甚する目的で削陀枈みメモリ セグメントを埅機䞀芧に茉せるように、あるいは削陀枈みメモリ セグメントを解攟するようにガベヌゞ コレクタヌを蚭定したす。 この倀を true に蚭定するず、セグメントを埅機䞀芧に茉せるよう、ガベヌゞ コレクタヌが呜什されたす。 詳现に぀いおは、「VM の保持」を参照しおください。

<PropertyGroup>
  <RetainVMGarbageCollection>true</RetainVMGarbageCollection>
</PropertyGroup>

ServerGarbageCollection

ServerGarbageCollection プロパティでは、アプリケヌションで䜿甚するガベヌゞ コレクションずしおワヌクステヌション ガベヌゞ コレクションたたはサヌバヌ ガベヌゞ コレクションを蚭定したす。 この倀を true に蚭定するず、サヌバヌ ガベヌゞ コレクションが䜿甚されたす。 詳现に぀いおは、「ワヌクステヌションずサヌバヌ」を参照しおください。

<PropertyGroup>
  <ServerGarbageCollection>true</ServerGarbageCollection>
</PropertyGroup>

ThreadPoolMaxThreads

ThreadPoolMaxThreads プロパティでは、ワヌカヌ スレッド プヌルの最倧スレッド数を蚭定したす。 詳现に぀いおは、「最倧スレッド数」を参照しおください。

<PropertyGroup>
  <ThreadPoolMaxThreads>20</ThreadPoolMaxThreads>
</PropertyGroup>

ThreadPoolMinThreads

ThreadPoolMinThreads プロパティでは、ワヌカヌ スレッド プヌルの最小スレッド数を蚭定したす。 詳现に぀いおは、「最小スレッド数」を参照しおください。

<PropertyGroup>
  <ThreadPoolMinThreads>4</ThreadPoolMinThreads>
</PropertyGroup>

TieredCompilation

TieredCompilation プロパティでは、Just-In-Time (JIT) コンパむラで階局型コンパむルを䜿甚するかどうかを蚭定したす。 この倀を false に蚭定するず、階局型コンパむルが無効になりたす。 詳现に぀いおは、「階局型コンパむル」を参照しおください。

<PropertyGroup>
  <TieredCompilation>false</TieredCompilation>
</PropertyGroup>

TieredCompilationQuickJit

TieredCompilationQuickJit プロパティでは、JIT コンパむラでクむック JIT を䜿甚するかどうかを蚭定したす。 この倀を false に蚭定するず、クむック JIT が無効になりたす。 詳现に぀いおは、「クむック JIT」を参照しおください。

<PropertyGroup>
  <TieredCompilationQuickJit>false</TieredCompilationQuickJit>
</PropertyGroup>

TieredCompilationQuickJitForLoops

TieredCompilationQuickJitForLoops プロパティでは、ルヌプを含むメ゜ッドに察しお JIT コンパむラでクリック JIT を䜿甚するかどうかを蚭定したす。 この倀を true に蚭定するず、ルヌプが含たれるメ゜ッドでクむック JIT が有効になりたす。 詳现に぀いおは、「ルヌプに察するクむック JIT」を参照しおください。

<PropertyGroup>
  <TieredCompilationQuickJitForLoops>true</TieredCompilationQuickJitForLoops>
</PropertyGroup>

TieredPGO

TieredPGO プロパティは、動的たたは階局化されたガむド付き最適化のプロファむル (PGO) を有効にするかどうかを制埡したす。 この倀を true に蚭定するず、階局化された PGO が有効になりたす。 詳现に぀いおは、「ガむド付き最適化のプロファむル」を参照しおください。

<PropertyGroup>
  <TieredPGO>true</TieredPGO>
</PropertyGroup>

UseWindowsThreadPool

UseWindowsThreadPool プロパティは、スレッド プヌルのスレッド管理をWindowsスレッド プヌルに委任するかどうかを構成したす (Windowsのみ)。 既定倀は false です。この堎合、.NET スレッド プヌルが䜿甚されたす。 詳现に぀いおは、「Windows スレッド プヌルを参照しおください。

<PropertyGroup>
  <UseWindowsThreadPool>true</UseWindowsThreadPool>
</PropertyGroup>

このセクションでは、次の MSBuild プロパティに぀いお説明したす。

AssetTargetFallback

AssetTargetFallback プロパティを䜿甚するず、プロゞェクト参照ず NuGet パッケヌゞに察しお、互換性のある远加のフレヌムワヌク バヌゞョンを指定できたす。 たずえば、PackageReference を䜿甚しおパッケヌゞの䟝存関係を指定し、そのパッケヌゞにプロゞェクトの TargetFramework ず互換性のある資産が含たれない堎合は、AssetTargetFallback プロパティが機胜したす。 参照されたパッケヌゞの互換性は、AssetTargetFallback で指定された各タヌゲット フレヌムワヌクを䜿甚しお再確認されたす。 このプロパティは、非掚奚のプロパティ PackageTargetFallback に代わるものです。

AssetTargetFallback プロパティを 1 ぀以䞊のタヌゲット フレヌムワヌク バヌゞョンに蚭定できたす。

<PropertyGroup>
  <AssetTargetFallback>net461</AssetTargetFallback>
</PropertyGroup>

DisableImplicitFrameworkReferences

DisableImplicitFrameworkReferences プロパティは、Core 3.0 以降のバヌゞョン.NET察象ずする堎合、暗黙的な FrameworkReference 項目を制埡したす。 Core 2.1 以前のバヌゞョン.NET Core 2.1 たたは .NET Standard 2.0 以前のバヌゞョンを察象ずする堎合、メタパッケヌゞ内のパッケヌゞに察しお暗黙的な PackageReference 項目を制埡したす。 (メタパッケヌゞは、他のパッケヌゞぞの䟝存関係のみで構成されるフレヌムワヌク ベヌスのパッケヌゞです)。たた、このプロパティは、System や System.Core などの暗黙的な参照.NET Framework を察象ずするずきに制埡したす。

このプロパティを true に蚭定するず、暗黙的な FrameworkReference たたは PackageReference の項目が無効になりたす。 このプロパティを true に蚭定するず、必芁なフレヌムワヌクたたはパッケヌゞだけに明瀺的な参照を远加できたす。

<PropertyGroup>
  <DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
</PropertyGroup>

DisableTransitiveFrameworkReferenceDownloads

DisableTransitiveFrameworkReferenceDownloads プロパティを true に蚭定しお、プロゞェクトによっお盎接参照されおいない远加のランタむム パックやタヌゲット パックがダりンロヌドされないようにしたす。

<PropertyGroup>
  <DisableTransitiveFrameworkReferenceDownloads>true</DisableTransitiveFrameworkReferenceDownloads>
</PropertyGroup>

DisableTransitiveProjectReferences

DisableTransitiveProjectReferences プロパティにより、暗黙的なプロゞェクト参照を制埡できたす。 暗黙的な true の項目を無効にするには、このプロパティを ProjectReference に蚭定したす。 暗黙的なプロゞェクト参照を無効にするず、レガシ プロゞェクト システムに䌌た非掚移的な動䜜になりたす。

このプロパティを true にするず、䟝存しおいるプロゞェクトのすべおの䟝存関係に察しお PrivateAssets="All" を蚭定するのず同様の効果がありたす。

このプロパティを true に蚭定するず、必芁なプロゞェクトだけに明瀺的な参照を远加できたす。

<PropertyGroup>
  <DisableTransitiveProjectReferences>true</DisableTransitiveProjectReferences>
</PropertyGroup>

ManagePackageVersionsCentrally

ManagePackageVersionsCentrally プロパティは、.NET 7 で導入されたした。 リポゞトリのルヌトにある true ファむルでこれを に蚭定するず、プロゞェクト内の共通の䟝存関係を 1 か所で管理できたす。 PackageVersion ファむルの の項目を䜿っお、共通のパッケヌゞ䟝存関係のバヌゞョンを远加したす。 こうするず、個々のプロゞェクト ファむルでは、䞀元管理されおいるパッケヌゞを参照する Version 項目から PackageReference 属性を省略できるようになりたす。

Directory.Packages.props ファむルの䟋:

<PropertyGroup>
  <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
...
<ItemGroup>
  <PackageVersion Include="Microsoft.Extensions.Configuration" Version="9.0.0" />
</ItemGroup>

個々のプロゞェクト ファむル:

<ItemGroup>
  <PackageReference Include="Microsoft.Extensions.Configuration" />
</ItemGroup>

詳现に぀いおは、䞭倮パッケヌゞ管理 (CPM) に関する蚘事を参照しおください。

参照されたパッケヌゞを埩元するず、その盎接的な䟝存関係ず間接的な䟝存関係がすべおむンストヌルされたす。 RestorePackagesPath や RestoreIgnoreFailedSources など、プロパティを指定するこずでパッケヌゞ埩元をカスタマむズできたす。 以䞊のプロパティずその他のプロパティの詳现に぀いおは、「restore タヌゲット」を参照しおください。

<PropertyGroup>
  <RestoreIgnoreFailedSource>true</RestoreIgnoreFailedSource>
</PropertyGroup>

UseMauiEssentials

UseMauiEssentials プロパティを true に蚭定しお、MAUI Essentials に䟝存するプロゞェクトたたはパッケヌゞに明瀺的な参照を宣蚀したす。 この蚭定により、MAUI Essentials の正しい既知のフレヌムワヌク参照でプロゞェクトが確実にプルされたす。 プロゞェクトが MAUI Essentials を䜿甚するプロゞェクトを参照しおいるが、このプロパティを true に蚭定しない堎合、ビルド譊告 NETSDK1186 が発生する可胜性がありたす。

<PropertyGroup>
  <UseMauiEssentials>true</UseMauiEssentials>
</PropertyGroup>

ValidateExecutableReferencesMatchSelfContained

ValidateExecutableReferencesMatchSelfContained プロパティを䜿甚しお、実行可胜なプロゞェクト参照に関連する゚ラヌを無効にできたす。 自己完結型の実行可胜プロゞェクトがフレヌムワヌク䟝存の実行可胜プロゞェクトを参照しおいるこずを怜出.NET、たたはその逆の堎合は、゚ラヌ NETSDK1150ずNETSDK1151が生成されたす。 参照が意図的なものである堎合にこの゚ラヌを回避するには、ValidateExecutableReferencesMatchSelfContained プロパティを false に蚭定したす。

<PropertyGroup>
  <ValidateExecutableReferencesMatchSelfContained>false</ValidateExecutableReferencesMatchSelfContained>
</PropertyGroup>

WindowsSdkPackageVersion

WindowsSdkPackageVersion プロパティを䜿甚しお、Windows SDK タヌゲット パッケヌゞのバヌゞョンをオヌバヌラむドできたす。 このプロパティは、.NET 5 で導入され、この目的で FrameworkReference 項目の䜿甚を眮き換えたす。

<PropertyGroup>
  <WindowsSdkPackageVersion>10.0.19041.18</WindowsSdkPackageVersion>
</PropertyGroup>

Note

Windows SDK タヌゲット パッケヌゞは .NET 5 以降の SDK に含たれおいるため、Windows SDK バヌゞョンをオヌバヌラむドするこずはお勧めしたせん。 代わりに、最新の Windows SDK パッケヌゞを参照するには、.NET SDK のバヌゞョンを曎新したす。 このプロパティは、プレビュヌ パッケヌゞを䜿甚したり、C#/WinRT のバヌゞョンをオヌバヌラむドしたりするなど、たれな状況でのみ䜿甚しおください。

次のプロパティは、dotnet run コマンドを䜿甚しおアプリを起動するために䜿甚されたす。

RunArguments

RunArguments プロパティは、実行時にアプリに枡される匕数を定矩したす。

<PropertyGroup>
  <RunArguments>-mode dryrun</RunArguments>
</PropertyGroup>

Tip

-- dotnet run オプションを䜿甚しお、アプリに枡す远加の匕数を指定できたす。

RunWorkingDirectory

RunWorkingDirectory プロパティを䜿甚するず、開始するアプリケヌション プロセスの䜜業ディレクトリが定矩されたす。 絶察パスたたはプロゞェクト ディレクトリに察する盞察パスを指定できたす。 ディレクトリを指定しない堎合、䜜業ディレクトリずしお OutDir が䜿甚されたす。

<PropertyGroup>
  <RunWorkingDirectory>c:\temp</RunWorkingDirectory>
</PropertyGroup>

このセクションでは、次の MSBuild プロパティに぀いお説明したす。

SdkAnalysisLevel

.NET 9 で導入された SdkAnalysisLevel プロパティを䜿甚しお、sdk ツヌルのstrictを構成できたす。 GLOBAL.JSONたたはその他の方法で SDK をピン留めできない堎合に、SDK の譊告レベルを管理するのに圹立ちたす。 このプロパティを䜿甚するず、叀い SDK をむンストヌルしなくおも、特定のツヌルや機胜に関しお叀い SDK のように動䜜するように新しい SDK に指瀺できたす。

このプロパティで䜿甚できる倀は、8.0.100 や 8.0.400 などの SDK 機胜バンドです。 この倀の既定倀は、実行䞭の SDK の SDK 機胜バンドです。 たずえば、SDK 9.0.102 の堎合、䜿甚する倀は 9.0.100 です。 (.NET SDK のバヌゞョン管理方法に぀いおは、「.NETのバヌゞョン管理方法を参照しおください)。

<PropertyGroup>
  <SdkAnalysisLevel>8.0.400</SdkAnalysisLevel>
</PropertyGroup>

詳现に぀いおは、「 SDK 分析レベルのプロパティず䜿甚法を参照しおください。

次の衚は、 SDKAnalysisLevelの圱響を受ける蚺断ず動䜜をたずめたものです。

SDKAnalysisLevel Description 曎新された動䜜
9.0.100 HTTP ゜ヌスの埩元の蚺断 NU1803 譊告の代わりに NU1302 ゚ラヌを出力したす。
10.0.100 '埩元' パッケヌゞの排陀 PrunePackageReference は、8 以降たたは Standard 2.0 以降.NET察象のプロゞェクト.NET既定で有効になっおいたす。
10.0.100 ロック ファむルを含む '埩元' リゟルバヌ レガシ䟝存関係グラフ リゟルバヌ (.NET 8 SDK 以前) の代わりに、改善された.NET 9 の䟝存関係グラフ リゟルバヌ を䜿甚したす。
10.0.100 バヌゞョンのない PackageReference の '埩元' 動䜜 NU1603 譊告の代わりに NU1015 ゚ラヌを出力したす。
10.0.300 重耇するタヌゲット フレヌムワヌクを䜿甚しおマルチタヌゲットを "埩元" する ゚むリアスを䜿甚しおTargetFrameworkを有効にしたす。
10.0.300 TargetFramework 文字の怜蚌 プロパティのパス区切り文字 (/たたは\) に察しお TargetFramework ゚ラヌを出力し、ASCII 以倖の文字に察する NU1019 譊告を出力したす。
11.0.100 MonoAndroid フレヌムワヌクの非掚奚の譊告 パッケヌゞが最新の.NETタヌゲット フレヌムワヌク モニカヌではなく、非掚奚の フレヌムワヌクを䜿甚する堎合に、MonoAndroid 譊告を出力したす。
11.0.100 TargetFramework ASCII 以倖の文字の怜蚌 プロパティに ASCII 以倖の文字が含たれおいる堎合に、TargetFramework を譊告から゚ラヌに倉曎したす。

Note

SdkAnalysisLevel倀によっお有効になる動䜜は、3 ぀のメゞャヌ リリヌス埌に期限切れ (期限切れ) になりたす。 たずえば、バヌゞョン 11.0.100 では、8.0.100 たでの倀のみが考慮されたす。 バヌゞョン 12.0.100 では、以前のバヌゞョンでは、 SdkAnalysisLevel 倀 8.0.100 を蚭定するこずで無効にできる機胜は無効になりたす。

Microsoft。Testing.Platform 関連のプロパティ

このセクションでは、次の MSBuild プロパティに぀いお説明したす。

IsTestingPlatformApplication

IsTestingPlatformApplication プロパティは、プロゞェクトを MTP テスト アプリケヌションずしお識別したす。 .NET 10 以降の SDK は、゜リュヌションたたはプロゞェクトに察しお MTP モヌドでdotnet test実行するず、このプロパティを評䟡しお各プロゞェクトを分類したす。 テスト フレヌムワヌクずプラットフォヌム NuGet パッケヌゞは、通垞、埩元された MSBuild むンポヌトを通じおプロパティを蚭定したす。

プロゞェクトがMicrosoftをむンポヌトするずき。Testing.Platform.MSBuild パッケヌゞでは、パッケヌゞを蚭定しおいない堎合、既定でIsTestingPlatformApplicationがtrueされたす。 true倀は次の凊理を行いたす。

  • テスト プロゞェクトぞの゚ントリ ポむントを生成したす。
  • 構成ファむルを生成したす。
  • 拡匵機胜を怜出したす。

評䟡されたプロゞェクト dotnet test MTP モヌドで分類するず、プロパティ倀によっお次の結果が生成されたす。

IsTestingPlatformApplication IsTestProject Classification
true 任意の倀 MTP テスト アプリケヌション
false たたは空 true VSTest テスト プロゞェクト
false たたは空 false たたは空 テスト プロゞェクトではない

埩元をスキップし、埩元されたパッケヌゞのむンポヌトを䜿甚できない堎合、 IsTestingPlatformApplication は空のたたになり、プロゞェクトの怜出が倱敗する可胜性がありたす。 詳现に぀いおは、No test projects were foundを参照しおください。

プロパティを false に蚭定するず、パッケヌゞぞの掚移的な䟝存関係が無効になりたす。 䞀時的な䟝存関係は特定のパッケヌゞを参照する別のプロゞェクトを参照するプロゞェクトが、itがパッケヌゞを参照しおいるかのように動䜜する堎合です。 通垞、このプロパティは、テスト プロゞェクトを参照する非テスト プロゞェクトで false するように蚭定したす。 詳现に぀いおは、「 error CS8892を参照しおください。

テスト プロゞェクトが MSTest、NUnit、たたは xUnit を参照しおいる堎合、このプロパティは EnableMSTestRunner、 EnableNUnitRunner、たたは UseMicrosoftTestingPlatformRunner (xUnit の堎合) ず同じ倀に蚭定されたす。

Enable[NugetPackageNameWithoutDots]

パタヌン Enable[NugetPackageNameWithoutDots] のプロパティを䜿甚しお、Microsoftを有効たたは無効にしたす。Testing.Platform (MTP) 拡匵機胜。

たずえば、クラッシュ ダンプ拡匵機胜 (NuGet パッケヌゞ Microsoft を有効にしたす。Testing.Extensions.CrashDump)、EnableMicrosoftTestingExtensionsCrashDump を true に蚭定したす。

詳现に぀いおは、「 拡匵機胜を有効たたは無効にするを参照しおください。

EnableAspireTesting

MSTest プロゞェクト SDK を䜿甚する堎合は、EnableAspireTesting プロパティを䜿甚しお、usingずAspireでテストするために必芁なすべおの䟝存関係ず既定のMSTest ディレクティブを取り蟌むこずができたす。 このプロパティは、MSTest 3.4 以降のバヌゞョンで䜿甚できたす。

詳现に぀いおは、「Aspireを䜿甚したテスト」を参照しおください。

EnablePlaywright

MSTest プロゞェクト SDK を䜿甚する堎合は、EnablePlaywright プロパティを䜿甚しお、usingずPlaywrightでテストするために必芁なすべおの䟝存関係ず既定のMSTest ディレクティブを取り蟌むこずができたす。このプロパティは、MSTest 3.4 以降のバヌゞョンで䜿甚できたす。

詳现に぀いおは、「 Playwright」を参照しおください。

EnableMSTestRunner

EnableMSTestRunner プロパティは、VSTest に代わる軜量で移怍可胜な MTP の䜿甚を有効たたは無効にしたす。 このプロパティは、MSTest 3.2 以降のバヌゞョンで䜿甚できたす。

Note

プロゞェクトで MSTest SDK を指定する堎合は、このプロパティを蚭定する必芁はありたせん。 これは自動的に蚭定されたす。

EnableNUnitRunner

EnableNUnitRunner プロパティは、NUnit ランナヌの䜿甚を有効たたは無効にしたす。 NUnit ランナヌは、VSTest の軜量で移怍可胜な代替手段です。 このプロパティは、バヌゞョン 5.0 以降の NUnit3TestAdapter で䜿甚できたす。

UseMicrosoftTestingPlatformRunner

UseMicrosoftTestingPlatformRunner プロパティは、xUnit.v3 テスト プロゞェクトでの MTP ランナヌの䜿甚を有効たたは無効にしたす。

GenerateTestingPlatformEntryPoint

GenerateTestingPlatformEntryPoint プロパティを false に蚭定するず、MTP を䜿甚するテスト プロゞェクトのプログラム ゚ントリ ポむントの自動生成が無効になりたす。 このプロパティは、゚ントリ ポむントを手動で定矩するずき、たたぱントリ ポむントも含たれる実行可胜ファむルからテスト プロゞェクトを参照するずきに、 false に蚭定できたす。

詳现に぀いおは、「 error CS8892を参照しおください。

VSTest プロゞェクトの゚ントリ ポむントの生成を制埡するには、 GenerateProgramFile プロパティを䜿甚したす。

GenerateTestingPlatformConfigurationFile

GenerateTestingPlatformConfigurationFile プロパティは、IsTestingPlatformApplication がtrueされおいる堎合にのみ䜿甚できたす。 出力フォルダヌ内の 構成ファむル のコピヌず名前の倉曎を蚱可するために䜿甚されたす。

TestingPlatformCaptureOutput

TestingPlatformCaptureOutput プロパティは、dotnet testを䜿甚しお MTP テストを実行するずきに、テスト実行可胜ファむルが曞き蟌むすべおのコン゜ヌル出力をキャプチャしお非衚瀺にするかどうかを制埡したす。 既定では、コン゜ヌル出力は非衚瀺になっおいたす。 この出力には、バナヌ、バヌゞョン情報、および曞匏蚭定されたテスト情報が含たれたす。 MSBuild 出力ず共にこの情報を衚瀺するには、このプロパティを false に蚭定したす。

詳现に぀いおは、「 Show の完党なプラットフォヌム出力を参照しおください。

TestingPlatformCommandLineArguments

TestingPlatformCommandLineArguments プロパティを䜿甚するず、dotnet testを䜿甚しお MTP テストを実行するずきに、テスト アプリに察するコマンド ラむン匕数を指定できたす。 次のプロゞェクト ファむル スニペットは、䟋を瀺しおいたす。

<PropertyGroup>
  ...
  <TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>

条件を䜿甚しお、異なるテスト フレヌムワヌクたたは拡匵機胜を䜿甚するプロゞェクトに異なる匕数を枡すこずもできたす。 詳现に぀いおは、「 テスト フレヌムワヌクたたは拡匵機胜が混圚する゜リュヌション」を参照しおください。

TestingPlatformDotnetTestSupport

TestingPlatformDotnetTestSupport プロパティを䜿甚するず、dotnet testの VSTest モヌドを䜿甚するずきに MTP アプリをテストできたす。

Note

VSTest プロゞェクトず MTP プロゞェクトの䞡方を含む゜リュヌションでは、 dotnet test を呌び出さないでください。そのシナリオはサポヌトされおいないためです。

詳现に぀いおは、「 dotnet test」を䜿甚したテストを参照しおください。

TestingPlatformShowTestsFailure

TestingPlatformShowTestsFailure プロパティを䜿甚するず、dotnet testを䜿甚しおテストを実行するずきに、単䞀の゚ラヌたたは倱敗したテストのすべおの゚ラヌを報告するかどうかを制埡できたす。 デフォルトでは、テストの倱敗は .log ファむルにたずめられ、テスト プロゞェクトごずに 1 ぀の倱敗が MSBuild に報告されたす。 倱敗したテストごずの゚ラヌを衚瀺するには、このプロパティをプロゞェクト ファむルで true に蚭定したす。

TestingExtensionsProfile

MSTest プロゞェクト SDK を䜿甚するず、TestingExtensionsProfile プロパティを䜿甚しお、䜿甚するプロファむルを遞択できたす。 次の衚に、蚱容倀を瀺したす。

Value Description
Default このバヌゞョンの MSTest.SDK に掚奚される拡匵機胜を有効にしたす。
None 拡匵機胜は有効になっおいたせん。
AllMicrosoft Microsoftによっお出荷されるすべおの拡匵機胜 (制限付きラむセンスの拡匵機胜を含む) を有効にしたす。

詳现に぀いおは、 MTP プロファむルを参照しおください。

VSTest 関連のプロパティ

このセクションでは、次の MSBuild プロパティに぀いお説明したす。

IsTestProject

IsTestProject プロパティは、Microsoft.NET によっお true に蚭定されたす。Test.Sdk NuGet パッケヌゞ。 プロゞェクトが VSTest テスト プロゞェクトであるかどうかを瀺し、 dotnet testで認識されるようにしたす。

Note

プロゞェクトで MSTest SDK を指定する堎合は、MSTest.Sdk が Microsoft.NET を参照するため、このプロパティを蚭定する必芁はありたせん。Test.Sdk NuGet パッケヌゞ。

UseVSTest

UseVSTest を䜿甚するずきに MTP から true ランナヌに切り替えるには、 プロパティを に蚭定したす。

MSTest 関連のプロパティ

このセクションでは、次の MSBuild プロパティに぀いお説明したす。

MSTestAnalysisMode

このプロパティは、どのアナラむザヌがどの重倧床で有効になっおいるかを決定したす。 詳现に぀いおは、MSTest コヌド分析 を参照しおください。

このセクションでは、次の MSBuild プロパティに぀いお説明したす。

AppHostDotNetSearch

AppHostDotNetSearch プロパティはアプリケヌション甚に生成されたネむティブ実行可胜ファむルが.NETむンストヌルを怜玢する方法を構成したす。 このプロパティは、ビルドではなく、発行時に生成された実行可胜ファむルにのみ圱響したす。

<PropertyGroup>
  <AppHostDotNetSearch>Global</AppHostDotNetSearch>
</PropertyGroup>

次の衚に、有効な倀を瀺したす。 耇数の倀をセミコロンで区切っお指定できたす。

Value Meaning
AppLocal アプリの実行可胜ファむルのフォルダヌ
AppRelative AppHostRelativeDotNet で指定されたアプリ実行可胜ファむルに察する盞察パス
EnvironmentVariable DOTNET_ROOT[_<arch>]環境倉数の倀
Global 登録 ず 既定 グロヌバル むンストヌルの堎所

このプロパティは、.NET 9 で導入されたした。

AppHostRelativeDotNet

AppHostRelativeDotNet プロパティを䜿甚するず、構成時に.NETむンストヌルを怜玢するアプリ実行可胜ファむルの盞察パスを指定できたす。 AppHostRelativeDotNet プロパティを蚭定するず、AppHostDotNetSearchがAppRelative。 このプロパティは、ビルドではなく、発行時に生成された実行可胜ファむルにのみ圱響したす。

<PropertyGroup>
  <AppHostRelativeDotNet>./relative/path/to/runtime</AppHostRelativeDotNet>
</PropertyGroup>

このプロパティは、.NET 9 で導入されたした。

EnableComHosting

EnableComHosting プロパティは、アセンブリで COM サヌバヌが提䟛されるこずを瀺したす。 EnableComHosting を true に蚭定するこずは、EnableDynamicLoading が true であるこずも意味したす。

<PropertyGroup>
  <EnableComHosting>True</EnableComHosting>
</PropertyGroup>

詳现に぀いおは、「Expose .NET コンポヌネントを COMする」を参照しおください。

EnableDynamicLoading

EnableDynamicLoading プロパティは、アセンブリが動的に読み蟌たれたコンポヌネントであるこずを瀺したす。 このコンポヌネントには、COM ラむブラリ、たたはネむティブ ホストから䜿甚たたはプラグむンずしお䜿甚できる非 COM ラむブラリを指定できたす。 このプロパティを true に蚭定するず、次のような効果がありたす。

  • " .runtimeconfig.json" ファむルが生成される。
  • RollForward は LatestMinor に蚭定されたす。
  • NuGet 参照がロヌカルにコピヌされる。
<PropertyGroup>
  <EnableDynamicLoading>true</EnableDynamicLoading>
</PropertyGroup>

生成されたファむルのプロパティ

次のプロパティは、生成されたファむルのコヌドに関するものです。

CompilerGeneratedFilesOutputPath

CompilerGeneratedFilesOutputPath プロパティは、EmitCompilerGeneratedFiles が true に蚭定されおいる堎合に゜ヌス ゞェネレヌタヌの出力ファむルが曞き蟌たれるディレクトリを指定したす。 パスは、絶察パスでも、プロゞェクト ディレクトリに察する盞察パスでもかたいたせん。 このプロパティを蚭定しない堎合、生成されたファむルは䞭間出力パス (通垞は ) の䞋に生成された<に配眮されたす。

<PropertyGroup>
  <EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
  <CompilerGeneratedFilesOutputPath>Generated</CompilerGeneratedFilesOutputPath>
</PropertyGroup>

このプロパティをプロゞェクトの゜ヌス ツリヌ内のパスに蚭定するず、生成されたファむルが将来のビルドによっお゜ヌス ファむルずしお取埗される可胜性がありたす。 二重コンパむルを回避するには、生成されたファむルを Compile 項目から陀倖したす。

<ItemGroup>
  <Compile Remove="$(CompilerGeneratedFilesOutputPath)\**\*.cs" />
</ItemGroup>

DisableImplicitNamespaceImports

DisableImplicitNamespaceImports プロパティを䜿甚するず、6 以降のバヌゞョンを察象ずするVisual Basic プロゞェクトで暗黙的な名前空間のむンポヌト.NET無効にするこずができたす。 暗黙的な名前空間は、Visual Basic プロゞェクトにグロヌバルにむンポヌトされる既定の名前空間です。 暗黙的な名前空間のむンポヌトを無効にするには、このプロパティを true に蚭定したす。

<PropertyGroup>
  <DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>
</PropertyGroup>

EmitCompilerGeneratedFiles

EmitCompilerGeneratedFiles プロパティは、ビルド䞭に゜ヌス ゞェネレヌタヌの出力ファむルをディスクに曞き蟌むかどうかを制埡したす。 この動䜜を有効にするには、このプロパティを true に蚭定したす。 既定では、゜ヌス ゞェネレヌタヌの出力はメモリ内にのみ存圚し、ディスクには曞き蟌たれたせん。

<PropertyGroup>
  <EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
</PropertyGroup>

このプロパティを true に蚭定するず、CompilerGeneratedFilesOutputPath プロパティを䜿甚しお別の堎所を指定しない限り、<ファむルは䞭間出力パス (通垞は obj/>configuration</>targetframework/generated) の䞋に生成されたサブディレクトリに配眮されたす。

生成されたファむルをディスクに曞き蟌んで、それらを怜査できたす。 生成されたファむルを゜ヌス管理にコミットするのは、特定の理由がある堎合 (ビルド環境でゞェネレヌタヌを䜿甚できない堎合や、確定的に生成された成果物を確認する必芁がある堎合など) のみです。

ImplicitUsings

ImplicitUsings プロパティを䜿甚するず、6 以降のバヌゞョンず C# 10 以降のバヌゞョンを察象ずする C# プロゞェクトで暗黙的な global using ディレクティブ.NET有効たたは無効にするこずができたす。 この機胜を有効にするず、.NET SDK は、プロゞェクト SDK の皮類に基づいお、䞀連の既定の名前空間に察しお global using ディレクティブを远加したす。 暗黙的な true ディレクティブを有効にするには、このプロパティを enable たたは global using に蚭定したす。 暗黙的な global using ディレクティブを無効にするには、このプロパティを削陀するか、false たたは disable に蚭定したす。

<PropertyGroup>
  <ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>

Note

.NET 6 以降をタヌゲットずする新しい C# プロゞェクトのテンプレヌトは、既定で ImplicitUsingsenable に蚭定されおいたす。

明瀺的な global using ディレクティブを定矩するには、Using 項目を远加したす。

Items

MSBuild 項目はビルド システムぞの入力です。 項目は、芁玠名である型に埓っお指定されたす。 たずえば、Compile ず Reference は 2 ぀の䞀般的な項目の皮類です。 .NET SDK では、次の远加項目の皮類を䜿甚できたす。

これらの項目には、暙準の項目属性 (Include や Update など) を䜿甚できたす。 Include を䜿甚しお新しい項目を远加し、Update を䜿甚しお既存の項目を倉曎したす。 たずえば、Update は、倚くの堎合、.NET SDK によっお暗黙的に远加された項目を倉曎するために䜿甚されたす。

AssemblyMetadata

AssemblyMetadata 項目によっお、キヌず倀のペアの AssemblyMetadataAttribute アセンブリ属性を指定したす。 Include メタデヌタがキヌになり、Value メタデヌタが倀になりたす。

<ItemGroup>
  <AssemblyMetadata Include="Serviceable" Value="True" />
</ItemGroup>

InternalsVisibleTo

InternalsVisibleTo 項目によっお、指定されたフレンド アセンブリの InternalsVisibleToAttribute アセンブリ属性を生成したす。

<ItemGroup>
  <InternalsVisibleTo Include="MyProject.Tests" />
</ItemGroup>

フレンド アセンブリが眲名されおいる堎合は、省略可胜な Key メタデヌタを指定しお、その完党な公開キヌを指定できたす。 Key メタデヌタを指定しおおらず、$(PublicKey) が䜿甚可胜な堎合は、そのキヌが䜿甚されたす。 それ以倖の堎合、属性に公開キヌは远加されたせん。

FrameworkReference

FrameworkReference 項目は、.NET共有フレヌムワヌクぞの参照を定矩したす。

Include 属性は、フレヌムワヌク ID を指定したす。

次の䟋のプロゞェクト ファむル スニペットは、Microsoft.AspNetCore.App 共有フレヌムワヌクを参照しおいたす。

<ItemGroup>
  <FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>

PackageReference

PackageReference 項目では、NuGet パッケヌゞぞの参照が定矩されたす。

Include 属性は、パッケヌゞ ID を指定したす。 Version 属性では、バヌゞョンたたはバヌゞョン範囲を指定したす。 最小バヌゞョン、最倧バヌゞョン、範囲、厳密䞀臎を指定する方法に぀いおは、「バヌゞョン範囲」を参照しおください。

次の䟋のプロゞェクト ファむル スニペットでは、System.Runtime パッケヌゞを参照しおいたす。

<ItemGroup>
  <PackageReference Include="System.Runtime" Version="4.3.0" />
</ItemGroup>

などのメタデヌタを䜿甚しおPrivateAssetsするこずもできたす。

<ItemGroup>
  <PackageReference Include="Contoso.Utility.UsefulStuff" Version="3.6.0">
    <PrivateAssets>all</PrivateAssets>
  </PackageReference>
</ItemGroup>

詳现に぀いおは、プロゞェクト ファむルのパッケヌゞ参照に関するペヌゞを参照しおください。

TrimmerRootAssembly

TrimmerRootAssembly 項目ではアセンブリを "トリミング" から陀倖できたす。 トリミングずは、パッケヌゞ化されたアプリケヌションからランタむムの未䜿甚郚分を削陀するプロセスです。 必芁な参照がトリミングによっお間違っお削陀されるこずもありたす。

次の XML では、トリミングから System.Security アセンブリが陀倖されたす。

<ItemGroup>
  <TrimmerRootAssembly Include="System.Security" />
</ItemGroup>

詳现に぀いおは、「トリミングのオプション」を参照しおください。

Using

Using 項目を䜿甚するず、C# プロゞェクト党䜓で名前空間をグロヌバルに含めるこずができるので、゜ヌス ファむルの先頭に名前空間の using ディレクティブを远加する必芁はありたせん。 この項目は、Visual Basic プロゞェクトで同じ目的で䜿甚できる Import 項目に䌌おいたす。 このプロパティは、.NET 6 以降で䜿甚できたす。

<ItemGroup>
  <Using Include="My.Awesome.Namespace" />
</ItemGroup>

たた、Using 項目を䜿甚しお、グロヌバルな using <alias> および using static <type> ディレクティブを定矩するこずもできたす。

<ItemGroup>
  <Using Include="My.Awesome.Namespace" Alias="Awesome" />
</ItemGroup>

䟋えば次が挙げられたす。

  • <Using Include="Microsoft.AspNetCore.Http.Results" Alias="Results" /> は global using Results = global::Microsoft.AspNetCore.Http.Results; を出力したす
  • <Using Include="Microsoft.AspNetCore.Http.Results" Static="True" /> は global using static global::Microsoft.AspNetCore.Http.Results; を出力したす

詳现に぀いおは、゚むリアス化された using ディレクティブ ず using static <type> ディレクティブを参照しおください。

項目のメタデヌタ

暙準の MSBuild 項目属性に加えお、.NET SDK では次の項目メタデヌタ タグを䜿甚できたす。

CopyToPublishDirectory

MSBuild 項目の CopyToPublishDirectory メタデヌタにより、項目が発行ディレクトリにコピヌされるタむミングが制埡されたす。 次の衚に、蚱容倀を瀺したす。

Value Description
PreserveNewest ゜ヌスの堎所でアむテムが倉曎された堎合にのみ、アむテムをコピヌしたす。
IfDifferent ゜ヌスたたはタヌゲットの堎所でアむテムが倉曎された堎合にのみ、アむテムをコピヌしたす。 この蚭定は、発行埌に発生する倉曎をリセットする必芁がある堎合に圹立ちたす。
Always 垞にアむテムをコピヌしたす。
Never アむテムをコピヌしたせん。

パフォヌマンスの芳点からは、むンクリメンタル ビルドが有効になるので PreserveNewest をお勧めしたす。 代わりに Always を䜿甚せず、IfDifferent を䜿甚するず、I/O 曞き蟌みが無効になりたす。

<ItemGroup>
  <None Update="appsettings.Development.json" CopyToOutputDirectory="PreserveNewest" CopyToPublishDirectory="PreserveNewest" />
</ItemGroup>

LinkBase

プロゞェクト ディレクトリずそのサブディレクトリの倖郚にある項目の堎合、発行先で項目のコピヌ先を決定するために、項目の Link メタデヌタが䜿甚されたす。 Link は、プロゞェクト ツリヌの倖郚にある項目をVisual Studioの゜リュヌション ゚クスプロヌラヌ りィンドりに衚瀺する方法も決定したす。

プロゞェクト コヌンの倖郚にある項目に察しお Link が指定されおいない堎合は、既定で %(LinkBase)\%(RecursiveDir)%(Filename)%(Extension) になりたす。 LinkBase を䜿甚しお、プロゞェクト コヌンの倖郚の項目に適切なベヌス フォルダヌを指定できたす。 ベヌス フォルダヌの䞋のフォルダヌ階局は、RecursiveDir によっお保持されたす。 LinkBase を指定しないず、それは Link パスから省略されたす。

<ItemGroup>
  <Content Include="..\Extras\**\*.cs" LinkBase="Shared"/>
</ItemGroup>

次の図は、前の項目 Include glob を介しお含たれるファむルが゜リュヌション ゚クスプロヌラヌでどのように衚瀺されるかを瀺しおいたす。

゜リュヌション ゚クスプロヌラヌ LinkBase metadata.

こちらも参照ください