Sdílet prostřednictvím


Referenční informace nástroje MSBuild pro projekty sady .NET SDK

Tato stránka je odkazem na vlastnosti a položky nástroje MSBuild, které můžete použít ke konfiguraci .NET projektů.

Note

Tato stránka probíhá a neobsahuje všechny užitečné vlastnosti nástroje MSBuild pro sadu .NET SDK. Seznam běžných vlastností nástroje MSBuild naleznete v části Společné vlastnosti nástroje MSBuild.

Vlastnosti ověření sestavení

Tyto vlastnosti a položky jsou předány úkolu ValidateAssemblies . Další informace o ověřování sestavení naleznete v tématu Ověření sestavení.

Následující vlastnosti nástroje MSBuild jsou popsány v této části:

Note

Tyto vlastnosti nejsou součástí sady .NET SDK (ještě). Pokud je chcete použít, musíte také přidat PackageReference microsoft.DotNet.ApiCompat.Task.

Kromě toho platí také následující vlastnosti, které jsou zdokumentované ve vlastnostech ověření balíčku pro ověření sestavení:

ApiCompatStrictMode

Při nastavení truena ApiCompatStrictMode vlastnost určuje, že kontroly kompatibility rozhraní API by se měly provádět v přísném režimu.

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

ApiCompatValidateAssemblies

Tato ApiCompatValidateAssemblies vlastnost umožňuje řadu ověření na zadaných sestaveních. Další informace naleznete v tématu Ověření sestavení.

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

Vlastnosti atributu sestavení

GenerateAssemblyInfo

Vlastnost GenerateAssemblyInfo řídí AssemblyInfo generování atributů pro projekt. Výchozí hodnota je true. Slouží false k zakázání generování souboru:

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

Nastavení GeneratedAssemblyInfoFile řídí název vygenerovaného souboru.

GenerateAssemblyInfo Pokud je truehodnota , vlastnosti projektu související s balíčkem se transformují na atributy sestavení.

Další informace o generování atributů sestavení pomocí souboru projektu naleznete v tématu Nastavení atributů sestavení v souboru projektu.

GeneratedAssemblyInfoFile

Vlastnost GeneratedAssemblyInfoFile definuje relativní nebo absolutní cestu vygenerovaného souboru informací o sestavení. Výchozí hodnota souboru s názvem [název_projektu]. AssemblyInfo. [cs|vb] v adresáři $(IntermediateOutputPath)(obvykle obj).

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

IncludeSourceRevisionInInformationalVersion

Vlastnost IncludeSourceRevisionInInformationalVersion určuje, zda SourceRevisionId je hodnota připojena k atributu InformationalVersion sestavení. Výchozí hodnota je true. Nastavte ho tak, aby false toto chování zakázalo:

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

Další informace najdete v tématu Source Link, který je součástí .NET SDK.

SourceRevisionId

Vlastnost SourceRevisionId obsahuje ID revize správy zdrojového kódu pro sestavení, například hodnotu hash potvrzení Gitu. Počínaje .NET 8 sada .NET SDK tuto vlastnost automaticky naplní hodnotou hash potvrzení při Zdrojový odkaz. Při nastavení je jeho hodnota připojena k atributu InformationalVersion sestavení.

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

Další informace najdete v tématu Source Link, který je součástí .NET SDK.

Vlastnosti architektury

Následující vlastnosti nástroje MSBuild jsou popsány v této části:

TargetFramework

Vlastnost TargetFramework určuje verzi cílové architektury pro aplikaci. Seznam platných monikerů cílové architektury najdete v tématu Cílové architektury v projektech ve stylu sady SDK.

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

Další informace naleznete v tématu Cílové architektury v projektech ve stylu sady SDK.

TargetFrameworks

TargetFrameworks Vlastnost použijte, pokud chcete, aby vaše aplikace cílila na více platforem. Seznam platných monikerů cílové architektury najdete v tématu Cílové architektury v projektech ve stylu sady SDK.

Note

Pokud TargetFrameworks je zadáno TargetFramework (množné číslo), bude ignorováno (jednotné číslo).

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

Další informace naleznete v tématu Cílové architektury v projektech ve stylu sady SDK.

NetStandardImplicitPackageVersion

Note

Tato vlastnost se vztahuje pouze na projekty používající netstandard1.x. Nevztahuje se na projekty, které používají netstandard2.x.

NetStandardImplicitPackageVersion Vlastnost použijte, pokud chcete zadat verzi architektury, která je nižší než verze metabalíku. Soubor projektu v následujícím příkladu cílí netstandard1.3 , ale používá verzi NETStandard.Library1.6.0 .

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

Vlastnosti balíčku

Popisné vlastnosti

Můžete zadat vlastnosti, jako PackageIdje , , PackageVersionPackageIcon, Titlea Description popsat balíček, který se vytvoří z projektu. Informace otěchtoch

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

PackRelease

Vlastnost PackRelease je podobná PublishRelease vlastnost, s tím rozdílem, že změní výchozí chování dotnet pack. Tato vlastnost byla zavedena v .NET 7.

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

Note

Počínaje sadou SDK .NET 8 PackRelease výchozí nastavení true. Další informace naleznete v tématu dotnet pack používá konfiguraci vydané verze.

Vlastnosti ověření balíčku

Tyto vlastnosti a položky jsou předány úkolu ValidatePackage . Další informace o ověření balíčku naleznete v tématu Přehled ověření balíčku.

Vlastnosti úlohy ValidateAssemblies naleznete v části Vlastnosti ověření sestavení.

Následující vlastnosti a položky nástroje MSBuild jsou popsány v této části:

ApiCompatEnableRuleAttributesMustMatch

Pokud je tato vlastnost nastavená na truehodnotu , ApiCompatEnableRuleAttributesMustMatch povolí ověřovací pravidlo, které kontroluje, jestli se atributy shodují. Výchozí hodnota je false.

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

ApiCompatEnableRuleCannotChangeParameterName

Pokud je tato vlastnost nastavena na truehodnotu , ApiCompatEnableRuleCannotChangeParameterName umožňuje ověřovací pravidlo, které kontroluje, zda se názvy parametrů změnily ve veřejných metodách. Výchozí hodnota je false.

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

ApiCompatExcludeAttributesFile

Položka ApiCompatExcludeAttributesFile určuje cestu k souboru, který obsahuje atributy, které se mají vyloučit ve formátu DocId .

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

ApiCompatGenerateSuppressionFile

Vlastnost ApiCompatGenerateSuppressionFile určuje, zda se má vygenerovat soubor potlačení kompatibility.

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

ApiCompatPermitUnnecessarySuppressions

Vlastnost ApiCompatPermitUnnecessarySuppressions určuje, zda povolit nepotřebné potlačení v souboru potlačení.

Výchozí hodnota je false.

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

ApiCompatPreserveUnnecessarySuppressions

Vlastnost ApiCompatPreserveUnnecessarySuppressions určuje, zda chcete zachovat nepotřebné potlačení při opětovném vygenerování souboru potlačení. Při opětovném vygenerování existujícího souboru potlačení se jeho obsah načte, deserializuje do sady potlačení a uloží se do seznamu. Některé potlačení už nemusí být nutné, pokud byla opravena nekompatibilitu. Pokud jsou potlačení serializována zpět na disk, můžete zvolit, že chcete zachovat všechny existující (deserializované) výrazy nastavením této vlastnosti na true.

Výchozí hodnota je false.

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

ApiCompatRespectInternals

Vlastnost ApiCompatRespectInternals určuje, jestli internal se má kromě public rozhraní API kontrolovat kompatibilita rozhraní API.

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

ApiCompatSuppressionFile

Položka ApiCompatSuppressionFile určuje cestu k jednomu nebo více souborům potlačení, ze které se mají číst. Pokud není zadaný, soubor potlačení <project-directory>/CompatibilitySuppressions.xml se přečte (pokud existuje).

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

ApiCompatSuppressionOutputFile

Vlastnost ApiCompatSuppressionOutputFile určuje cestu k souboru potlačení pro zápis do kdy <ApiCompatGenerateSuppressionFile> je true. Pokud není zadáno, použije se první ApiCompatSuppressionFile položka.

EnablePackageValidation

Tato EnablePackageValidation vlastnost umožňuje po úloze řadu ověření balíčku Pack . Další informace najdete v tématu ověření balíčku.

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

EnableStrictModeForBaselineValidation

Pokud je tato vlastnost nastavená na truehodnotu , EnableStrictModeForBaselineValidation umožňuje striktní režim pro kontroly směrného plánu balíčku. Výchozí hodnota je false.

EnableStrictModeForCompatibleFrameworksInPackage

Pokud je nastavena na trueEnableStrictModeForCompatibleFrameworksInPackagehodnotu , vlastnost umožňuje striktní režim pro sestavení, která jsou kompatibilní na základě jejich cílové architektury. Výchozí hodnota je false.

EnableStrictModeForCompatibleTfms

Při nastavení truena EnableStrictModeForCompatibleTfms , vlastnost umožňuje striktní režim pro kontrakt a implementace sestavení pro všechny kompatibilní cílové architektury. Výchozí hodnota je true.

NoWarn

Vlastnost NoWarn určuje ID diagnostiky, která se mají potlačit.

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

PackageValidationBaselineFrameworkToIgnore

Položka PackageValidationBaselineFrameworkToIgnore určuje cílovou architekturu, která se má z balíčku směrného plánu ignorovat. Řetězec architektury musí přesně odpovídat názvu složky v balíčku podle směrného plánu.

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

PackageValidationBaselineName

Vlastnost PackageValidationBaselineName určuje název balíčku směrného plánu k ověření aktuálního balíčku proti. Pokud není zadáno, použije se PackageId hodnota.

PackageValidationBaselineVersion

Vlastnost PackageValidationBaselineVersion určuje verzi balíčku podle směrného plánu k ověření aktuálního balíčku.

PackageValidationReferencePath

Položka PackageValidationReferencePath určuje cestu k adresáři, kde lze najít referenční sestavení pro TFM.

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

RoslynAssembliesPath

Vlastnost RoslynAssembliesPath určuje cestu k adresáři, který obsahuje sestavení Microsoft.CodeAnalysis, které chcete použít. Tuto vlastnost je potřeba nastavit jenom v případě, že chcete testovat s novějším kompilátorem, než jaký je v sadě SDK.

Následující vlastnosti nástroje MSBuild jsou popsány v této části:

AppendTargetFrameworkToOutputPath

