Referenční dokumentace nástroje 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 najdete v tématu Běžné vlastnosti NÁSTROJE MSBuild.

Vlastnosti architektury

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

Targetframework

Vlastnost TargetFramework určuje cílovou verzi 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>netcoreapp3.1</TargetFramework>
</PropertyGroup>

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

TargetFrameworks

TargetFrameworks Tuto 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 se ignoruje, pokud TargetFramework je zadána (singulárová).

<PropertyGroup>
  <TargetFrameworks>netcoreapp3.1;net462</TargetFrameworks>
</PropertyGroup>

Další informace najdete 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ích příkladech 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íčky se transformují na atributy sestavení. Následující tabulka uvádí vlastnosti projektu, které generují atributy. Obsahuje také vlastnosti, které můžete použít k zakázání generování na základě jednotlivých atributů, například:

<PropertyGroup>
  <GenerateNeutralResourcesLanguageAttribute>false</GenerateNeutralResourcesLanguageAttribute>
</PropertyGroup>
Vlastnost MSBuild Atribut sestavení Vlastnost pro zakázání generování atributů
Company AssemblyCompanyAttribute GenerateAssemblyCompanyAttribute
Configuration AssemblyConfigurationAttribute GenerateAssemblyConfigurationAttribute
Copyright AssemblyCopyrightAttribute GenerateAssemblyCopyrightAttribute
Description AssemblyDescriptionAttribute GenerateAssemblyDescriptionAttribute
FileVersion AssemblyFileVersionAttribute GenerateAssemblyFileVersionAttribute
InformationalVersion AssemblyInformationalVersionAttribute GenerateAssemblyInformationalVersionAttribute
Product AssemblyProductAttribute GenerateAssemblyProductAttribute
AssemblyTitle AssemblyTitleAttribute GenerateAssemblyTitleAttribute
AssemblyVersion AssemblyVersionAttribute GenerateAssemblyVersionAttribute
NeutralLanguage NeutralResourcesLanguageAttribute GenerateNeutralResourcesLanguageAttribute

Poznámky k těmto nastavením:

  • AssemblyVersion a FileVersion výchozí hodnota $(Version) bez přípony. Pokud $(Version) je 1.2.3-beta.4například , pak by hodnota byla 1.2.3.
  • InformationalVersionvýchozí hodnota hodnoty .$(Version)
  • $(SourceRevisionId) Pokud je vlastnost přítomna, je připojena k InformationalVersion. Toto chování můžete zakázat pomocí IncludeSourceRevisionInInformationalVersion.
  • Copyright a Description vlastnosti se používají také pro metadata NuGet.
  • Configuration, které se ve výchozím nastavení Debugsdílí se všemi cíli NÁSTROJE MSBuild. Můžete ho dotnet nastavit pomocí --configuration možnosti příkazů, například dotnet pack.
  • Některé vlastnosti se používají při vytváření balíčku NuGet. Další informace naleznete v tématu Vlastnosti balíčku.

Migrace z rozhraní .NET Framework

Šablony projektů rozhraní .NET Framework vytvářejí soubor kódu s těmito atributy informací o sestavení. Soubor se obvykle nachází na adrese .\Properties\AssemblyInfo.cs nebo .\Properties\AssemblyInfo.vb. Projekty ve stylu sady SDK generují tento soubor za vás na základě nastavení projektu. Nemůžete mít obojí. Při přenosu kódu do .NET 5 (nebo .NET Core 3.1) nebo novější proveďte jednu z těchto věcí:

  • Zakažte generování dočasného souboru kódu, který obsahuje atributy informací o sestavení, nastavením GenerateAssemblyInfo na false soubor projektu. To vám umožní zachovat soubor AssemblyInfo .
  • Migrujte nastavení v AssemblyInfo souboru do souboru projektu a odstraňte ho AssemblyInfo .

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 , , , TitlePackageVersionPackageIcona Description popsat balíček, který se vytvoří z vašeho projektu. Informace o těchto a dalších vlastnostech najdete v tématu Cíl balíčku.

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

PackRelease

Vlastnost PackRelease je podobná vlastnosti PublishRelease , s výjimkou toho, že mění výchozí chování dotnet pack.

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

Poznámka

