Referenční informace k nástroji MSBuild pro projekty .NET SDK

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

Poznámka:

Tato stránka probíhá a neobsahuje seznam všech užitečných vlastností 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:

Poznámka:

Tyto vlastnosti nejsou součástí sady .NET SDK (zatím). 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 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.

Poznámka:

Tato vlastnost je ignorována, pokud TargetFramework je zadána (singulární).

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

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

NetStandardImplicitPackageVersion

Poznámka:

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 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>

Vlastnosti balíčku

Popisné vlastnosti

Můžete zadat vlastnosti, jako PackageIdje , , PackageIconPackageVersion, 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>

Poznámka:

  • Počínaje sadou .NET 8 SDK je PackRelease výchozí hodnota true. Další informace naleznete v tématu dotnet pack používá konfiguraci vydané verze.
  • Pouze sada .NET 7 SDK: Pokud chcete použít PackRelease projekt, který je součástí řešení sady Visual Studio, musíte proměnnou DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS prostředí nastavit na true (nebo jinou hodnotu). U řešení s mnoha projekty se nastavením této proměnné zvýší doba potřebná k zabalení.

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>

Nepotřebné funkce ApiCompatPermit

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

Výchozí hodnota je false.

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

Nepotřebné nástroje ApiCompatPreserve

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 EnableStrictModeForCompatibleFrameworksInPackage truehodnotu , 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="net7.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 pro aplikaci .NET 5 se výstupní cesta změní z bin\Debug\net5.0 bin\Debug následujícího nastavení:

<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 je k dispozici, identifikátor modulu runtime k výstupní cestě. Nastavením AppendRuntimeIdentifierToOutputPath zabráníte false připojení identifikátoru RID k výstupní cestě.

Například pro aplikaci .NET 5 a identifikátor RID win-x64v následujícím nastavení se změní výstupní cesta z bin\Debug\net5.0\win-x64 bin\Debug\net5.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 sadou .NET 6 SDK se soubor [Appname].runtimesettings.dev.json už v době kompilace negeneruje. 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, zda jsou satelitní sestavení generována pomocí csc.exe nebo Al.exe (Assembly Linker) v projektech rozhraní .NET Framework. (Projekty .NET Core a .NET 5+ vždy používají csc.exe ke generování satelitních sestavení.) U projektů rozhraní .NET Framework jsou satelitní sestavení vytvořena ve výchozím nastavení 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:

<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 sadě Visual Studio, který používá PublishOnly cíl. 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 souborů Razor za běhu.

<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 OutDir adresáře. V .NET 6 a novějších verzích můžete pomocí ProduceReferenceAssemblyInOutDir vlastnosti určit, zda jsou referenční sestavení zapsána do OutDir adresáře. 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 prostředků za běhu, 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>

Poznámka:

  • Počínaje sadou .NET 8 SDK se ve výchozím nastavení nastaví true pro projekty, PublishRelease 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:Publisha mění pouze konfiguraci pouze při publikování prostřednictvím rozhraní .NET CLI.
  • Pouze sada .NET 7 SDK: Pokud chcete použít PublishRelease projekt, který je součástí řešení sady Visual Studio, musíte proměnnou DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS prostředí nastavit na true (nebo jinou hodnotu). Při publikování řešení s povolenou touto proměnnou má hodnota spustitelného projektu PublishRelease přednost a tok nové výchozí konfigurace do všech ostatních projektů v řešení. Pokud řešení obsahuje více spustitelných nebo nejvyšších projektů s odlišnými hodnotami PublishRelease, řešení se úspěšně nepublikuje. U řešení, která mají mnoho projektů, se pomocí tohoto nastavení zvýší doba potřebná k publikování.

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 PublishSelfContained SelfContained.

<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:

Hodnota Popis
Minor Výchozí, pokud není zadáno.
Pokud chybí požadovaná podverze, přejděte na nejnižší nižší podverzi. Pokud je požadovaná podverze k dispozici, použije se LatestPatch zásada.
Major Pokud chybí požadovaná hlavní verze, přejděte k další dostupné vyšší hlavní verzi a nejnižší podverzi. Pokud je požadovaná hlavní verze přítomen, použije se Minor zásada.
LatestPatch Přechod na nejvyšší verzi opravy Tato hodnota zakáže vrácení podverze vpřed.
LatestMinor Roll-forward to highest minor version, even if requested minor version is present.
LatestMajor Roll-forward to highest major and highest minor version, even ifed major is present.
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>