Vlastnost AppendTargetFrameworkToOutputPath určuje, zda je k výstupní cestě připojeno moniker cílové architektury (TFM). Sada .NET SDK automaticky připojí cílovou architekturu a pokud je k dispozici, identifikátor modulu runtime k výstupní cestě. Nastavení AppendTargetFrameworkToOutputPath , které false zabrání připojení TFM k výstupní cestě. Bez TFM ve výstupní cestě se však může přepsat více artefaktů sestavení.

Například u aplikace .NET 5 se výstupní cesta změní z bin\Debug\net5.0 na bin\Debug s následujícím nastavením:

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

AppendRuntimeIdentifierToOutputPath

Vlastnost AppendRuntimeIdentifierToOutputPath řídí, zda je identifikátor modulu runtime (RID) připojen k výstupní cestě. Sada .NET SDK automaticky připojí cílovou architekturu a pokud existuje, identifikátor modulu runtime (RID) k výstupní cestě. Nastavením AppendRuntimeIdentifierToOutputPath zabráníte false připojení identifikátoru RID k výstupní cestě. (Identifikátor RID je ale stále připojený k cestě publikování. Další informace najdete v tématu dotnet/sdk#12114.)

Například pro aplikaci .NET 9 a identifikátor RID win-x64 změní následující nastavení výstupní cestu z bin\Debug\net9.0\win-x64 na bin\Debug\net9.0:

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

CopyLocalLockFileAssemblies

Vlastnost CopyLocalLockFileAssemblies je užitečná pro projekty modulů plug-in, které mají závislosti na jiných knihovnách. Pokud tuto vlastnost nastavíte na true, všechny tranzitivní závislosti balíčku NuGet se zkopírují do výstupního adresáře. To znamená, že můžete použít výstup dotnet build ke spuštění modulu plug-in na libovolném počítači.

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

Výchozí hodnota CopyLocalLockFileAssemblies se může lišit v závislosti na typu výstupu. Například pro knihovny tříd je výchozí hodnota false, zatímco pro konzolové aplikace je výchozí .true Tuto vlastnost můžete explicitně zadat, aby se v případě potřeby přepsaly výchozí hodnoty.

Tip

Alternativně můžete použít dotnet publish k publikování knihovny tříd. Další informace najdete v tématu dotnet publish.

ErrorOnDuplicatePublishOutputFiles

Tato ErrorOnDuplicatePublishOutputFiles vlastnost souvisí s tím, jestli sada SDK generuje chybu NETSDK1148, když nástroj MSBuild zjistí ve výstupu publikování duplicitní soubory, ale nedokáže určit, které soubory se mají odebrat. ErrorOnDuplicatePublishOutputFiles Vlastnost nastavte, false pokud nechcete, aby se chyba vygenerovala.

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

Tato vlastnost byla zavedena v .NET 6.

GenerateRuntimeConfigDevFile

Počínaje .NET 6 SDK je soubor.runtimesettings.dev.json>.runtimesettings.dev.json < no ve výchozím nastavení . Pokud chcete, aby se tento soubor vygeneroval, nastavte GenerateRuntimeConfigDevFile vlastnost na truehodnotu .

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

GenerateRuntimeConfigurationFiles

Vlastnost GenerateRuntimeConfigurationFiles určuje, jestli se možnosti konfigurace modulu runtime zkopírují ze souboru runtimeconfig.template.json do souboru [appname].runtimeconfig.json souboru. Pro aplikace, které vyžadují runtimeconfig.json soubor, to znamená ty, jejichž OutputType je Exe, tato vlastnost je výchozí true.

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

GenerateSatelliteAssembliesForCore

Vlastnost GenerateSatelliteAssembliesForCore určuje, jestli se satelitní sestavení generují pomocí csc.exe nebo Al.exe (Assembly Linker) v projektech .NET Framework. (.NET projekty Core a .NET 5+ používají k generování satelitních sestavení vždy csc.exe.) U projektů .NET Framework se satelitní sestavení vytvářejí ve výchozím nastavení pomocí al.exe. GenerateSatelliteAssembliesForCore Nastavením vlastnosti na truesatelitní sestavení jsou vytvořena csc.exe místo toho. Použití csc.exe může být výhodné v následujících situacích:

  • Chcete použít možnostdeterministic jazyka C#.
  • Jste omezeni skutečností, že al.exe nemá žádnou podporu pro veřejné podepisování a zpracovává AssemblyInformationalVersionAttribute špatně.
<PropertyGroup>
  <GenerateSatelliteAssembliesForCore>true</GenerateSatelliteAssembliesForCore>
</PropertyGroup>

IsPublishable

Tato IsPublishable vlastnost umožňuje Publish spuštění cíle. Tato vlastnost má vliv pouze na procesy, které používají soubory .*proj a Publish cíl, například příkaz dotnet publish . Nemá vliv na publikování v Visual Studio, který používá cíl PublishOnly. Výchozí hodnota je true.

Tato vlastnost je užitečná, pokud spustíte dotnet publish soubor řešení, protože umožňuje automatický výběr projektů, které by se měly publikovat.

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

PreserveCompilationContext

Tato PreserveCompilationContext vlastnost umožňuje sestavené nebo publikované aplikaci kompilovat více kódu za běhu pomocí stejných nastavení, která byla použita v době sestavení. Sestavení odkazovaná v době sestavení se zkopírují do podadresáře odkazu výstupního adresáře. Názvy referenčních sestavení jsou uloženy v souboru .deps.json aplikace spolu s možnostmi předanými kompilátoru. Tyto informace můžete načíst pomocí DependencyContext.CompileLibraries vlastností a DependencyContext.CompilationOptions vlastností.

Tyto funkce většinou interně používají ASP.NET Core MVC a Razor Pages k podpoře kompilace runtime souborů Razor.

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

PreserveCompilationReferences

Vlastnost PreserveCompilationReferences je podobná PreserveCompilationContext vlastnost, s tím rozdílem, že kopíruje pouze odkazovaná sestavení do adresáře publikování, a ne .deps.json soubor.

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

Další informace naleznete v tématu Vlastnosti sady Razor SDK.

ProduceReferenceAssemblyInOutDir

V .NET 5 a starších verzích jsou referenční sestavení vždy zapsána do adresáře OutDir. V .NET 6 a novějších verzích můžete pomocí vlastnosti ProduceReferenceAssemblyInOutDir určit, zda jsou referenční sestavení zapsána do adresáře OutDir. Výchozí hodnota je falsea referenční sestavení jsou zapsána pouze do IntermediateOutputPath adresáře. Nastavte hodnotu na true zápis referenčních sestavení do OutDir adresáře.

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

Další informace naleznete v tématu Zápis referenčních sestavení do zprostředkujícího výstupu.

PublishDocumentationFile

Pokud je truetato vlastnost , soubor dokumentace XML projektu, pokud je vygenerován, je zahrnut do výstupu publikování projektu. Tato vlastnost má výchozí hodnotu true.

Tip

Nastavte GenerateDocumentationFile tak, aby true vygeneroval soubor dokumentace XML v době kompilace.

PublishDocumentationFiles

Tato vlastnost je příznak povolení pro několik dalších vlastností, které řídí, zda jsou různé druhy souborů dokumentace XML zkopírovány do adresáře publikování ve výchozím nastavení, konkrétně PublishDocumentationFile a PublishReferencesDocumentationFiles. Pokud tyto vlastnosti nejsou nastaveny a tato vlastnost je nastavena, budou tyto vlastnosti výchozí .true Tato vlastnost má výchozí hodnotu true.

PublishReferencesDocumentationFiles

Pokud je truetato vlastnost , soubory dokumentace XML pro odkazy projektu se zkopírují do adresáře publikování místo jen runtime prostředků, jako jsou soubory DLL. Tato vlastnost má výchozí hodnotu true.

PublishReferencesSymbols

Pokud je truetato vlastnost , soubory symbolů (označované také jako soubory PDB) pro odkazy projektu se zkopírují do adresáře publikování místo jen runtime prostředků, jako jsou soubory DLL. Tato vlastnost má výchozí hodnotu true.

PublishRelease

Vlastnost PublishRelease informuje dotnet publish o použití Release konfigurace ve výchozím nastavení místo Debug konfigurace. Tato vlastnost byla zavedena v .NET 7.

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

Note

  • Počínaje sadou SDK .NET 8 PublishRelease ve výchozím nastavení true pro projekty, které cílí na .NET 8 nebo novější. Další informace najdete v tématu dotnet publish používá konfiguraci vydané verze.
  • Tato vlastnost nemá vliv na chování dotnet build /t:Publish a změní konfiguraci pouze při publikování prostřednictvím rozhraní příkazového řádku .NET.

PublishSelfContained

Tato PublishSelfContained vlastnost informuje dotnet publish o publikování aplikace jako samostatné aplikace. Tato vlastnost je užitečná, když nemůžete použít --self-contained argument pro příkaz dotnet publish – například při publikování na úrovni řešení. V takovém případě můžete přidat PublishSelfContained vlastnost MSBuild do souboru projektu nebo Directory.Build.Props .

Tato vlastnost byla zavedena v .NET 7. Podobá se vlastnosti SelfContained s tím rozdílem, že je specifická pro sloveso publish . Doporučuje se místo PublishSelfContainedSelfContained.

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

RollForward

Vlastnost RollForward řídí, jak aplikace zvolí modul runtime, pokud je k dispozici více verzí modulu runtime. Tato hodnota je výstupem .runtimeconfig.json jako rollForward nastavení.

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

Nastavte RollForward jednu z následujících hodnot:

Value Description
Minor Výchozí, pokud není zadáno.
Pokud chybí požadovaná podverze, přejděte na další dostupnou podverzi (a verzi s nejvyšší dostupnou opravou v rámci této podverze). Pokud je požadovaná podverze k dispozici, použije se LatestPatch politika.
Major Pokud chybí požadovaná hlavní verze, roll-forward to the next available major version (at its lowest available minor version, and highest available patch version within that minor version), if requested major version is missing. Pokud je požadovaná hlavní verze přítomna, použije se Minor zásada.
LatestPatch Proveďte aktualizaci na nejvyšší dostupnou verzi opravy pro požadovanou hlavní a vedlejší verzi. Tato hodnota zakáže vrácení podverze vpřed.
LatestMinor Roll-forward to the highest minor version available for the requested major version (and highest available patch version within that minor version), i když je požadovaná podverze k dispozici.
LatestMajor Roll-forward to highest available major version (and highest available minor and patch version within that major version), i když je požadovaná hlavní verze přítomna.
Disable Nepřecházejte dál, vytvořte vazbu pouze na zadanou verzi. Tato zásada se nedoporučuje pro obecné použití, protože zakazuje přechod na nejnovější opravy. Tato hodnota se doporučuje jenom pro testování.

Další informace naleznete v tématu Řízení chování roll-forward.

RuntimeFrameworkVersion

Vlastnost RuntimeFrameworkVersion určuje verzi modulu runtime, která se má použít při publikování. Zadejte verzi modulu runtime:

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

Při publikování aplikace závislé na rozhraní určuje tato hodnota minimální požadovanou verzi. Při publikování samostatné aplikace určuje tato hodnota přesnou požadovanou verzi.

RuntimeIdentifier

Tato RuntimeIdentifier vlastnost umožňuje zadat jeden identifikátor modulu runtime (RID) pro projekt. Identifikátor RID umožňuje publikování samostatného nasazení.

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

RuntimeIdentifiers

Tato RuntimeIdentifiers vlastnost umožňuje zadat seznam identifikátorů modulu runtime (RID) oddělených středníkem. Tuto vlastnost použijte, pokud potřebujete publikovat více modulů runtime. RuntimeIdentifiers se používá v době obnovení, aby se zajistilo, že jsou v grafu správné prostředky.

Tip

RuntimeIdentifier (singulární) může poskytovat rychlejší sestavení v případě, že je vyžadován pouze jeden modul runtime.

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

SatelliteResourceLanguages

Tato SatelliteResourceLanguages vlastnost umožňuje určit, které jazyky chcete během sestavování a publikování zachovat sestavení satelitních prostředků. Mnoho balíčků NuGet zahrnuje lokalizovaná satelitní sestavení prostředků v hlavním balíčku. U projektů, které odkazují na tyto balíčky NuGet, které nevyžadují lokalizované prostředky, mohou lokalizovaná sestavení zbytečně nafouknout velikost sestavení a publikování výstupu. SatelliteResourceLanguages Přidáním vlastnosti do souboru projektu budou do výstupu sestavení a publikování zahrnuta pouze lokalizovaná sestavení pro zadané jazyky. Například v následujícím souboru projektu se zachovají pouze satelitní sestavení zdrojů v angličtině (USA) a němčině (Německo).

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

Note

  • Tuto vlastnost je nutné zadat v projektu, který odkazuje na balíček NuGet s lokalizovanými satelitními sestaveními prostředků.

  • Chcete-li zadat více jazyků jako argument dotnet publish, je nutné přidat tři dvojice uvozovek kolem identifikátorů jazyka. Například:

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

SelfContained

Vlastnost SelfContained informuje a dotnet build sestaví dotnet publish nebo publikuje aplikaci jako samostatnou aplikaci. Tato vlastnost je užitečná, když nemůžete použít --self-contained argument s příkazem dotnet – například při publikování na úrovni řešení. V takovém případě můžete přidat SelfContained vlastnost MSBuild do souboru projektu nebo Directory.Build.Props .

Tato vlastnost je podobná PublishSelfContained vlastnost. Doporučuje se místo toho použít PublishSelfContained , pokud SelfContained je to možné.

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

UseAppHost

Vlastnost UseAppHost určuje, zda je pro nasazení vytvořen nativní spustitelný soubor. Pro samostatná nasazení se vyžaduje nativní spustitelný soubor. Ve výchozím nastavení se vytvoří spustitelný soubor závislý na rozhraní. UseAppHost Nastavte vlastnost tak, aby false se zakázalo generování spustitelného souboru.

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

Další informace o nasazení najdete v tématu .NET nasazení aplikace.

K dispozici je celá řada vlastností nástroje MSBuild k vyladění oříznutí, což je funkce, která oříznou nepoužívaný kód z samostatně obsažených nasazení. Tyto možnosti jsou podrobně popsány v možnostech oříznutí. Následující tabulka obsahuje stručný přehled.

Property Values Description
PublishTrimmed true nebo false Určuje, jestli je během publikování povolené oříznutí.
TrimMode full nebo partial Výchozí hodnota je full. Řídí členitost oříznutí.
SuppressTrimAnalysisWarnings true nebo false Určuje, jestli se vytvářejí upozornění analýzy oříznutí.
EnableTrimAnalyzer true nebo false Určuje, jestli se vytváří podmnožina upozornění analýzy oříznutí. Analýzu můžete povolit i v případě, že PublishTrimmed je nastavená hodnota false.
ILLinkTreatWarningsAsErrors true nebo false Určuje, jestli se upozornění oříznutí považují za chyby. Můžete například chtít nastavit tuto vlastnost na false hodnotu , která TreatWarningsAsErrors je nastavena na truehodnotu .
TrimmerSingleWarn true nebo false Určuje, jestli se zobrazí jedno upozornění na sestavení, nebo všechna upozornění.
TrimmerRemoveSymbols true nebo false Určuje, jestli jsou všechny symboly odebrány z oříznuté aplikace.

Následující vlastnosti nástroje MSBuild jsou popsány v této části:

Možnosti kompilátoru jazyka C#, například LangVersion a Nullable, lze také zadat jako vlastnosti NÁSTROJE MSBuild v souboru projektu. Další informace najdete v tématu Možnosti kompilátoru jazyka C#.

ContinuousIntegrationBuild

Tato ContinuousIntegrationBuild vlastnost označuje, jestli se sestavení spouští na serveru kontinuální integrace (CI). Pokud je tato vlastnost nastavená na true, tato vlastnost umožňuje nastavení, která se vztahují pouze na oficiální buildy na rozdíl od místních buildů na vývojářském počítači. Například uložené cesty k souborům jsou normalizovány pro oficiální buildy. Ladicí program ale na místním vývojovém počítači nedokáže najít místní zdrojové soubory, pokud jsou cesty k souborům normalizované.

Proměnnou systému CI můžete použít k podmíněnému nastavení ContinuousIntegrationBuild vlastnosti. Například název proměnné pro Azure Pipelines je TF_BUILD:

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

Pro GitHub Actions je název proměnné GITHUB_ACTIONS:

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

CopyDebugSymbolFilesFromPackages

Pokud je tato vlastnost nastavena na true, všechny soubory symbolů (označované také jako soubory PDB) z PackageReference položek v projektu se zkopírují do výstupu sestavení. Tyto soubory mohou poskytovat podrobnější trasování zásobníku pro výjimky a usnadnit pochopení výpisů paměti a trasování spuštěné aplikace. Zahrnutím těchto souborů ale vznikne větší velikost sady nasazení.

Tato vlastnost byla zavedena v sadě .NET SDK 7.0.100, i když se ve výchozím nastavení nezadává.

CopyDocumentationFilesFromPackages

Pokud je tato vlastnost nastavena na true, všechny vygenerované soubory dokumentace XML z PackageReference položek v projektu se zkopírují do výstupu sestavení. Všimněte si, že povolení této funkce bude mít za následek větší velikost sady nasazení.

Tato vlastnost byla zavedena v sadě .NET SDK 7.0.100, i když se ve výchozím nastavení nezadává.

DisableImplicitFrameworkDefines

Vlastnost DisableImplicitFrameworkDefines určuje, zda sada SDK generuje symboly preprocesoru pro cílovou architekturu a platformu pro projekt .NET. Pokud je tato vlastnost nastavená na false symboly preprocesoru (což je výchozí hodnota), vygenerují se pro:

  • Framework bez verze (NETFRAMEWORK, NETSTANDARD, NET)
  • Architektura s verzí (NET48, NETSTANDARD2_0, NET6_0)
  • Architektura s minimální vazbou na verzi (NET48_OR_GREATER, NETSTANDARD2_0_OR_GREATER, NET6_0_OR_GREATER)

Další informace o monikerech cílové architektury a těchto implicitních symbolech preprocesoru najdete v tématu Cílové architektury.

Pokud navíc v projektu zadáte cílovou architekturu specifickou pro operační systém (například net6.0-android), vygenerují se následující symboly preprocesoru:

  • Platforma bez verze (ANDROID, IOS, WINDOWS)
  • Platforma s verzí (IOS15_1)
  • Platforma s minimální vazbou na verzi (IOS15_1_OR_GREATER)

Další informace o monikerech cílové architektury specifické pro operační systém najdete v sadě TFM specifické pro operační systém.

Pokud vaše cílová architektura naznačuje podporu starších cílových architektur, vygenerují se symboly preprocesoru pro tyto starší architektury. Například net6.0implikuje podporu pro net5.0 a tak dále až dozadu .netcoreapp1.0. Pro každou z těchto cílových architektur se tedy definuje symbol rozhraní s minimální vazbou verze.

DocumentationFile

Tato DocumentationFile vlastnost umožňuje zadat název souboru XML, který obsahuje dokumentaci pro vaši knihovnu. Aby intelliSense fungovala správně s dokumentací, musí být název souboru stejný jako název sestavení a musí být ve stejném adresáři jako sestavení. Pokud tuto vlastnost nezadáte, ale nastavíte GenerateDocumentationFile na true, název souboru dokumentace je výchozí název sestavení, ale s příponou .xml souboru. Z tohoto důvodu je často jednodušší vynechat tuto vlastnost a místo toho použít GenerateDocumentationFile vlastnost .

Pokud zadáte tuto vlastnost, ale nastavíte GenerateDocumentationFile na false, kompilátor negeneruje soubor dokumentace. Pokud zadáte tuto vlastnost a vynecháte GenerateDocumentationFile vlastnost, kompilátor vygeneruje soubor dokumentace.

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

EmbeddedResourceUseDependentUponConvention

Vlastnost EmbeddedResourceUseDependentUponConvention definuje, zda jsou názvy souborů manifestu prostředků generovány z informací o typu ve zdrojových souborech, které jsou umístěny společně se soubory prostředků. Pokud je například form1.resx ve stejné složce jako Form1.cs a EmbeddedResourceUseDependentUponConvention nastaví se na truehodnotu , vygenerovaný soubor .resources převezme jeho název z prvního typu definovaného v Form1.cs. Pokud MyNamespace.Form1 je první typ definovaný v Form1.cs, vygenerovaný název souboru je MyNamespace.Form1.resources.

Note

Pokud LogicalNameje pro ManifestResourceName položku zadána hodnota , DependentUponnebo EmbeddedResource metadata, je vygenerovaný název souboru manifestu pro tento soubor prostředků založený na tomto metadatu.

Ve výchozím nastavení je v novém projektu .NET, který cílí na .NET Core 3.0 nebo novější verzi, tato vlastnost je nastavená na true. Je-li nastavena hodnota false, a ne LogicalName, ManifestResourceNamenebo DependentUpon metadata je určena pro EmbeddedResource položku v souboru projektu, název souboru manifestu zdroje je založen na kořenovém oboru názvů projektu a relativní cesta k souboru .resx . Další informace naleznete v tématu Jak jsou pojmenovány soubory manifestu prostředků.

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

EnablePreviewFeatures

Vlastnost EnablePreviewFeatures definuje, zda váš projekt závisí na rozhraních API nebo sestaveních, která jsou zdobena atributem RequiresPreviewFeaturesAttribute . Tento atribut slouží k označení, že rozhraní API nebo sestavení používá funkce, které jsou považovány za verze Preview pro verzi SADY SDK, kterou používáte. Funkce ve verzi Preview se nepodporují a v budoucí verzi se můžou odebrat. Pokud chcete povolit použití funkcí ve verzi Preview, nastavte vlastnost na Truehodnotu .

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

Pokud projekt obsahuje tuto vlastnost nastavenou na True, do souboru AssemblyInfo.cs se přidá následující atribut na úrovni sestavení:

[assembly: RequiresPreviewFeatures]

Analyzátor varuje, pokud je tento atribut přítomen na závislostech pro projekty, kde EnablePreviewFeatures není nastavena na True.

Autoři knihovny, kteří mají v úmyslu dodávat sestavení preview, by tuto vlastnost měli nastavit na True. Pokud se sestavení musí dodávat se kombinací rozhraní API verze Preview a jiných než Preview, projděte si část GenerateRequiresPreviewFeaturesAttribute níže.

EnableWindowsTargeting

Nastavte vlastnost EnableWindowsTargeting na true pro vytváření Windows aplikací (například Windows Forms nebo Windows Presentation Foundation aplikací) na platformě, která není Windows. Pokud tuto vlastnost truenenastavíte, zobrazí se upozornění na sestavení NETSDK1100. K této chybě dochází, protože cílení a balíčky runtime se automaticky nestáhnou na platformách, které nejsou podporované. Nastavením této vlastnosti se tyto balíčky stáhnou při křížovému cílení.

Note

Tato vlastnost se v současné době doporučuje povolit vývoj na platformách, které nejsou Windows. Jakmile je ale aplikace připravená k vydání, měla by být postavena na Windows. Při sestavování na platformě, která není Windows, nemusí být výstup stejný jako při sestavování na Windows. Konkrétně spustitelný soubor není označený jako Windows aplikace (což znamená, že vždy spustí okno konzoly) a nebude mít vloženou ikonu.

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

GenerateDocumentationFile

Vlastnost GenerateDocumentationFile určuje, zda kompilátor generuje soubor dokumentace XML pro vaši knihovnu. Pokud tuto vlastnost true nastavíte a nezadáte název souboru prostřednictvím vlastnosti DocumentationFile, vygenerovaný soubor XML se umístí do stejného výstupního adresáře jako sestavení a má stejný název souboru (ale s příponou .xml ).

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

Další informace o generování dokumentace z komentářů ke kódu najdete v tématu komentáře dokumentace jazykaXML (C#), Dokumentujte kód pomocí XML (Visual Basic) nebo Dokumentujte kód ve formátu XML (F#).

GenerateRequiresPreviewFeaturesAttribute

Vlastnost GenerateRequiresPreviewFeaturesAttribute úzce souvisí s EnablePreviewFeatures vlastnost. Pokud vaše knihovna používá funkce preview, ale nechcete, aby bylo celé sestavení označené atributem RequiresPreviewFeaturesAttribute , což by vyžadovalo, aby uživatelé povolili funkce preview, nastavte tuto vlastnost na False.

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

Important

Pokud vlastnost nastavíte GenerateRequiresPreviewFeaturesAttributeFalsena , musíte být jistí, že ozdobí všechna veřejná rozhraní API, která spoléhají na funkce ve verzi Preview s RequiresPreviewFeaturesAttribute.

OptimizeImplicitlyTriggeredBuild

Pokud chcete zrychlit čas sestavení, sestavení, která se implicitně aktivují Visual Studio přeskočit analýzu kódu, včetně analýzy s možnou hodnotou null. Visual Studio například aktivuje implicitní sestavení při spouštění testů. Implicitní sestavení jsou však optimalizována pouze v případě, že TreatWarningsAsErrors není true. Pokud jste TreatWarningsAsErrors nastavili true , ale přesto chcete, aby se implicitně aktivované buildy optimalizovaly, můžete nastavit OptimizeImplicitlyTriggeredBuild na Truehodnotu . Pokud chcete vypnout optimalizaci sestavení pro implicitně aktivované buildy, nastavte na OptimizeImplicitlyTriggeredBuildhodnotu False .

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

DisableRuntimeMarshalling

Tato DisableRuntimeMarshalling vlastnost umožňuje určit, že chcete zakázat podporu zařazování za běhu pro váš projekt. Pokud je tato vlastnost nastavena na true, pak DisableRuntimeMarshallingAttribute se přidá do sestavení a všechny P/Invokes nebo delegované vzájemné spojení budou dodržovat pravidla pro zakázané zařazování modulu runtime.

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

BuildWithNetFrameworkHostedCompiler

BuildWithNetFrameworkHostedCompiler=true Určení je ekvivalentem RoslynCompilerType=FrameworkPackagezadávání . Další informace naleznete v tématu RoslynCompilerType. Určení BuildWithNetFrameworkHostedCompiler=false zajistí, že k automatickému RoslynCompilerType=FrameworkPackage přihlášení nedojde. Pokud RoslynCompilerType je zadán explicitně, BuildWithNetFrameworkHostedCompiler nemá žádný vliv.

RoslynCompilerType

Vlastnost RoslynCompilerType řídí verzi kompilátoru C# nebo Visual Basic. Rozpoznávají se následující hodnoty:

  • Core: Použijte kompilátor, který je součástí sady .NET SDK. Toto je výchozí hodnota, protože .NET 10, i když používáte .NET Framework MSBuild.
  • Framework: Použijte kompilátor, který je součástí nástroje MSBuild .NET Framework.
  • FrameworkPackage: Při použití nástroje MSBuild .NET Framework stáhněte a použijte balíček s kompilátorem .NET Framework, který odpovídá verzi .NET SDK.

Výchozí vlastnosti zahrnutí položek

Následující vlastnosti nástroje MSBuild jsou popsány v této části:

Další informace naleznete v tématu Výchozí zahrnutí a vyloučení.

DefaultItemExcludes

DefaultItemExcludes Pomocí vlastnosti můžete definovat vzory globů pro soubory a složky, které by měly být vyloučeny z zahrnutí, vyloučení a odebrání globů. Ve výchozím nastavení jsou složky ./bin a ./obj vyloučené ze vzorů globu.

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

Note

Vlastnost DefaultItemExcludes vylučuje soubory a složky z sledování dotnet watch. Další informace naleznete v tématu Ignorování zadaných složek a souborů z dotnet watch.

DefaultItemExcludesInProjectFolder

DefaultItemExcludesInProjectFolder Pomocí vlastnosti můžete definovat vzory globu pro soubory a složky ve složce projektu, které by měly být vyloučeny z zahrnutí, vyloučení a odebrání globů. Ve výchozím nastavení jsou složky začínající tečkou (.například .git a .vs) vyloučené ze vzorů globu.

Tato vlastnost je velmi podobná DefaultItemExcludes vlastnosti s tím rozdílem, že bere v úvahu pouze soubory a složky ve složce projektu. Pokud by vzor globu neúmyslně odpovídal položkám mimo složku projektu s relativní cestou, použijte DefaultItemExcludesInProjectFolder místo vlastnosti vlastnost DefaultItemExcludes .

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

EnableDefaultItems

Vlastnost EnableDefaultItems určuje, zda jsou do projektu implicitně zahrnuty položky kompilace, vložené položky zdrojů a None položky. Výchozí hodnota je true. EnableDefaultItems Nastavte vlastnost tak, aby false se zakázalo zahrnutí všech implicitních souborů.

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

EnableDefaultCompileItems

Vlastnost EnableDefaultCompileItems řídí, zda jsou kompilované položky implicitně zahrnuty do projektu. Výchozí hodnota je true. EnableDefaultCompileItems Nastavte vlastnost tak, aby false zakázala implicitní zahrnutí *.cs a jiných souborů s příponou jazyka.

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

EnableDefaultEmbeddedResourceItems

Vlastnost EnableDefaultEmbeddedResourceItems určuje, zda jsou vložené položky zdrojů implicitně zahrnuty do projektu. Výchozí hodnota je true. EnableDefaultEmbeddedResourceItems Nastavte vlastnost tak, aby false zakázala implicitní zahrnutí vložených souborů prostředků.

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

EnableDefaultNoneItems

Vlastnost EnableDefaultNoneItems řídí, zda None položky (soubory, které nemají žádnou roli v procesu sestavení) jsou implicitně zahrnuty do projektu. Výchozí hodnota je true. EnableDefaultNoneItems Nastavte vlastnost tak, aby false zakázala implicitní zahrnutí None položek.

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

Vlastnosti analýzy kódu

Následující vlastnosti nástroje MSBuild jsou popsány v této části:

AnalysisLevel

Vlastnost AnalysisLevel umožňuje zadat sadu analyzátorů kódu, které se mají spustit podle verze .NET. Každá verze .NET má sadu pravidel analýzy kódu. Z této sady jsou ve výchozím nastavení povolená pravidla pro danou verzi, která analyzují váš kód. Pokud například upgradujete z .NET 8 na .NET 9, ale nechcete, aby se změnila výchozí sada pravidel analýzy kódu, nastavte AnalysisLevel na 8.

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

Volitelně můžete zadat složenou hodnotu pro tuto vlastnost, která také určuje, jak agresivně povolit pravidla. Složené hodnoty mají tvar <version>-<mode>, kde <mode> hodnota je jednou z hodnot AnalysisMode . Následující příklad používá preview verzi analyzátorů kódu a umožňuje recommended sadu pravidel.

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

Výchozí hodnota:

  • Pokud váš projekt cílí .NET 5 nebo novější nebo pokud jste přidali vlastnost AnalysisMode, výchozí hodnota je latest.
  • Jinak se tato vlastnost vynechá, pokud ji explicitně nepřidáte do souboru projektu.

Následující tabulka uvádí hodnoty, které můžete zadat.

Value Meaning
latest Používají se nejnovější analyzátory kódu, které byly vydány. Tato možnost je výchozí.
latest-<mode> Používají se nejnovější analyzátory kódu, které byly vydány. Hodnota <mode> určuje, která pravidla jsou povolena.
preview Používají se nejnovější analyzátory kódu, i když jsou ve verzi Preview.
preview-<mode> Používají se nejnovější analyzátory kódu, i když jsou ve verzi Preview. Hodnota <mode> určuje, která pravidla jsou povolena.
10.0 Používá se sada pravidel, která byla k dispozici pro .NET 10 verzí, i když jsou k dispozici novější pravidla.
10.0-<mode> Používá se sada pravidel, která byla k dispozici pro .NET 10 verzí, i když jsou k dispozici novější pravidla. Hodnota <mode> určuje, která pravidla jsou povolena.
10 Používá se sada pravidel, která byla k dispozici pro .NET 10 verzí, i když jsou k dispozici novější pravidla.
10-<mode> Používá se sada pravidel, která byla k dispozici pro .NET 10 verzí, i když jsou k dispozici novější pravidla. Hodnota <mode> určuje, která pravidla jsou povolena.
9.0 Používá se sada pravidel, která byla k dispozici pro verzi .NET 9, i když jsou k dispozici novější pravidla.
9.0-<mode> Používá se sada pravidel, která byla k dispozici pro verzi .NET 9, i když jsou k dispozici novější pravidla. Hodnota <mode> určuje, která pravidla jsou povolena.
9 Používá se sada pravidel, která byla k dispozici pro verzi .NET 9, i když jsou k dispozici novější pravidla.
9-<mode> Používá se sada pravidel, která byla k dispozici pro verzi .NET 9, i když jsou k dispozici novější pravidla. Hodnota <mode> určuje, která pravidla jsou povolena.
8.0 Používá se sada pravidel, která byla k dispozici pro verzi .NET 8, i když jsou k dispozici novější pravidla.
8.0-<mode> Používá se sada pravidel, která byla k dispozici pro verzi .NET 8, i když jsou k dispozici novější pravidla. Hodnota <mode> určuje, která pravidla jsou povolena.
8 Používá se sada pravidel, která byla k dispozici pro verzi .NET 8, i když jsou k dispozici novější pravidla.
8-<mode> Používá se sada pravidel, která byla k dispozici pro verzi .NET 8, i když jsou k dispozici novější pravidla. Hodnota <mode> určuje, která pravidla jsou povolena.

Note

  • Pokud nastavíte EnforceCodeStyleInBuildtrue, tato vlastnost ovlivňuje pravidla stylu kódu (IDEXXXX) (kromě pravidel kvality kódu).
  • Pokud nastavíte složenou hodnotu AnalysisLevel, nemusíte zadávat AnalysisMode. Nicméně, pokud ano, AnalysisLevel má přednost před AnalysisMode.
  • Tato vlastnost nemá žádný vliv na analýzu kódu v projektech, které neodkazují na sadu project SDK, například starší projekty .NET Framework, které odkazují na balíček NuGet Microsoft.CodeAnalysis.NetAnalyzers. Další informace naleznete v tématu Povolení analýzy kódu ve starších projektech.

Kategorie AnalysisLevel<>

Tato vlastnost je stejná jako AnalysisLevel s tím rozdílem, že se vztahuje pouze na konkrétní kategorii pravidel analýzy kódu. Tato vlastnost umožňuje použít jinou verzi analyzátorů kódu pro určitou kategorii nebo povolit nebo zakázat pravidla na jiné úrovni než ostatní kategorie pravidel. Pokud tuto vlastnost vynecháte pro určitou kategorii pravidel, výchozí hodnota AnalysisLevel . Dostupné hodnoty jsou stejné jako pro AnalysisLevel.

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

Následující tabulka uvádí název vlastnosti pro každou kategorii pravidel.

Název vlastnosti Kategorie pravidla
<AnalysisLevelDesign> Pravidla návrhu
<AnalysisLevelDocumentation> Pravidla dokumentace
<AnalysisLevelGlobalization> Pravidla globalizace
<AnalysisLevelInteroperability> Pravidla přenositelnosti a interoperability
<AnalysisLevelMaintainability> Pravidla udržovatelnosti
<AnalysisLevelNaming> Pravidla pojmenování
<AnalysisLevelPerformance> Pravidla výkonu
<AnalysisLevelSingleFile> Pravidla jednosouborové aplikace
<AnalysisLevelReliability> Pravidla spolehlivosti
<AnalysisLevelSecurity> Pravidla zabezpečení
<AnalysisLevelStyle> Pravidla stylu kódu (IDEXXXX)
<AnalysisLevelUsage> Pravidla použití

AnalysisMode

Sada .NET SDK se dodává se všemi pravidly kvality kódu certifikační autority . Ve výchozím nastavení jsou povolená pouze ná pravidla jako upozornění sestavení v každé verzi .NET. Tato AnalysisMode vlastnost umožňuje přizpůsobit sadu pravidel, která jsou ve výchozím nastavení povolená. Můžete buď přepnout do agresivnějšího režimu analýzy, kde se můžete odhlásit z pravidel jednotlivě, nebo do konzervativnějšího režimu analýzy, kde se můžete přihlásit ke konkrétním pravidlům. Pokud například chcete povolit všechna pravidla jako upozornění sestavení, nastavte hodnotu na Allhodnotu .

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

V následující tabulce jsou uvedeny dostupné hodnoty možností. Jsou uvedené v rostoucím pořadí počtu povolených pravidel.

Value Description
None Všechna pravidla jsou zakázaná. Můžete selektivně vyjádřit výslovný souhlas s jednotlivými pravidly, která je povolí.
Default Výchozí režim, kdy jsou určitá pravidla povolená jako upozornění sestavení, jsou určitá pravidla povolená jako Visual Studio IDE návrhy a zbytek je zakázaný.
Minimum Agresivnější režim než Default režim. Některé návrhy, které důrazně doporučujeme pro vynucování sestavení, jsou povolené jako upozornění sestavení. Pokud chcete zjistit, která pravidla zahrnují, zkontrolujte %ProgramFiles%/do tnet/sdk/[version]/Sdks/Microsoft.NET. Sdk/analyzers/build/config/analysislevel_[level]_minimum.globalconfig soubor. (U .NET 7 a starších verzí je přípona souboru .editorconfig.)
Recommended Agresivnější režim než Minimum režim, kdy je jako upozornění sestavení povoleno více pravidel. Pokud chcete zjistit, která pravidla zahrnují, zkontrolujte %ProgramFiles%/do tnet/sdk/[version]/Sdks/Microsoft.NET. Sdk/analyzers/build/config/analysislevel_[level]_recommended.globalconfig soubor. (U .NET 7 a starších verzí je přípona souboru .editorconfig.)
All Všechna pravidla jsou povolená jako upozornění* sestavení. Můžete selektivně vyjádřit výslovný nesouhlas s individuálními pravidly a zakázat je.

* Následující pravidla nejsou povolena nastavením AnalysisModeAll na : AnalysisLevellatest-allCA1017, CA1045, CA1005, CA1014, CA1060, CA1021 a pravidly analyzátoru metrik kódu (CA1501, CA1502, CA1505, CA1506 a CA1509). Tato starší pravidla můžou být v budoucí verzi zastaralá. Přesto je ale můžete povolit jednotlivě pomocí dotnet_diagnostic.CAxxxx.severity = <severity> položky.

Note

  • Pokud nastavíte EnforceCodeStyleInBuildtrue, tato vlastnost ovlivňuje pravidla stylu kódu (IDEXXXX) (kromě pravidel kvality kódu).
  • Pokud například pro AnalysisLevel, můžete tuto vlastnost zcela vynechat. Pokud však zadáte obě vlastnosti, AnalysisLevel má přednost před AnalysisMode.

Kategorie AnalysisMode<>

Tato vlastnost je stejná jako AnalysisMode, s tím rozdílem, že se vztahuje pouze na konkrétní kategorii pravidel analýzy kódu. Tato vlastnost umožňuje povolit nebo zakázat pravidla na jiné úrovni než ostatní kategorie pravidel. Pokud tuto vlastnost vynecháte pro určitou kategorii pravidel, výchozí hodnota AnalysisMode . Dostupné hodnoty jsou stejné jako pro AnalysisMode.

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

Následující tabulka uvádí název vlastnosti pro každou kategorii pravidel.

Název vlastnosti Kategorie pravidla
<AnalysisModeDesign> Pravidla návrhu
<AnalysisModeDocumentation> Pravidla dokumentace
<AnalysisModeGlobalization> Pravidla globalizace
<AnalysisModeInteroperability> Pravidla přenositelnosti a interoperability
<AnalysisModeMaintainability> Pravidla udržovatelnosti
<AnalysisModeNaming> Pravidla pojmenování
<AnalysisModePerformance> Pravidla výkonu
<AnalysisModeSingleFile> Pravidla jednosouborové aplikace
<AnalysisModeReliability> Pravidla spolehlivosti
<AnalysisModeSecurity> Pravidla zabezpečení
<AnalysisModeStyle> Pravidla stylu kódu (IDEXXXX)
<AnalysisModeUsage> Pravidla použití

CodeAnalysisTreatWarningsAsErrors

Tato CodeAnalysisTreatWarningsAsErrors vlastnost umožňuje nakonfigurovat, jestli se má upozornění analýzy kvality kódu (CAxxxx) považovat za upozornění a přerušit sestavení. Pokud při sestavování projektů používáte příznak -warnaserror, .NET analýza kvality kódu upozornění se také považují za chyby. Pokud nechcete, aby se upozornění analýzy kvality kódu považovala za chyby, můžete nastavit CodeAnalysisTreatWarningsAsErrors vlastnost MSBuild na false soubor projektu.

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

EnableNETAnalyzers

.NET analýza kvality kódu je ve výchozím nastavení povolená pro projekty, které cílí na .NET 5 nebo novější verzi. Pokud vyvíjíte pomocí sady .NET 5+ SDK, můžete povolit analýzu kódu .NET pro projekty ve stylu sady SDK, které cílí na starší verze .NET nastavením vlastnosti EnableNETAnalyzers na true. Chcete-li zakázat analýzu kódu v libovolném projektu, nastavte tuto vlastnost na false.

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

Note

Tato vlastnost se vztahuje konkrétně na integrované analyzátory v sadě .NET 5+ SDK. Nemělo by se používat při instalaci balíčku analýzy kódu NuGet.

EnforceCodeStyleInBuild

.NET analýza stylu kódu je ve výchozím nastavení zakázaná při sestavení pro všechny projekty .NET. Analýzu stylu kódu pro projekty .NET můžete povolit nastavením vlastnosti EnforceCodeStyleInBuild na true. (Z důvodů výkonu se ale nespustí několik pravidel stylu kódu, která platí jenom v integrovaném vývojovém prostředí sady Visual Studio.)

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

Všechna pravidla stylu kódu, která jsou nakonfigurovaná tak, aby se zobrazovala upozornění nebo chyby, se spustí při porušeních sestavení a hlášení.

_SkipUpgradeNetAnalyzersNuGetWarning

Vlastnost _SkipUpgradeNetAnalyzersNuGetWarning umožňuje nakonfigurovat, jestli se zobrazí upozornění, pokud používáte analyzátory kódu z balíčku NuGet, který je zastaralý v porovnání s analyzátory kódu v nejnovější sadě .NET SDK. Upozornění vypadá nějak takto:

Sada .NET SDK obsahuje novější analyzátory s verzí 6.0.0, než jakou verzi 5.0.3 balíčku Microsoft.CodeAnalysis.NetAnalyzers poskytuje. Aktualizujte nebo odeberte tento odkaz na balíček.

Pokud chcete toto upozornění odebrat a dál používat verzi analyzátorů kódu v balíčku NuGet, nastavte _SkipUpgradeNetAnalyzersNuGetWarning v true souboru projektu.

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

Vlastnosti konfigurace modulu runtime

Určité chování modulu runtime můžete nakonfigurovat zadáním vlastností NÁSTROJE MSBuild v souboru projektu aplikace. Informace o dalších způsobech konfigurace chování modulu runtime naleznete v tématu Nastavení konfigurace modulu runtime.

AutoreleasePoolSupport

Tato AutoreleasePoolSupport vlastnost konfiguruje, zda každé spravované vlákno obdrží implicitní NSAutoreleasePool při spuštění na podporované platformě macOS. Další informace najdete v tématu AutoreleasePool o spravovaných vláknech.

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

ConcurrentGarbageCollection

Vlastnost ConcurrentGarbageCollection konfiguruje, zda je povoleno uvolňování paměti na pozadí (souběžné). Nastavte hodnotu tak, aby false se zakázalo uvolňování paměti na pozadí. Další informace naleznete v tématu Background GC.

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

InvariantGlobalization

Tato InvariantGlobalization vlastnost konfiguruje, jestli aplikace běží v režimu globalizace-invariant , což znamená, že nemá přístup k datům specifickým pro jazykovou verzi. Nastavte hodnotu tak, aby true se spustila v režimu globalizace invariant. Další informace naleznete v tématu Invariantní režim.

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

PredefinedCulturesOnly

Ve .NET 6 a novějších verzích vlastnost PredefinedCulturesOnly konfiguruje, jestli aplikace můžou vytvářet jiné jazykové verze než invariantní jazykovou verzi při globalization-invariant režimu. Výchozí hodnota je true. Nastavte hodnotu tak, aby false umožňovala vytváření jakékoli nové jazykové verze v globalizačním režimu invariantního režimu.

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

Další informace naleznete v tématu Vytvoření jazykové verze a mapování případů v režimu globalizace invariant.

RetainVMGarbageCollection

Vlastnost RetainVMGarbageCollection nakonfiguruje systém uvolňování paměti tak, aby se odstraněné segmenty paměti umístily do pohotovostního seznamu pro budoucí použití nebo je uvolněte. Nastavení hodnoty tak, aby true systému uvolňování paměti řeklo, že se segmenty umístí do pohotovostního seznamu. Další informace najdete v tématu Zachování virtuálního počítače.

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

ServerGarbageCollection

Vlastnost ServerGarbageCollection konfiguruje, zda aplikace používá uvolňování paměti pracovní stanice nebo uvolňování paměti serveru. Nastavte hodnotu tak, aby true používala uvolňování paměti serveru. Další informace naleznete v tématu Pracovní stanice a server.

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

ThreadPoolMaxThreads

Vlastnost ThreadPoolMaxThreads nakonfiguruje maximální počet vláken pro fond pracovních vláken. Další informace naleznete v tématu Maximální počet vláken.

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

ThreadPoolMinThreads

Vlastnost ThreadPoolMinThreads nakonfiguruje minimální počet vláken pro fond pracovních vláken. Další informace naleznete v tématu Minimální počet vláken.

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

TieredCompilation

Vlastnost TieredCompilation konfiguruje, zda kompilátor JIT (just-in-time) používá vrstvené kompilace. Nastavte hodnotu na false zakázání vrstvené kompilace. Další informace naleznete v tématu Vrstvené kompilace.

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

TieredCompilationQuickJit

Tato TieredCompilationQuickJit vlastnost konfiguruje, zda kompilátor JIT používá rychlé JIT. Nastavte hodnotu na zakázání false rychlého JIT. Další informace najdete v tématu Rychlá JIT.

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

TieredCompilationQuickJitForLoops

Vlastnost TieredCompilationQuickJitForLoops konfiguruje, zda kompilátor JIT používá rychlé JIT u metod, které obsahují smyčky. Nastavte hodnotu na true povolení rychlého JIT u metod obsahujících smyčky. Další informace najdete v tématu Rychlá JIT smyčky.

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

TieredPGO

Vlastnost TieredPGO určuje, jestli je povolená dynamická nebo vrstvovaná optimalizace s asistencí profilu (PGO). Nastavte hodnotu na true povolení vrstveného PGO. Další informace najdete v tématu Optimalizace s asistencí profilu.

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

UseWindowsThreadPool

Vlastnost UseWindowsThreadPool konfiguruje, zda je správa vláken fondu vláken delegována do fondu vláken Windows (pouze Windows). Výchozí hodnota je false, v takovém případě se používá fond vláken .NET. Další informace najdete v tématu Windows fondu vláken.

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

Následující vlastnosti nástroje MSBuild jsou popsány v této části:

AssetTargetFallback

Tato AssetTargetFallback vlastnost umožňuje zadat další kompatibilní verze rozhraní pro odkazy na projekty a balíčky NuGet. Pokud například zadáte závislost balíčku pomocí balíčku, PackageReference ale tento balíček neobsahuje prostředky, které jsou kompatibilní s vašimi projekty TargetFramework, AssetTargetFallback vlastnost přichází do hry. Kompatibilita odkazovaného balíčku se znovu zkontroluje pro každý cílový framework, který je zadaný v AssetTargetFallback. Tato vlastnost nahrazuje zastaralou vlastnost PackageTargetFallback.

Vlastnost můžete nastavit AssetTargetFallback na jednu nebo více cílových verzí rozhraní.

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

DisableImplicitFrameworkReferences

Vlastnost DisableImplicitFrameworkReferences řídí implicitní položky FrameworkReference při cílení na .NET Core 3.0 a novější verze. Při cílení na .NET Core 2.1 nebo .NET Standard 2.0 a starších verzích řídí implicitní PackageReference položky do balíčků v metabalíku. (Metabalíč je balíček založený na rozhraní, který se skládá pouze ze závislostí na jiných balíčcích.) Tato vlastnost také řídí implicitní odkazy, například System a System.Core při cílení na .NET Framework.

Nastavte tuto vlastnost na true zakázat implicitní FrameworkReference nebo PackageReference položky. Pokud tuto vlastnost nastavíte na true, můžete přidat explicitní odkazy pouze na architektury nebo balíčky, které potřebujete.

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

DisableTransitiveFrameworkReferenceDownloads

DisableTransitiveFrameworkReferenceDownloads Nastavte vlastnost tak, aby true se zabránilo stahování extra runtime a cílení balíčků, na které váš projekt přímo neodkazuje.

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

DisableTransitiveProjectReferences

Vlastnost DisableTransitiveProjectReferences řídí implicitní odkazy na projekt. Nastavte tuto vlastnost tak, aby true se zakázaly implicitní ProjectReference položky. Zakázáním implicitních odkazů na projekt vznikne nepřenosné chování podobné staršímu systému projektů.

Pokud je truetato vlastnost , má podobný účinek jako nastavení PrivateAssets="All" na všech závislostech závislého projektu.

Pokud tuto vlastnost nastavíte na true, můžete přidat explicitní odkazy pouze na projekty, které potřebujete.

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

ManagePackageVersionsCentrally

Vlastnost ManagePackageVersionsCentrally byla zavedena v .NET 7. Nastavením souboru trueDirectory.Packages.props v kořenovém adresáři úložiště můžete spravovat běžné závislosti v projektech z jednoho umístění. Přidejte verze pro běžné závislosti balíčků pomocí PackageVersion položek v souboru Directory.Packages.props . V jednotlivých souborech projektu pak můžete vynechat Version atributy ze všech PackageReference položek, které odkazují na centrálně spravované balíčky.

Příklad souboru Directory.Packages.props :

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

Soubor jednotlivého projektu:

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

Další informace najdete v tématu správa centrálních balíčků (CPM).

Obnovení odkazovaného balíčku nainstaluje všechny jeho přímé závislosti a všechny závislosti těchto závislostí. Obnovení balíčku můžete přizpůsobit zadáním vlastností, například RestorePackagesPath a RestoreIgnoreFailedSources. Další informace otěchtoch

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

UseMauiEssentials

UseMauiEssentials Nastavte vlastnost tak, aby true deklarovat explicitní odkaz na projekt nebo balíček, který závisí na MAUI Essentials. Toto nastavení zajistí, že váš projekt načítá správný známý odkaz na architekturu MAUI Essentials. Pokud váš projekt odkazuje na projekt, který používá MAUI Essentials, ale tuto vlastnost nenastavíte na , může dojít k trueupozornění NETSDK1186na sestavení .

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

ValidateExecutableReferencesMatchSelfContained

Vlastnost ValidateExecutableReferencesMatchSelfContained lze použít k zakázání chyb souvisejících se spustitelnými odkazy na projekt. Pokud .NET zjistí, že samostatný spustitelný projekt odkazuje na spustitelný projekt závislý na rozhraní nebo naopak, generuje chyby NETSDK1150 a NETSDK1151. Chcete-li těmto chybám zabránit, pokud je odkaz úmyslný, nastavte ValidateExecutableReferencesMatchSelfContained vlastnost na false.

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

WindowsSdkPackageVersion

Vlastnost WindowsSdkPackageVersion lze použít k přepsání verze balíčku cílení sady Windows SDK. Tato vlastnost byla zavedena v .NET 5 a nahrazuje použití položky FrameworkReference pro tento účel.

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

Note

Nedoporučujeme přepisovat verzi sady Windows SDK, protože balíčky cílení sady Windows SDK jsou součástí sady .NET 5 nebo novější. Pokud chcete odkazovat na nejnovější balíček sady WINDOWS SDK, aktualizujte svou verzi .NET SDK. Tato vlastnost by se měla používat jen ve výjimečných případech, jako je použití balíčků preview nebo přepsání verze C#/WinRT.

K spuštění aplikace pomocí dotnet run příkazu se používají následující vlastnosti:

RunArguments

Vlastnost RunArguments definuje argumenty, které se předávají aplikaci při jeho spuštění.

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

Tip

Další argumenty, které se mají předat do aplikace, můžete zadat pomocí -- možnosti pro dotnet run.

RunWorkingDirectory

Vlastnost RunWorkingDirectory definuje pracovní adresář pro proces aplikace, ve které se má spustit. Může to být absolutní cesta nebo cesta relativní k adresáři projektu. Pokud nezadáte adresář, OutDir použije se jako pracovní adresář.

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

Následující vlastnosti nástroje MSBuild jsou popsány v této části:

SdkAnalysisLevel

Vlastnost SdkAnalysisLevel, která se objevila v .NET 9, se dá použít ke konfiguraci způsobu, jakým jsou nástroje sady SDK strict SDK. Pomáhá spravovat úrovně upozornění sady SDK v situacích, kdy možná nebudete moct připnout sady SDK prostřednictvím global.json nebo jiných prostředků. Pomocí této vlastnosti můžete sdělit novější sadě SDK, aby se chovala stejně jako starší sada SDK, pokud jde o konkrétní nástroj nebo funkci, aniž byste museli instalovat starší sadu SDK.

Povolené hodnoty této vlastnosti jsou pásma funkcí sady SDK, například 8.0.100 a 8.0.400. Výchozí hodnota je v pásmu funkcí sady SDK spuštěné sady SDK. Například pro sadu SDK 9.0.102 je hodnota 9.0.100. (Informace o tom, jak je sada .NET SDK verze, najdete v tématu How .NET je verze.)

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

Další informace naleznete v tématu Sdk Analysis Level Property and Usage.

Následující tabulka shrnuje diagnostiku a chování ovlivněné SDKAnalysisLevel.

SDKAnalysisLevel Description Aktualizované chování
9.0.100 Obnovení diagnostiky zdrojů HTTP Vygeneruje místo upozornění NU1803 chybu NU1302.
10.0.100 Vyřazení balíčku Obnovit PrunePackageReference je ve výchozím nastavení povolený pro projekty, které cílí na .NET 8 nebo novější nebo .NET Standard 2.0+.
10.0.100 Překladač Obnovit se zamykacími soubory Používá vylepšený překladač grafu závislostí .NET 9 místo staršího překladače grafu závislostí (.NET 8 SDK a starší).
10.0.100 Chování Obnovit pro PackageReference bez verze Vygeneruje místo upozornění NU1603 chybu NU1015.

Note

Chování povolené SdkAnalysisLevel hodnotou stárne (vyprší) po třech hlavních verzích. Například verze 11.0.100 respektuje pouze hodnoty nižší než 8.0.100. Ve verzi 12.0.100 nebudou funkce, které by v předchozích verzích mohly být zakázány nastavením SdkAnalysisLevel hodnoty 8.0.100.

Vlastnosti související s platformou Microsoft.Testing.Platform

Následující vlastnosti nástroje MSBuild jsou popsány v této části:

IsTestingPlatformApplication

Pokud váš projekt odkazuje na balíček Microsoft.Testing.Platform.MSBuild , nastavení IsTestingPlatformApplication na true (což je také výchozí hodnota, pokud není zadána) provede následující:

  • Vygeneruje vstupní bod do testovacího projektu.
  • Vygeneruje konfigurační soubor.
  • Zjistí rozšíření.

Nastavením vlastnosti zakážete false tranzitivní závislost na balíčku. Tranzitivní závislost je, když se projekt, který odkazuje na jiný projekt, který odkazuje na daný balíček, chová, jako by odkazoval na balíček. Tuto vlastnost false byste obvykle nastavili v netestovacím projektu, který odkazuje na testovací projekt. Další informace najdete v tématu chyba CS8892.

Pokud váš testovací projekt odkazuje na MSTest, NUnit nebo xUnit, tato vlastnost je nastavena na stejnou hodnotu jako EnableMSTestRunner, EnableNUnitRunner

Enable[NugetPackageNameWithoutDots]

Pomocí vlastnosti se vzorem Enable[NugetPackageNameWithoutDots] povolte nebo zakažte rozšíření Microsoft.Testing.Platform.

Pokud chcete například povolit rozšíření výpisu stavu systému (balíček NuGet Microsoft.Testing.Extensions.CrashDump), nastavte EnableMicrosoftTestingExtensionsCrashDump hodnotu true.

Další informace naleznete v tématu Povolení nebo zakázání rozšíření.

EnableAspireTesting

Pokud používáte sadu SDK projektu MSTest, můžete pomocí EnableAspireTesting vlastnosti přenést všechny závislosti a výchozí using direktivy, které potřebujete pro testování pomocí Aspire a MSTest. Tato vlastnost je k dispozici v MSTest 3.4 a novějších verzích.

Další informace naleznete v tématu Test with Aspire.

EnablePlaywright

Pokud používáte sadu SDK projektu MSTest, můžete pomocí EnablePlaywright vlastnosti přenést všechny závislosti a výchozí using direktivy, které potřebujete pro testování pomocí Playwright a MSTest. Tato vlastnost je k dispozici v MSTest 3.4 a novějších verzích.

Další informace naleznete v tématu Playwright.

EnableMSTestRunner

Tato EnableMSTestRunner vlastnost povolí nebo zakáže použití platformy Microsoft.Testing.Platform (MTP), odlehčené a přenosné alternativy k VSTest. Tato vlastnost je k dispozici v MSTest 3.2 a novějších verzích.

Note

Pokud váš projekt určuje sadu MSTest SDK, nemusíte tuto vlastnost nastavit. Nastaví se automaticky.

EnableNUnitRunner

Tato EnableNUnitRunner vlastnost povolí nebo zakáže použití spouštěče NUnit. NUnit runner je lehká a přenosná alternativa KSTest. Tato vlastnost je k dispozici v NUnit3TestAdapter ve verzi 5.0 a novější.

UseMicrosoftTestingPlatformRunner

Tato UseMicrosoftTestingPlatformRunner vlastnost povolí nebo zakáže použití Microsoft.Testing.Platform runneru v testovacích projektech xUnit.v3 .

GenerateTestingPlatformEntryPoint

Nastavení vlastnosti GenerateTestingPlatformEntryPoint na false zakáže automatické generování vstupního bodu programu v testovacích projektech, které používají Microsoft.Testing.Platform. Tuto vlastnost false můžete chtít nastavit při ručním definování vstupního bodu nebo při odkazování na testovací projekt ze spustitelného souboru, který má také vstupní bod.

Další informace najdete v tématu chyba CS8892.

Chcete-li řídit generování vstupního bodu v projektu VSTest, použijte GenerateProgramFile vlastnost.

GenerateTestingPlatformConfigurationFile

Vlastnost GenerateTestingPlatformConfigurationFile je k dispozici pouze v případech, kdy isTestingPlatformApplication je true. Slouží k povolení kopírování a přejmenování konfiguračního souboru ve výstupní složce.

TestingPlatformCaptureOutput

Vlastnost TestingPlatformCaptureOutput řídí, zda všechny výstupy konzoly, které testovací spustitelné zápisy jsou zachyceny a skryty uživateli při použití dotnet test ke spuštění Microsoft.Testing.Platform testů. Ve výchozím nastavení je výstup konzoly skrytý. Tento výstup obsahuje banner, informace o verzi a formátované testovací informace. Nastavte tuto vlastnost tak, aby false se tyto informace zobrazovaly společně s výstupem NÁSTROJE MSBuild.

Další informace najdete v tématu Zobrazení kompletního výstupu platformy.

TestingPlatformCommandLineArguments

Vlastnost TestingPlatformCaptureOutput umožňuje zadat argumenty příkazového řádku do testovací aplikace, když použijete dotnet test ke spouštění Microsoft.Testing.Platform testů. Následující fragment kódu souboru projektu ukazuje příklad.

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

TestingPlatformDotnetTestSupport

Vlastnost TestingPlatformDotnetTestSupport umožňuje testování aplikací Microsoft.Testing.Platform při použití režimu VSTest .dotnet test

Note

Nevyvolávejte dotnet test řešení, které má projekty VSTest i Microsoft.Testing.Platform, protože tento scénář není podporovaný.

Další informace naleznete v tématu Testování pomocí dotnet test.

TestingPlatformShowTestsFailure

Tato TestingPlatformShowTestsFailure vlastnost umožňuje určit, jestli se při spuštění dotnet test testů hlásí jedna chyba nebo všechny chyby v neúspěšném testu. Ve výchozím nastavení se selhání testů shrnují do souboru .log a do nástroje MSBuild se hlásí jedno selhání na jeden testovací projekt. Pokud chcete zobrazit chyby na neúspěšný test, nastavte tuto vlastnost do true souboru projektu.

TestingExtensionsProfile

Při použití sady SDK projektu MSTest umožňuje vlastnost vybrat profil, TestingExtensionsProfile který se má použít. V následující tabulce jsou uvedené povolené hodnoty.

Value Description
Default Povolí doporučená rozšíření pro tuto verzi msTest.SDK.
None Nejsou povolena žádná rozšíření.
AllMicrosoft Povolte všechna rozšíření dodávaná Microsoftem (včetně rozšíření s omezující licencí).

Další informace naleznete v tématu profil Microsoft.Testing.Platform.

Vlastnosti související s VSTest

Následující vlastnosti nástroje MSBuild jsou popsány v této části:

IsTestProject

Vlastnost IsTestProject je nastavena na trueMicrosoft.NET. Balíček NuGet sady Test.Sdk Označuje, zda je projekt testovacím projektem VSTest, aby byl rozpoznán dotnet test.

Note

Pokud váš projekt určuje MSTest SDK, nemusíte tuto vlastnost nastavit, protože MSTest.Sdk odkazuje na Microsoft.NET. Balíček NuGet test.sdk

UseVSTest

Nastavte vlastnost UseVSTest na true přepnutí z Microsoft.Testing.Platform na VSTest runner při použití sady SDK projektu MSTest.

Vlastnosti související s MSTest

Následující vlastnosti nástroje MSBuild jsou popsány v této části:

MSTestAnalysisMode

Tato vlastnost rozhoduje, které analyzátory jsou povoleny v jaké závažnosti. Další informace najdete v tématu analýzy kódu MSTest .

Následující vlastnosti nástroje MSBuild jsou popsány v této části:

AppHostDotNetSearch

Vlastnost AppHostDotNetSearch konfiguruje, jak nativní spustitelný soubor vytvořený pro aplikaci vyhledá instalaci .NET. Tato vlastnost má vliv pouze na spustitelný soubor vytvořený při publikování, nikoli sestavení.

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

V následující tabulce jsou uvedeny platné hodnoty. Můžete zadat více hodnot oddělených středníky.

Value Meaning
AppLocal Složka spustitelného souboru aplikace
AppRelative Cesta vzhledem ke spustitelnému souboru aplikace podle specifikace AppHostRelativeDotNet
EnvironmentVariable Hodnota proměnných DOTNET_ROOT[_<arch>] prostředí
Global Registrovaná a výchozí globální umístění instalace

Tato vlastnost byla zavedena v .NET 9.

AppHostRelativeDotNet

Vlastnost AppHostRelativeDotNet umožňuje zadat relativní cestu ke spustitelnému souboru aplikace, aby vyhledal instalaci .NET, když je konfigurováno. AppHostRelativeDotNet Nastavení vlastnosti znamená, že AppHostDotNetSearch je AppRelative. Tato vlastnost má vliv pouze na spustitelný soubor vytvořený při publikování, nikoli sestavení.

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

Tato vlastnost byla zavedena v .NET 9.

EnableComHosting

Vlastnost EnableComHosting označuje, že sestavení poskytuje server COM. EnableComHosting Nastavení také true znamená, že EnableDynamicLoading je true.

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

Další informace najdete v tématu Expose .NET komponent com.

EnableDynamicLoading

Vlastnost EnableDynamicLoading označuje, že sestavení je dynamicky načtená komponenta. Komponentou může být knihovna MODELU COM nebo jiná knihovna než COM, kterou lze použít z nativního hostitele nebo použít jako modul plug-in. Nastavení této vlastnosti má true následující účinky:

  • Vygeneruje se soubor .runtimeconfig.json .
  • RollForward je nastaven na LatestMinorhodnotu .
  • Odkazy NuGet se kopírují místně.
<PropertyGroup>
  <EnableDynamicLoading>true</EnableDynamicLoading>
</PropertyGroup>

Vygenerované vlastnosti souboru

Následující vlastnosti se týkají kódu ve vygenerovaných souborech:

CompilerGeneratedFilesOutputPath

Vlastnost CompilerGeneratedFilesOutputPath určuje adresář, kde zdrojové generátor výstupní soubory jsou zapsány, když EmitCompilerGeneratedFiles je nastavena na true. Cesta může být absolutní nebo relativní k adresáři projektu. Pokud tuto vlastnost nenastavíte, vygenerované soubory se umístí do vygenerovaného podadresáře pod zprostředkující výstupní cestou (obvykle obj/<configuration>/<targetframework>/generated).

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

Pokud tuto vlastnost nastavíte na cestu uvnitř zdrojového stromu projektu, generované soubory se můžou v budoucích buildech vyzvednout jako zdrojové soubory. Abyste se vyhnuli dvojité kompilaci, vyloučte vygenerované soubory z Compile položky:

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

DisableImplicitNamespaceImports

Vlastnost DisableImplicitNamespaceImports lze použít k zakázání implicitních importů oborů názvů v projektech Visual Basic, které cílí na .NET 6 nebo novější verzi. Implicitní obory názvů jsou výchozí obory názvů, které se v projektu Visual Basic importují globálně. Nastavte tuto vlastnost tak, aby true zakázala implicitní importy oborů názvů.

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

EmitCompilerGeneratedFiles

Vlastnost EmitCompilerGeneratedFiles řídí, zda jsou výstupní soubory generátoru zdrojového zdroje zapsány na disk během sestavení. Nastavte tuto vlastnost tak, aby true se toto chování povolilo. Ve výchozím nastavení existuje výstup zdrojového generátoru pouze v paměti a není zapsán na disk.

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

Pokud tuto vlastnost nastavíte na true, vygenerované soubory se umístí do vygenerovaného podadresáře pod zprostředkující výstupní cesta (obvykle obj/<configuration>/<targetframework>/generated), pokud nezadáte jiné umístění pomocí CompilerGeneratedFilesOutputPath vlastnost.

Zápis vygenerovaných souborů na disk vám umožní je zkontrolovat. Potvrzení vygenerovaných souborů do správy zdrojového kódu pouze v případě, že máte konkrétní důvod, například když generátory nejsou ve vašem prostředí sestavení dostupné nebo když potřebujete zkontrolovat, deterministické generované artefakty.

ImplicitUsings

Vlastnost ImplicitUsings lze použít k povolení a zakázání implicitních direktiv global using v projektech C#, které cílí na .NET 6 nebo novější verzi a jazyk C# 10 nebo novější. Pokud je tato funkce povolená, sada .NET SDK přidá direktivy global using pro sadu výchozích oborů názvů na základě typu sady SDK projektu. Nastavte tuto vlastnost na true nebo enable povolit implicitní global using direktivy. Chcete-li zakázat implicitní global using direktivy, odeberte vlastnost nebo ji nastavte na false nebo disable.

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

Note

Šablony pro nové projekty C#, které cílí na .NET 6 nebo novější, mají ve výchozím nastavení nastavenou hodnotu ImplicitUsings na enable.

Pokud chcete definovat explicitní global using direktivu , přidejte položku Using .

Items

Položky NÁSTROJE MSBuild jsou vstupy do systému sestavení. Položky jsou zadány podle jejich typu, což je název prvku. Jedná se například CompileReference o dva běžné typy položek. Sada .NET SDK zpřístupní následující další typy položek:

U těchto položek můžete použít libovolný ze standardních atributů položky, Include například a Update. Slouží Include k přidání nové položky a použití Update k úpravě existující položky. Například Update se často používá k úpravě položky, která byla implicitně přidána .NET SDK.

AssemblyMetadata

Položka AssemblyMetadata určuje atribut sestavení páru AssemblyMetadataAttribute klíč-hodnota. Metadata Include se stanou klíčem a Value metadata se stanou hodnotou.

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

InternalsVisibleTo

Položka InternalsVisibleTo vygeneruje InternalsVisibleToAttribute atribut sestavení pro zadané přátelské sestavení.

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

Pokud je známé sestavení podepsáno, můžete zadat volitelná Key metadata pro zadání jeho úplného veřejného klíče. Pokud nezadáte Key metadata a $(PublicKey) je k dispozici, použije se tento klíč. Jinak se do atributu nepřidá žádný veřejný klíč.

FrameworkReference

Položka FrameworkReference definuje odkaz na sdílenou architekturu .NET.

Atribut Include určuje ID architektury.

Fragment kódu souboru projektu v následujícím příkladu odkazuje na sdílenou architekturu Microsoft.AspNetCore.App.

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

PackageReference

Položka PackageReference definuje odkaz na balíček NuGet.

Atribut Include určuje ID balíčku. Atribut Version určuje verzi nebo rozsah verzí. Informace o tom, jak zadat minimální verzi, maximální verzi, rozsah nebo přesnou shodu, naleznete v tématu Rozsahy verzí.

Fragment kódu souboru projektu v následujícím příkladu odkazuje na balíček System.Runtime .

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

Prostředky závislostí můžete řídit také pomocí metadat, jako PrivateAssetsje .

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

Další informace naleznete v tématu Odkazy na balíčky v souborech projektu.

TrimmerRootAssembly

Položka TrimmerRootAssembly umožňuje vyloučit sestavení z oříznutí. Oříznutí je proces odebrání nepoužívaných částí modulu runtime z zabalené aplikace. V některých případech může oříznutí nesprávně odebrat požadované odkazy.

Následující kód XML vyloučí System.Security sestavení z oříznutí.

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

Další informace najdete v tématu Možnosti oříznutí.

Using

Položka Using umožňuje globálně zahrnout obor názvů do projektu C#, abyste nemuseli přidávat direktivu using pro obor názvů v horní části zdrojových souborů. Tato položka se podobá položce Import, kterou lze použít pro stejný účel v projektech Visual Basic. Tato vlastnost je dostupná od .NET 6.

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

Položku můžete také použít Using k definování globálních using <alias> direktiv a using static <type> direktiv.

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

Například:

  • <Using Include="Microsoft.AspNetCore.Http.Results" Alias="Results" /> emituje global using Results = global::Microsoft.AspNetCore.Http.Results;
  • <Using Include="Microsoft.AspNetCore.Http.Results" Static="True" /> emituje global using static global::Microsoft.AspNetCore.Http.Results;

Další informace najdete v tématu using aliasů.

Metadata položek

Kromě standardních atributů položek MSBuild item jsou následující značky metadat položek zpřístupněny sadou .NET SDK:

CopyToPublishDirectory

CopyToPublishDirectory Metadata položky NÁSTROJE MSBuild řídí při zkopírování položky do adresáře publikování. V následující tabulce jsou uvedené povolené hodnoty.

Value Description
PreserveNewest Zkopíruje položku pouze v případě, že se změnila ve zdrojovém umístění.
IfDifferent Zkopíruje položku pouze v případě, že se změnila ve zdrojovém nebo cílovém umístění. Toto nastavení je užitečné v situacích, kdy potřebujete resetovat změny, ke kterým dochází po publikování.
Always Vždy zkopíruje položku.
Never Nikdy položku nekopírujte.

Z hlediska výkonu je vhodnější, PreserveNewest protože umožňuje přírůstkové sestavení. Nepoužívejte Always a místo toho používejte IfDifferent, což zabraňuje zápisům vstupně-výstupních operací bez efektu.

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

LinkBase

U položky mimo adresář projektu a jeho podadresáře používá cíl publikování metadata odkazu položky k určení, kam se má položka zkopírovat. Link také určuje, jak se položky mimo strom projektu zobrazují v okně Solution Explorer Visual Studio.

Pokud Link není určena pro položku, která je mimo kužel projektu, je výchozí hodnota %(LinkBase)\%(RecursiveDir)%(Filename)%(Extension). LinkBase umožňuje určit rozumnou základní složku pro položky mimo kužel projektu. Hierarchie složek v základní složce je zachována prostřednictvím RecursiveDir. Pokud LinkBase není zadaný, vynechá se z Link cesty.

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

Následující obrázek ukazuje, jak se v Solution Explorer zobrazí soubor, který je součástí předchozí položky Include glob.

Solution Explorer zobrazující položku s metadaty.

Viz také