Pokud chcete použít PackRelease v projektu, 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). Nastavení této proměnné zvýší dobu potřebnou k zabalení řešení, která mají mnoho projektů.

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řipojena cílová architektura moniker (TFM). Sada .NET SDK automaticky připojí cílovou architekturu a v případě přítomnosti identifikátor modulu runtime k výstupní cestě. Nastavení AppendTargetFrameworkToOutputPath , které false brá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.0bin\Debug následujícího nastavení:

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

AppendRuntimeIdentifierToOutputPath

Vlastnost AppendRuntimeIdentifierToOutputPath určuje, zda je identifikátor modulu runtime (RID) připojen k výstupní cestě. Sada .NET SDK automaticky připojí cílovou architekturu a v případě přítomnosti identifikátor modulu runtime k výstupní cestě. Nastavení AppendRuntimeIdentifierToOutputPath , které false brání připojení identifikátoru RID k výstupní cestě.

Například pro aplikaci .NET 5 a identifikátor RID win10-x64výstupní cesty se změní z bin\Debug\net5.0\win10-x64bin\Debug\net5.0 následujícího nastavení:

<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 závislosti balíčků 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>

Tip

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

ErrorOnDuplicatePublishOutputFiles

Vlastnost ErrorOnDuplicatePublishOutputFiles se vztahuje k tomu, zda sada SDK generuje chybu NETSDK1148, když NÁSTROJ MSBuild detekuje duplicitní soubory ve výstupu publikování, ale nemůž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.

EnablePackageValidation

Vlastnost EnablePackageValidation umožňuje řadu ověření balíčku po pack úkolu. Další informace najdete v tématu ověření balíčku.

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

Tato vlastnost byla zavedena v .NET 6.

GenerateRuntimeConfigDevFile

Počínaje sadou .NET 6 SDK se soubor [Appname].runtimesettings.dev.jsonuž ve výchozím nastavení negeneruje v době kompilace. Pokud chcete, aby se tento soubor vygeneroval, nastavte GenerateRuntimeConfigDevFile vlastnost na true.

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

GenerateRuntimeConfigurationFiles

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

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

GenerateSatelliteAssembliesForCore

Vlastnost GenerateSatelliteAssembliesForCore řídí, 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í.) Pro projekty rozhraní .NET Framework se satelitní sestavení vytvářejí ve výchozím nastavení al.exe. Nastavením vlastnosti na GenerateSatelliteAssembliesForCoretrue, satelitní 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

Vlastnost IsPublishable umožňuje Publish spuštění cíle. Tato vlastnost ovlivňuje pouze 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

Vlastnost PreserveCompilationContext umožňuje sestavené nebo publikované aplikaci zkompilovat více kódu za běhu pomocí stejného nastavení, která byla použita v době sestavení. Sestavení odkazovaná v době sestavení se zkopírují do podadresáře ref 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í vlastností DependencyContext.CompileLibraries a DependencyContext.CompilationOptions vlastností.

Tato funkce je většinou používána interně ASP.NET Core MVC a Razor Pages k podpoře běhu kompilace souborů Razor.

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

PreserveCompilationReferences

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

<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 OutDir do adresáře. V rozhraní .NET 6 a novějších verzích můžete pomocí ProduceReferenceAssemblyInOutDir vlastnosti řídit, 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 přechodného výstupu.

PublishRelease

Vlastnost PublishRelease informuje dotnet publish o použití Release konfigurace ve výchozím nastavení místo Debug konfigurace.

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

Poznámka

  • Tato vlastnost nemá vliv na chování dotnet build /t:Publish a změny konfigurace pouze při publikování prostřednictvím rozhraní příkazového řádku .NET.
  • Pokud chcete použít PublishRelease v projektu, 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). Tím se zvýší doba potřebná k publikování řešení, která mají mnoho projektů. 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 různými hodnotami PublishRelease, řešení se úspěšně nepublikuje.

Vrácení zpět

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

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

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