SatelitníresourceLanguages

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>

Poznámka:

  • 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. Příklad:

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

SelfContained

Vlastnost SelfContained informuje a dotnet publish sestaví dotnet build 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 Nasazení aplikace .NET.

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.

Vlastnost Hodnoty Popis
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é.

Poznámka:

V současné době nastavení této vlastnosti true funguje pouze v případě, že přidáte odkaz na konkrétní balíček zprostředkovatele SourceLink nebo <SourceRoot Include="$(MyDirectory)" /> položku. Další informace najdete v tématu dotnet/roslyn problém 55860.

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 GITHUB_ACTIONSnázev proměnné:

<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 řídí, 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.0 implikuje 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.

Poznámka:

Pokud LogicalNameje pro EmbeddedResource položku zadána hodnota , ManifestResourceNamenebo DependentUpon 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 nastavena 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

EnableWindowsTargeting Nastavte vlastnost pro true vytváření aplikací pro Windows (například model Windows Forms nebo aplikací Windows Presentation Foundation) na platformě mimo 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í.

Poznámka:

Tato vlastnost se v současné době doporučuje povolit vývoj na platformách mimo Windows. Jakmile je ale aplikace připravená k vydání, měla by být vytvořená ve Windows. Při sestavování na platformě jiné než Windows nemusí být výstup stejný jako při sestavování ve Windows. Zejména spustitelný soubor není označený jako aplikace pro Windows (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 dokumentačních komentářích XML (C#), dokumentování kódu pomocí XML (Visual Basic) nebo dokumentování kódu pomocí 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>

Důležité

Pokud vlastnost nastavíte GenerateRequiresPreviewFeaturesAttribute Falsena , 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á jsou implicitně aktivována sadou Visual Studio, přeskočí 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 Falsehodnotu OptimizeImplicitlyTriggeredBuild .

<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>

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>

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

Tato AnalysisLevel vlastnost umožňuje zadat sadu analyzátorů kódu, které se mají spustit podle verze .NET. Každá verze .NET počínaje rozhraním .NET 5 má sadu pravidel analýzy kódu. Z této sady budou pravidla povolená ve výchozím nastavení pro danou verzi analyzovat váš kód. Pokud například upgradujete na .NET 8, ale nechcete, aby se výchozí sada pravidel analýzy kódu změnila, nastavte AnalysisLevel na 7hodnotu .

<PropertyGroup>
  <AnalysisLevel>preview</AnalysisLevel>
</PropertyGroup>

Volitelně můžete v rozhraní .NET 6 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á verzi Preview analyzátorů kódu a umožňuje doporučenou sadu pravidel.

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

Výchozí hodnota:

  • Pokud váš projekt cílí na .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.

Hodnota Význam
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.
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.
7.0 Používá se sada pravidel, která byla k dispozici pro verzi .NET 7, i když jsou k dispozici novější pravidla.
7.0-<mode> Používá se sada pravidel, která byla k dispozici pro verzi .NET 7, i když jsou k dispozici novější pravidla. Hodnota <mode> určuje, která pravidla jsou povolena.
7 Používá se sada pravidel, která byla k dispozici pro verzi .NET 7, i když jsou k dispozici novější pravidla.
7-<mode> Používá se sada pravidel, která byla k dispozici pro verzi .NET 7, i když jsou k dispozici novější pravidla. Hodnota <mode> určuje, která pravidla jsou povolena.
6.0 Používá se sada pravidel, která byla k dispozici pro verzi .NET 6, i když jsou k dispozici novější pravidla.
6.0-<mode> Používá se sada pravidel, která byla k dispozici pro verzi .NET 6, i když jsou k dispozici novější pravidla. Hodnota <mode> určuje, která pravidla jsou povolena.
6 Používá se sada pravidel, která byla k dispozici pro verzi .NET 6, i když jsou k dispozici novější pravidla.
6-<mode> Používá se sada pravidel, která byla k dispozici pro verzi .NET 6, i když jsou k dispozici novější pravidla. Hodnota <mode> určuje, která pravidla jsou povolena.
5.0 Používá se sada pravidel, která byla k dispozici pro verzi .NET 5, i když jsou k dispozici novější pravidla.
5.0-<mode> Používá se sada pravidel, která byla k dispozici pro verzi .NET 5, i když jsou k dispozici novější pravidla. Hodnota <mode> určuje, která pravidla jsou povolena.
5 Používá se sada pravidel, která byla k dispozici pro verzi .NET 5, i když jsou k dispozici novější pravidla.
5-<mode> Používá se sada pravidel, která byla k dispozici pro verzi .NET 5, i když jsou k dispozici novější pravidla. Hodnota <mode> určuje, která pravidla jsou povolena.

Poznámka:

  • Počínaje rozhraním .NET 6, pokud nastavíte EnforceCodeStyleInBuild na , tato vlastnost má vliv na truepravidla 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 SDK projektu, například starší projekty rozhraní .NET Framework, které odkazují na balíček NuGet Microsoft.CodeAnalysis.NetAnalyzers.

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 pro zvýšení kvality kódu certifikační autority. Ve výchozím nastavení jsou v každé vydané verzi .NET povolená pouze některá pravidla jako upozornění sestavení. 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.

Hodnota Popis
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 návrhy integrovaného vývojového prostředí sady Visual Studio 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 to zahrnuje, zkontrolujte soubor %ProgramFiles%/dotnet/sdk/[version]/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_[level]_minimum.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 soubor %ProgramFiles%/dotnet/sdk/[version]/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_[level]_recommended.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 All AnalysisMode na : AnalysisLevel latest-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.

Poznámka:

  • Počínaje rozhraním .NET 6, pokud nastavíte EnforceCodeStyleInBuild na , tato vlastnost má vliv na truepravidla stylu kódu (IDEXXXX) (kromě pravidel kvality kódu).
  • Pokud například pro AnalysisLevel<AnalysisLevel>8-recommended</AnalysisLevel> použijete složenou hodnotu, můžete tuto vlastnost zcela vynechat. Pokud však zadáte obě vlastnosti, AnalysisLevel má přednost před AnalysisMode.
  • Tato vlastnost nemá žádný vliv na analýzu kódu v projektech, které neodkazují na sadu SDK projektu, například starší projekty rozhraní .NET Framework, které odkazují na balíček NuGet Microsoft.CodeAnalysis.NetAnalyzers.

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žijete -warnaserror příznak, upozornění analýzy kvality kódu .NET 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

Analýza kvality kódu .NET 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 EnableNETAnalyzers vlastnosti na true. Chcete-li zakázat analýzu kódu v libovolném projektu, nastavte tuto vlastnost na false.

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

Poznámka:

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

Analýza stylu kódu .NET 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 EnforceCodeStyleInBuild vlastnosti na true.

<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

Tato _SkipUpgradeNetAnalyzersNuGetWarning vlastnost 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 poskytuje balíček Microsoft.CodeAnalysis.NetAnalyzers. 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>

PředdefinovanéCulturesOnly

V .NET 6 a novějších verzích vlastnost konfiguruje, PredefinedCulturesOnly zda aplikace mohou vytvářet jiné jazykové verze než invariantní jazykovou verzi, když je povolen režim globalizace invariant. 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>

Vrstvené dokončování

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>

Vrstvené funkcePGO

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

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

<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 pomocí každé cílové architektury, 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í FrameworkReference položky 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í řídí implicitní položky PackageReference na balíčky 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 rozhraní .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 true Directory.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="7.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í FrameworkReference položky pro tento účel.

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

Poznámka:

Nedoporučujeme přepisovat verzi sady Windows SDK, protože balíčky cílení sady Windows SDK jsou součástí sady .NET 5+ SDK. Pokud chcete odkazovat na nejnovější balíček sady Windows SDK, aktualizujte svou verzi sady .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>

Testování vlastností souvisejících s projektem

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

IsTestProject

Vlastnost IsTestProject označuje, že projekt je testovací projekt. Pokud je tato vlastnost nastavena na true, ověření, zda projekt odkazuje na samostatný spustitelný soubor je zakázán. Důvodem je to, že testovací projekty mají rozhraní API, která obvykle OutputType Exe volají v odkazovaném spustitelném souboru, a ne se snaží spustit. Pokud navíc projekt odkazuje na projekt, na který IsTestProject je nastavený true, testovací projekt se neověří jako spustitelný odkaz.

Tato vlastnost je potřebná hlavně pro dotnet test scénář a nemá žádný vliv při použití vstest.console.exe.

Poznámka:

Pokud váš projekt určuje sadu MSTest SDK, nemusíte tuto vlastnost nastavit. Nastaví se automaticky. Podobně je tato vlastnost nastavena automaticky pro projekty, které odkazují na balíček NuGet Microsoft.NET.Test.Sdk propojený s VSTest.

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 nebo UseMicrosoftTestingPlatformRunner (pro xUnit).

Povolit[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 Testování pomocí rozhraní .NET 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í msTest runneru. MSTest runner je jednoduchá a přenosná alternativa k VSTest. Tato vlastnost je k dispozici v MSTest 3.2 a novějších verzích.

Poznámka:

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ší.

GenerateTestingPlatformEntryPoint

GenerateTestingPlatformEntryPoint Nastavením vlastnosti zakážete false automatické generování vstupního bodu programu v testovacím projektu MSTest, NUnit nebo xUnit. 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.

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

Tato TestingPlatformDotnetTestSupport vlastnost umožňuje určit, zda se VSTest používá při použití dotnet test ke spouštění testů. Pokud tuto vlastnost nastavíte na true, VSTest je zakázáno a všechny Microsoft.Testing.Platform testy jsou spouštěny přímo.

Pokud máte řešení, které obsahuje projekty testů VSTest a projekty MSTest, NUnit nebo XUnit, měli byste provést jedno volání na režim (to znamená, dotnet test že neproběhne testy z VSTest i novější platformy v jednom volání).

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.

Hodnota Popis
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 profilu MSTest runner.

UseVSTest

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

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

AppHostDotNetSearch

Tato AppHostDotNetSearch vlastnost konfiguruje způsob, jakým 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.

Hodnota Význam
AppLocal Složka spustitelného souboru aplikace
AppRelative Cesta vzhledem ke spustitelnému souboru aplikace podle specifikace AppHostRelativeDotNet
EnvironmentVariables 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

Tato AppHostRelativeDotNet vlastnost umožňuje zadat relativní cestu ke spustitelnému souboru aplikace, aby vyhledala instalaci .NET, když je nakonfigurovaná. 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 naleznete v tématu Zveřejnění komponent .NET modelu 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:

DisableImplicitNamespaceImports

Vlastnost DisableImplicitNamespaceImports lze použít k zakázání implicitních importů oboru 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 importují globálně v projektu jazyka Visual Basic. Nastavte tuto vlastnost tak, aby true zakázala implicitní importy oborů názvů.

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

Implicitní úpravy

Vlastnost ImplicitUsings lze použít k povolení a zakázání implicitních global using direktiv v projektech C#, které cílí na .NET 6 nebo novější verzi a C# 10 nebo novější. Pokud je tato funkce povolená, sada .NET SDK přidává global using direktivy 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>

Poznámka:

Šablony pro nové projekty C#, které cílí na enable .NET 6 nebo novější, jsou ImplicitUsings standardně nastavené na.

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 Compile Reference 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. Často se například Update používá k úpravě položky, která byla implicitně přidána sadou .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í.

Použití

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 je podobná Import položce, kterou lze použít pro stejný účel v projektech jazyka Visual Basic. Tato vlastnost je dostupná od verze .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>

Pří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 Direktivy ausing static <type> direktivy aliasůusing.

Metadata položek

Kromě standardních atributů položky NÁSTROJE MSBuild jsou k dispozici následující značky metadat položek ze sady .NET SDK:

CopyToPublishDirectory

CopyToPublishDirectory Metadata položky NÁSTROJE MSBuild řídí při zkopírování položky do adresáře publikování. Povolené hodnoty jsou PreserveNewest, které kopírují pouze položku, pokud se změnila, Alwayscož vždy kopíruje položku a Never, která položku nikdy nekopíruje. Z hlediska výkonu je vhodnější, PreserveNewest protože umožňuje přírůstkové sestavení.

<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. Linktaké určuje, jak se položky mimo strom projektu zobrazují v okně Průzkumník řešení sady 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 Průzkumník řešení zobrazí soubor, který je součástí předchozího globu položkyInclude.

Průzkumník řešení zobrazení položky s metadaty LinkBase.

Viz také