Hodnota Popis
Minor Výchozí, pokud není zadáno.
Pokud požadovaná podverze chybí, přepošlete ji na nejnižší nižší podverzi. Pokud je požadovaná podverze k dispozici, použije LatestPatch se zásada.
Major Pokud požadovaná hlavní verze chybí, přejděte k další dostupné vyšší hlavní verzi a nejnižší podverzi. Pokud je požadovaná hlavní verze k dispozici, použije Minor se zásada.
LatestPatch Přejděte k nejvyšší verzi opravy. Tato hodnota zakáže vrácení podverze vpřed.
LatestMinor Přeposlání na nejvyšší podverzi, i když je požadovaná podverze k dispozici.
LatestMajor Přechod na nejvyšší hlavní a nejvyšší podverzi, a to i v případě, že je požadovaný hlavní obor k dispozici.
Disable Nepřecházejte dopředu, svázat pouze se zadanou verzí. Tato zásada se nedoporučuje pro obecné použití, protože zakazuje možnost převést na nejnovější opravy. Tato hodnota se doporučuje pouze pro testování.

Další informace najdete v tématu Řízení chování při přeposílání.

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 tato hodnota určuje přesnou požadovanou verzi.

RuntimeIdentifier

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

<PropertyGroup>
  <RuntimeIdentifier>ubuntu.16.04-x64</RuntimeIdentifier>
</PropertyGroup>

RuntimeIdentifiers

Vlastnost RuntimeIdentifiers umožňuje zadat seznam identifikátorů modulu runtime (RID) oddělených středníkem pro projekt. 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 (s jednotným číslem) může poskytovat rychlejší sestavení v případě, že je vyžadován pouze jeden modul runtime.

<PropertyGroup>
  <RuntimeIdentifiers>win10-x64;osx.10.11-x64;ubuntu.16.04-x64</RuntimeIdentifiers>
</PropertyGroup>

SatelliteResourceLanguages

Tato SatelliteResourceLanguages vlastnost umožňuje určit jazyky, pro které 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, můžou lokalizovaná sestavení zbytečně nafukovat velikost sestavení a publikovat výstup. SatelliteResourceLanguages Přidáním vlastnosti do souboru projektu budou do sestavení a publikování výstupu zahrnuta pouze lokalizovaná sestavení pro zadané jazyky. Například v následujícím souboru projektu se zachovají pouze anglická (USA) a německá (Německo) satelitní sestavení zdrojů.

<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 zdrojů.

  • Pokud chcete jako argument dotnet publishzadat více jazyků, musíte přidat tři dvojice uvozovek kolem identifikátorů jazyka. Příklad:

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

UseAppHost

Vlastnost UseAppHost určuje, zda se pro nasazení vytvoří nativní spustitelný soubor. Pro nasazení s vlastním obsahem se vyžaduje nativní spustitelný soubor.

V .NET Core 3.0 a novějších verzích se ve výchozím nastavení vytvoří spustitelný soubor závislý na rozhraní. Nastavte vlastnost tak, UseAppHost 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.

Mnoho vlastností NÁSTROJE MSBuild je k dispozici k vyladění oříznutí, což je funkce, která oříznou nepoužitý kód z samoobslužný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í 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 jsou upozornění oříznutí považována za chyby. Můžete například chtít tuto vlastnost nastavit na hodnotu , na false kterou TreatWarningsAsErrors je nastavena hodnota true.
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, je možné zadat také jako vlastnosti NÁSTROJE MSBuild v souboru projektu. Další informace najdete v tématu Možnosti kompilátoru jazyka C#.

DisableImplicitFrameworkDefines

Vlastnost DisableImplicitFrameworkDefines určuje, zda sada SDK generuje symboly preprocesoru pro cílovou architekturu a platformu pro projekt .NET. Pokud je tato vlastnost nastavena nebo false je nenastavená (což je výchozí hodnota), jsou generovány symboly preprocesoru pro:

  • Architektura bez verze (NETFRAMEWORK, NETSTANDARD, NET)
  • Architektura s verzí (NET48, NETSTANDARD2_0, NET6_0)
  • Architektura s minimální vazbou verze (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 tématu TFM specifické pro operační systém.

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

DocumentationFile

Vlastnost DocumentationFile umožňuje zadat název souboru XML, který obsahuje dokumentaci pro vaši knihovnu. Aby funkce IntelliSense fungovala správně s vaší 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 se standardně nastaví na 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 tuto vlastnost zadáte, ale nastavíte GenerateDocumentationFile na false, kompilátor negeneruje soubor dokumentace. Pokud zadáte tuto vlastnost a vynecháte vlastnost GenerateDocumentationFile, kompilátor vygeneruje soubor dokumentace.

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

EmbeddedResourceUseDependentUponConvention

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

Poznámka

Pokud LogicalNameje pro EmbeddedResource položku zadána hodnota , ManifestResourceNamenebo DependentUpon metadata, je název vygenerovaného souboru manifestu pro tento soubor prostředků založený na této metadate.

Ve výchozím nastavení je v novém projektu .NET tato vlastnost nastavena na true. Pokud je falsepro položku v souboru projektu zadána EmbeddedResource hodnota , a ne LogicalNameManifestResourceName, nebo DependentUpon metadata, název souboru manifestu zdroje je založen na kořenovém oboru názvů projektu a relativní cesta k souboru .resx. Další informace najdete v tématu Jak jsou pojmenované soubory manifestu prostředků.

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

EnablePreviewFeatures

EnablePreviewFeatures Vlastnost definuje, zda váš projekt závisí na všech rozhraních API nebo sestaveních, které jsou zdobeny atributemRequiresPreviewFeaturesAttribute. Tento atribut slouží k označení, že rozhraní API nebo sestavení používá funkce, které jsou považovány za ve verzi Preview pro verzi SDK, kterou používáte. Funkce ve verzi Preview nejsou podporovány a mohou být odebrány v budoucí verzi. 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, přidá se do souboru AssemblyInfo.cs následující atribut na úrovni sestavení:

[assembly: RequiresPreviewFeatures]

Analyzátor upozorní, pokud tento atribut existuje u závislostí pro projekty, u kterých EnablePreviewFeatures není nastavena hodnota True.

Autoři knihoven, kteří mají v úmyslu dodávat sestavení preview, by tuto vlastnost měli nastavit na True. Pokud sestavení potřebuje dodat kombinaci rozhraní API verze Preview a jiných než preview, přečtěte si část GenerateRequiresPreviewFeaturesAttribute níže.

GenerateDocumentationFile

Vlastnost GenerateDocumentationFile určuje, jestli kompilátor vygeneruje soubor dokumentace XML pro vaši knihovnu. Pokud tuto vlastnost nastavíte na true 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 článcích o komentářích k dokumentaci XML (C#),dokumentování kódu pomocí jazyka XML (Visual Basic) nebo dokumentování kódu pomocí XML (F#).

GenerateRequiresPreviewFeaturesAttribute

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

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

Důležité

Pokud vlastnost nastavíte na False, musíte mít jistotuGenerateRequiresPreviewFeaturesAttribute, že chcete zdobit všechna veřejná rozhraní API, která spoléhají na funkce ve verzi Preview.RequiresPreviewFeaturesAttribute

OptimizeImplicitlyTriggeredBuild

Pokud chcete urychlit dobu sestavení, sestavení, která implicitně aktivují analýzu kódu sady Visual Studio, přeskočí analýzu kódu, včetně analýzy s možnou hodnotou null. Visual Studio aktivuje implicitní sestavení při spouštění testů, například. 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 OptimizeImplicitlyTriggeredBuild na Falsehodnotu .

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

Výchozí vlastnosti zahrnutí položek

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

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

DefaultItemExcludes

DefaultItemExcludes Pomocí vlastnosti můžete definovat vzory globu 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, které začínají tečkou (.například .git a .vs), vyloučeny 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 vlastnost místo DefaultItemExcludes vlastnosti.

<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 Vlastnost nastavte tak, aby false se zakázalo zahrnutí všech implicitních souborů.

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

EnableDefaultCompileItems

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

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

EnableDefaultEmbeddedResourceItems

Vlastnost EnableDefaultEmbeddedResourceItems určuje, jestli jsou vložené položky zdrojů implicitně zahrnuty do projektu. Výchozí hodnota je true. EnableDefaultEmbeddedResourceItems Nastavte vlastnost tak, aby false se zakázal 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 se zakázal implicitní zahrnutí None položek.

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

Vlastnosti analýzy kódu

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

AnalysisLevel

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

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

Volitelně můžete v .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>

Poznámka

Pokud jste nastavili AnalysisLevel5-<mode> nebo 5.0-<mode> pak nainstalujete sadu .NET 6 SDK a znovu zkompilujete projekt, může se zobrazit neočekávané nové upozornění sestavení. Další informace najdete v tématu dotnet/roslyn-analyzers#5679.

Výchozí hodnota:

  • Pokud váš projekt cílí na .NET 5 nebo novější nebo pokud jste přidali AnalysisMode vlastnost, je výchozí hodnota latest.
  • V opačném případě je tato vlastnost vynechána, 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.
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žije se sada pravidel, která byla k dispozici pro verzi .NET 5, i když jsou k dispozici novější pravidla.
5.0-<mode> Použije 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žije se sada pravidel, která byla k dispozici pro verzi .NET 5, i když jsou k dispozici novější pravidla.
5-<mode> Použije 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

  • V .NET 5 a starších verzích má tato vlastnost vliv pouze na pravidla kvality kódu (CAXXXX). Počínaje rozhraním .NET 6, pokud nastavíte EnforceCodeStyleInBuild na true, tato vlastnost má vliv také na pravidla stylu kódu (IDEXXXX).
  • Pokud nastavíte složenou hodnotu pro AnalysisLevel, nemusíte zadávat AnalysisMode. Pokud to ale uděláte, 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 představená v .NET 6 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žívání

AnalysisMode

Počínaje rozhraním .NET 5 se sada .NET SDK dodává se všemi pravidly kvality kódu certifikační autority. Ve výchozím nastavení jsou ve všech verzích .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í povolena. Můžete buď přepnout do agresivnějšího režimu analýzy, kde se můžete odhlásit jednotlivě, nebo konzervativnější režim analýzy, ve kterém 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 All.

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

Následující tabulka uvádí dostupné hodnoty možností v .NET 5 a .NET 6. Jsou uvedené v rostoucím pořadí počtu povolených pravidel.

Hodnota .NET 6+ Hodnota .NET 5 Význam
None AllDisabledByDefault Všechna pravidla jsou zakázaná. Můžete selektivně vyjádřit výslovný souhlas s jednotlivými pravidly, abyste je povolili.
Default 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é se důrazně doporučují pro vynucení sestavení, jsou povolené jako upozornění sestavení.
Recommended Agresivnější režim než Minimum režim, ve kterém jsou jako upozornění sestavení povolená více pravidel.
All AllEnabledByDefault Všechna pravidla jsou povolená jako upozornění sestavení. Můžete selektivně vyjádřit výslovný nesouhlas s jednotlivými pravidly, abyste je zakázali.

Poznámka

  • V .NET 5 má tato vlastnost vliv pouze na pravidla kvality kódu (CAXXXX). Počínaje rozhraním .NET 6, pokud nastavíte EnforceCodeStyleInBuild na true, tato vlastnost má vliv také na pravidla stylu kódu (IDEXXXX).
  • Pokud například použijete složenou hodnotu pro AnalysisLevel, <AnalysisLevel>5-recommended</AnalysisLevel>můžete tuto vlastnost zcela vynechat. Pokud však zadáte obě vlastnosti, AnalysisLevel má přednost před AnalysisMode.
  • Pokud AnalysisMode je nastavena a AnalysisLevelAllEnabledByDefault je nastavena na 5 nebo 5.0a pak nainstalujete sadu .NET 6 SDK a znovu zkompilujete projekt, může se zobrazit neočekávané nové upozornění sestavení. Další informace najdete v tématu dotnet/roslyn-analyzers#5679.
  • 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 představená v .NET 6 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žívání

CodeAnalysisTreatWarningsAsErrors

Tato CodeAnalysisTreatWarningsAsErrors vlastnost umožňuje nakonfigurovat, jestli se mají 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 zacházela jako s chybami, můžete vlastnost MSBuild nastavit CodeAnalysisTreatWarningsAsErrors v false souboru 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 sestavování 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 byla upozornění nebo chyby, se spustí při porušení sestavení a hlášení.

Poznámka

Pokud instalujete .NET 6 (nebo Visual Studio 2022, který obsahuje .NET 6), ale chcete vytvořit projekt pomocí sady Visual Studio 2019, může se zobrazit nová upozornění CS8032 , pokud máte vlastnost nastavenou EnforceCodeStyleInBuild na true. Pokud chcete tato upozornění vyřešit, můžete zadat verzi sady .NET SDK, pomocí které se má projekt sestavit (v tomto případě něco jako 5.0.404) přidáním položky global.json.

_SkipUpgradeNetAnalyzersNuGetWarning

Tato _SkipUpgradeNetAnalyzersNuGetWarning vlastnost umožňuje nakonfigurovat, zda se zobrazí upozornění, pokud používáte analyzátory kódu z balíčku NuGet, který je zastaralý ve srovná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ž jaká je verze 5.0.3 balíčku 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 je v true souboru projektu.

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

Vlastnosti konfigurace modulu runtime

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

ConcurrentGarbageCollection

Vlastnost ConcurrentGarbageCollection konfiguruje, jestli je povolené 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

Vlastnost InvariantGlobalization 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 najdete 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 můžou vytvářet jiné jazykové verze než invariantní jazykovou verzi, když je povolen režim globalizace invariant . Výchozí formát 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 najdete v tématu Vytvoření jazykové verze a mapování případů v globalizačním režimu invariantní.

ZachovatVMGarbageCollection

Vlastnost RetainVMGarbageCollection konfiguruje 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 kolektor paměti dal segmenty 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 najdete 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 najdete 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 najdete v tématu Minimální vlákna.

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

TieredCompilation

Vlastnost TieredCompilation konfiguruje, jestli kompilátor JIT (just-in-time) používá vrstvené kompilace. Nastavte hodnotu tak, aby false se zakázala vrstvené kompilace. Další informace najdete v tématu Vrstvené kompilace.

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

TieredCompilationQuickJit

Vlastnost TieredCompilationQuickJit konfiguruje, zda kompilátor JIT používá rychlé JIT. Nastavte hodnotu tak, aby false se rychlé jiT zakázalo. 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 na metodách, které obsahují smyčky. Nastavte hodnotu tak, aby true umožňovala rychlé JIT u metod, které obsahují smyčky. Další informace najdete v tématu Rychlý JIT pro smyčky.

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

Referenční vlastnosti

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

AssetTargetFallback

Vlastnost AssetTargetFallback 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 se přehraje. 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ší verze řídí implicitní položky PackageReference na balíčky v metabalíku. (Metapackage je balíček založený na rozhraní, který se skládá jenom z 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ázání implicitních FrameworkReference položek nebo PackageReference . Pokud tuto vlastnost nastavíte na true, můžete přidat explicitní odkazy jenom na architektury nebo balíčky, které potřebujete.

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

DisableTransitiveProjectReferences

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

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

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

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

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í, jako jsou a RestorePackagesPathRestoreIgnoreFailedSources. Další informace o těchto adalšíchch

<PropertyGroup>
  <RestoreIgnoreFailedSource>true</RestoreIgnoreFailedSource>
</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 spustitelný projekt založený na samostatném souboru odkazuje na spustitelný projekt závislý na rozhraní nebo naopak, vygeneruje chyby NETSDK150 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 verzi sady .NET SDK. Tato vlastnost by se měla používat pouze ve výjimečných případech, jako je použití balíčků Preview nebo potřeba přepsat verzi 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 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, která je 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:

EnableComHosting

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

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

Další informace najdete 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 COM nebo knihovna, která není com, kterou lze použít z nativního hostitele nebo jako modul plug-in. Nastavení této vlastnosti má true následující účinky:

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

Vygenerované vlastnosti souboru

Kód vygenerovaných souborech se týká následujících vlastností:

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 importují globálně v projektu jazyka Visual Basic. Nastavte tuto vlastnost tak, aby true se zakázal implicitní importy oboru názvů.

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

Implicitní jednotky

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ší verzi. 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 povolte 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 .NET 6 nebo novější, jsou ImplicitUsings standardně nastavené na enable .

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

Položky

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

U těchto položek můžete použít libovolný z atributů standardní 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é známé sestavení.

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

Pokud je známé sestavení podepsané, 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íč. V opačném případě se do atributu nepřidá žádný veřejný klíč.

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 najdete 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 k dispozici od verze .NET 6.

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

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

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

Příklad:

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

Další informace o direktivách a using static <type> direktivách aliasů using naleznete v tématu using – direktiva.

Metadata položek

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

CopyToPublishDirectory

Metadata CopyToPublishDirectory položky nástroje MSBuild řídí, když je položka zkopírována 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írovaly. 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>

Propojení

Pro položku, která je mimo adresář projektu a jeho podadresáře, cíl publikování používá metadata odkazu položky k určení, kam chcete položku zkopírovat. Linkurčuje také způsob zobrazení položek mimo strom projektu 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í zadána, 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í zobrazuje soubor, který je součástí předchozí položkyInclude.

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

Viz také