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:
AssemblyVersionaFileVersionvýchozí hodnota$(Version)bez přípony. Pokud$(Version)je1.2.3-beta.4například , pak by hodnota byla1.2.3.InformationalVersionvýchozí hodnota hodnoty .$(Version)$(SourceRevisionId)Pokud je vlastnost přítomna, je připojena kInformationalVersion. Toto chování můžete zakázat pomocíIncludeSourceRevisionInInformationalVersion.CopyrightaDescriptionvlastnosti 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 hodotnetnastavit pomocí--configurationmož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
GenerateAssemblyInfonafalsesoubor projektu. To vám umožní zachovat soubor AssemblyInfo . - Migrujte nastavení v
AssemblyInfosouboru do souboru projektu a odstraňte hoAssemblyInfo.
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
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>
Vlastnosti související s publikováním
Následující vlastnosti nástroje MSBuild jsou popsány v této části:
- AppendRuntimeIdentifierToOutputPath
- AppendTargetFrameworkToOutputPath
- CopyLocalLockFileAssemblies
- EnablePackageValidation
- ErrorOnDuplicatePublishOutputFiles
- GenerateRuntimeConfigDevFile
- GenerateRuntimeConfigurationFiles
- GenerateSatelliteAssembliesForCore
- IsPublishable
- PreserveCompilationContext
- ZachovatcompilationReferences
- ProduceReferenceAssemblyInOutDir
- PublishRelease
- RollForward
- RuntimeFrameworkVersion
- RuntimeIdentifier
- RuntimeIdentifiers
- SatelliteResourceLanguages
- UseAppHost
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ě ale může přepsat více artefaktů sestavení.
Například u aplikace .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, jestli 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íč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>
Tip
Alternativně můžete knihovnu dotnet publish tříd publikovat. Další informace najdete v tématu dotnet publish.
ErrorOnDuplicatePublishOutputFiles
Vlastnost ErrorOnDuplicatePublishOutputFiles souvisí s tím, jestli sada SDK generuje chybu NETSDK1148, když nástroj MSBuild detekuje duplicitní soubory ve výstupu publikování, ale nedokáže určit, které soubory se mají odebrat. ErrorOnDuplicatePublishOutputFiles Vlastnost nastavte, pokud false nechcete, aby se chyba vygenerovala.
<PropertyGroup>
<ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>
</PropertyGroup>
Tato vlastnost byla představena v .NET 6.
EnablePackageValidation
Vlastnost EnablePackageValidation umožňuje po úkolu řadu ověření v balíčku pack . Další informace najdete v tématu Ověření balíčku.
<PropertyGroup>
<EnablePackageValidation>true</EnablePackageValidation>
</PropertyGroup>
Tato vlastnost byla představena 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, jestli 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 určuje, jestli jsou satelitní sestavení generována pomocí csc.exe nebo Al.exe (Assembly Linker) v projektech .NET Framework. (Projekty .NET Core a .NET 5+ vždy používají k generování satelitních sestavení csc.exe .) U projektů rozhraní .NET Framework se satelitní sestavení vytvářejí ve výchozím nastavení al.exe. GenerateSatelliteAssembliesForCore Nastavením vlastnosti na truesatelitní sestavení se místo toho vytvoří csc.exe. Použití csc.exe může být výhodné v následujících situacích:
- Chcete použít možnost kompilátoru
deterministicjazyka C#. - Jste omezeni tím, že al.exe nemá žádnou podporu pro veřejné podepisování a zpracovává špatně AssemblyInformationalVersionAttribute .
<PropertyGroup>
<GenerateSatelliteAssembliesForCore>true</GenerateSatelliteAssembliesForCore>
</PropertyGroup>
IsPublishable
Vlastnost IsPublishable umožňuje Publish , aby cíl běžel. 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 měly být publikovány.
<PropertyGroup>
<IsPublishable>false</IsPublishable>
</PropertyGroup>
PreserveCompilationContext
Vlastnost PreserveCompilationContext umožňuje sestavené nebo publikované aplikaci kompilovat 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 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 vlastností DependencyContext.CompilationOptions .
Tuto funkci používá ASP.NET Core MVC a Razor Pages interně k podpoře kompilace souborů Razor za běhu.
<PropertyGroup>
<PreserveCompilationContext>true</PreserveCompilationContext>
</PropertyGroup>
ZachovatcompilationReferences
PreserveCompilationReferences Vlastnost je podobná vlastnosti PreserveCompilationContext, s výjimkou toho, že kopíruje pouze odkazovaná sestavení do adresáře publikování, a ne soubor .deps.json.
<PropertyGroup>
<PreserveCompilationReferences>true</PreserveCompilationReferences>
</PropertyGroup>
Další informace najdete v tématu Vlastnosti sady Razor SDK.
ProduceReferenceAssemblyInOutDir
V .NET 5 a starších verzích se referenční sestavení vždy zapisují do OutDir adresáře. V .NET 6 a novějších verzích můžete pomocí ProduceReferenceAssemblyInOutDir vlastnosti řídit, jestli 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 najdete v tématu Zápis referenčních sestavení do zprostředkujícího výstupu.
PublishRelease
Vlastnost PublishRelease informuje dotnet publish o využití Release konfigurace místo Debug konfigurace. Doporučujeme tuto vlastnost přidat do Directory.Build.props souboru místo souboru projektu, aby se vyhodnocovala dostatečně brzy, aby se změna konfigurace rozšířila.
<PropertyGroup>
<PublishRelease>true</PublishRelease>
</PropertyGroup>
Poznámka
Tato vlastnost nemá vliv na chování dotnet build /t:Publish.
RollForward
Vlastnost RollForward určuje, jak aplikace zvolí modul runtime, když 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 jednu z následujících hodnot:
| Hodnota | Popis |
|---|---|
Minor |
Výchozí, pokud není zadáno. Pokud chybí požadovaná podverze, přejděte k nejnižší vyšší podverze. 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 k dispozici, použije se Minor zásada. |
LatestPatch |
Přejděte k nejvyšší verzi opravy. Tato hodnota zakáže vrácení podverze dopředu. |
LatestMinor |
Přeposlat na nejvyšší podverzi, i když je požadovaná podverze k dispozici. |
LatestMajor |
Přeposlat na nejvyšší hlavní a nejvyšší podverzi, i když je požadovaná hlavní verze k dispozici. |
Disable |
Nepředávejte dál, pouze vazbu na zadanou verzi. Tato zásada se nedoporučuje pro obecné použití, protože zakáže možnost převést se na nejnovější opravy. Tato hodnota se doporučuje jenom pro testování. |
Další informace najdete v tématu Řízení chování postupného předává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 určuje tato hodnota přesnou 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 středník oddělený seznam identifikátorů modulu runtime (RID) 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, které jazyky chcete během sestavení 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á (US) satelitní sestavení zdrojů.
<PropertyGroup>
<SatelliteResourceLanguages>en-US</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ů.
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í. 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.
Vlastnosti související s oříznutím
K dispozici je celá řada vlastností nástroje MSBuild pro 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í 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 nastavena hodnota false. |
ILLinkTreatWarningsAsErrors |
true nebo false |
Určuje, jestli se upozornění oříznutí považují za chyby. Tuto vlastnost můžete například nastavit na hodnotu , na false kterou TreatWarningsAsErrors je nastavena truehodnota . |
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 se ze oříznuté aplikace odeberou všechny symboly. |
Vlastnosti související s kompilací
V této části jsou popsány následující vlastnosti nástroje MSBuild:
- DisableImplicitFrameworkDefines
- Soubor dokumentace
- EmbeddedResourceUseDependentUponConvention
- EnablePreviewFeatures
- GenerateDocumentationFile
- GenerateRequiresPreviewFeaturesAttribute
- OptimizeImplicitlyTriggeredBuild
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#.
DisableImplicitFrameworkDefines
Vlastnost DisableImplicitFrameworkDefines určuje, zda sada SDK generuje symboly preprocesoru pro cílovou architekturu a platformu pro projekt .NET. Pokud je tato vlastnost nastavená na false symboly preprocesoru (což je výchozí hodnota), vygenerují se pro:
- Architektura 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 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 cílová architektura znamená podporu starších cílových architektur, vygenerují se symboly preprocesoru pro tyto starší architektury. Například net6.0implikuje podporu pro net5.0 a tak dále až 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 .
Soubor dokumentace
Vlastnost DocumentationFile umožňuje zadat název souboru XML souboru, který obsahuje dokumentaci pro vaši knihovnu. Aby funkce 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 truehodnotu , název souboru dokumentace se ve výchozím nastavení nastaví na název sestavení, ale s příponou souboru.xml . Z tohoto důvodu je často jednodušší tuto vlastnost vynechat 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 společně umístěny 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řevezme název prvního typu, který je definovaný ve Formulář1.cs. Pokud je například MyNamespace.Form1 prvním typem definovaným ve formuláři Form1.cs, vygenerovaný název souboru je MyNamespace.Form1.resources.
Poznámka
Pokud LogicalNameje pro EmbeddedResource položku zadána hodnota , ManifestResourceNamenebo DependentUpon metadata, vygenerovaný název souboru manifestu pro tento soubor prostředku je založen na této metadate.
Ve výchozím nastavení je v novém projektu .NET tato vlastnost nastavena na true. Pokud je pro falsepolož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 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í toho, že rozhraní API nebo sestavení používá funkce, které jsou považovány za ve verzi Preview pro verzi sady SDK, kterou používáte. Funkce ve verzi Preview se nepodporují a v budoucí verzi se můžou odebrat. Chcete-li povolit použití funkcí preview, nastavte vlastnost na True.
<PropertyGroup>
<EnablePreviewFeatures>True</EnablePreviewFeatures>
</PropertyGroup>
Pokud projekt obsahuje tuto vlastnost nastavenou na True, následující atribut na úrovni sestavení se přidá do souboru AssemblyInfo.cs :
[assembly: RequiresPreviewFeatures]
Analyzátor upozorní, pokud tento atribut existuje u závislostí pro projekty, u kterých EnablePreviewFeatures není nastavena Truehodnota .
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 verzí Preview, přečtěte si níže část GenerateRequiresPreviewFeaturesAttribute .
GenerateDocumentationFile
Vlastnost GenerateDocumentationFile určuje, zda kompilátor vygeneruje soubor dokumentace XML pro vaši knihovnu. Pokud tuto vlastnost true nastavíte a nezadáte název souboru prostřednictvím vlastnosti DocumentationFile, vygenerovaný soubor XML se umístí do stejného výstupního adresáře jako sestavení a má stejný název souboru (ale s příponou .xml ).
<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
Další informace o generování dokumentace z komentářů ke kódu najdete v tématech Komentáře k dokumentaci XML (C#),Dokumentujte kód pomocí XML (Visual Basic) nebo Dokumentujte kód pomocí JAZYKA 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 na False, musíte být jisti, že vyzdobit všechna veřejná rozhraní API, která spoléhají na funkce preview s RequiresPreviewFeaturesAttribute.
OptimizeImplicitlyTriggeredBuild
Aby se urychlila doba sestavení, sestavení, která se implicitně aktivují pomocí 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:
- DefaultItemExcludesInProjectFolder
- DefaultItemExcludes
- EnableDefaultCompileItems
- EnableDefaultEmbeddedResourceItems
- EnableDefaultItems
- EnableDefaultNoneItems
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ů globů.
<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 výjimkou toho, že považuje pouze soubory a složky ve složce projektu. Pokud by vzor globu neúmyslně odpovídal položkám mimo složku projektu relativní cestou, použijte DefaultItemExcludesInProjectFolder vlastnost místo DefaultItemExcludes vlastnosti.
<PropertyGroup>
<DefaultItemExcludesInProjectFolder>$(DefaultItemExcludesInProjectFolder);**/myprefix*/**</DefaultItemExcludesInProjectFolder>
</PropertyGroup>
EnableDefaultItems
Vlastnost EnableDefaultItems určuje, jestli jsou do projektu implicitně zahrnuté položky kompilace, vložené položky zdrojů a None položky. Výchozí hodnota je true. EnableDefaultItems Nastavte vlastnost tak, aby false zakázala všechny implicitní zahrnutí souborů.
<PropertyGroup>
<EnableDefaultItems>false</EnableDefaultItems>
</PropertyGroup>
EnableDefaultCompileItems
Vlastnost EnableDefaultCompileItems určuje, zda jsou položky kompilace implicitně zahrnuty do projektu. Výchozí hodnota je true. EnableDefaultCompileItems Nastavte vlastnost tak, aby false zakázala implicitní zahrnutí *.cs a další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 zakázala implicitní zahrnutí vložených souborů prostředků.
<PropertyGroup>
<EnableDefaultEmbeddedResourceItems>false</EnableDefaultEmbeddedResourceItems>
</PropertyGroup>
EnableDefaultNoneItems
Vlastnost EnableDefaultNoneItems určuje, zda None jsou do projektu implicitně zahrnuty položky (soubory, které nemají žádnou roli v procesu sestavení). 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
- Kategorie AnalysisLevel<>
- AnalysisMode
- Kategorie AnalysisMode<>
- CodeAnalysisTreatWarningsAsErrors
- EnableNETAnalyzers
- Vynucení kóduStyleInBuild
- _SkipUpgradeNetAnalyzersNuGetWarning
AnalysisLevel
Vlastnost AnalysisLevel umožňuje určit sadu analyzátorů kódu, které se mají spustit podle verze .NET. Každá verze .NET, počínaje .NET 5, má sadu pravidel analýzy kódu. Z této sady budou pravidla, která jsou ve výchozím nastavení povolená pro danou verzi, 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 AnalysisLevel na 5.
<PropertyGroup>
<AnalysisLevel>preview</AnalysisLevel>
</PropertyGroup>
Volitelně můžete od .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> sadu . 5.0-<mode> 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 vlastnost AnalysisMode , je
latestvýchozí hodnota . - Jinak tato vlastnost není 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 povolená. |
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 povolená. |
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 povolená. |
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 povolená. |
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 povolená. |
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 povolená. |
Poznámka
- V .NET 5 a starších verzích tato vlastnost ovlivňuje pouze pravidla kvality kódu (CAXXXX). Počínaje .NET 6, pokud jste nastavili 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 Objekt AnalysisMode. Pokud to ale uděláte,AnalysisLevelmá přednost předAnalysisMode. - 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<>
V .NET 6 je tato vlastnost 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 od ostatních kategorií pravidel. Pokud tuto vlastnost vynecháte pro konkrétní 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 ca. 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,AnalysisLevelmá přednost předAnalysisMode. - Pokud
AnalysisModeje nastavena aAnalysisLevelAllEnabledByDefaultje nastavena na5nebo5.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
- InvariantGlobalization
- PředdefinovanéculturesOnly
- RetainVMGarbageCollection
- ServerGarbageCollection
- ThreadPoolMaxThreads
- ThreadPoolMinThreads
- Vrstvenícompilation
- TieredCompilationQuickJit
- TieredCompilationQuickJitForLoops
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 nakonfiguruje, jestli aplikace běží v režimu globalizace invariantní , což znamená, že nemá přístup k datům specifickým pro jazykovou verzi. Nastavte hodnotu tak, aby true se spustila v globalizačním režimu invariantně. 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 jestli 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 režimu globalizace 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 globalizačním režimu invariantní.
RetainVMGarbageCollection
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 uvolnění. Nastavením hodnoty sdělte true systému uvolňování paměti, aby segmenty umístil 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í vlákna.
<PropertyGroup>
<ThreadPoolMinThreads>4</ThreadPoolMinThreads>
</PropertyGroup>
Vrstvenícompilation
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
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 u metod, 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 Quick JIT for loops.
<PropertyGroup>
<TieredCompilationQuickJitForLoops>true</TieredCompilationQuickJitForLoops>
</PropertyGroup>
Referenční vlastnosti
V této části jsou popsány následující vlastnosti nástroje MSBuild:
- AssetTargetFallback
- DisableImplicitFrameworkReferences
- DisableTransitiveProjectReferences
- Vlastnosti související s obnovením
- ValidateExecutableReferencesMatchSelfContained
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, která používá PackageReference , ale tento balíček neobsahuje prostředky, které jsou kompatibilní s projekty TargetFramework, AssetTargetFallback vlastnost se přehraje. Kompatibilita odkazovaného balíčku se znovu zkontroluje pomocí každé cílové architektury, která je uvedena 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á 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.
Tuto vlastnost nastavte tak, aby true se zakázaly implicitní FrameworkReference položky nebo PackageReference . 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>
DisableTransitiveProjectReferences
Vlastnost DisableTransitiveProjectReferences řídí implicitní odkazy na projekt. Nastavte tuto vlastnost tak, aby true se zakázaly 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" 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>
Vlastnosti související s obnovením
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 je a RestorePackagesPathRestoreIgnoreFailedSources. Další informace o těchto a dalších vlastnostech najdete v tématu obnovení cíle.
<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 s vlastním obsahem odkazuje na spustitelný projekt závislý na rozhraní nebo naopak, vygeneruje chyby NETSDK1150 a NETSDK1151. Chcete-li se těmto chybám vyhnout, 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í na sadu Windows SDK jsou součástí sady .NET 5+ SDK. Místo toho aktualizujte svou verzi sady .NET SDK, abyste mohli odkazovat na nejnovější balíček sady Windows 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.
Vlastnosti související se spuštěním
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 relativní k adresáři projektu. Pokud nezadáte adresář, OutDir použije se jako pracovní adresář.
<PropertyGroup>
<RunWorkingDirectory>c:\temp</RunWorkingDirectory>
</PropertyGroup>
Vlastnosti související s hostování
V této části jsou popsány následující vlastnosti nástroje MSBuild:
EnableComHosting
Vlastnost EnableComHosting označuje, že sestavení poskytuje server MODELU COM. Nastavení také znamená, že EnableDynamicLoading je true.EnableComHostingtrue
<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 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
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. Tuto vlastnost nastavte 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 jazyka C#, které cílí na .NET 6 nebo novější, jsou ImplicitUsings ve výchozím nastavení 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. K dispozici jsou následující další typy položek sady .NET SDK:
U těchto položek můžete použít libovolný z atributů standardní položky, například Include 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í celé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 rozsah verzí nebo verzí. Informace o tom, jak zadat minimální verzi, maximální verzi, rozsah nebo přesnou shodu, najdete 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 vylučuje 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ů napříč projektem 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 visual basicu. Tato vlastnost je dostupná od .NET 6.
<ItemGroup>
<Using Include="My.Awesome.Namespace" />
</ItemGroup>
Položku můžete také použít Using k definování globálních using <alias> a using static <type> direktiv.
<ItemGroup>
<Using Include="My.Awesome.Namespace" Alias="Awesome" />
</ItemGroup>
Příklad:
<Using Include="Microsoft.AspNetCore.Http.Results" Alias="Results" />emitujeglobal using Results = global::Microsoft.AspNetCore.Http.Results;<Using Include="Microsoft.AspNetCore.Http.Results" Static="True" />emitujeglobal using static global::Microsoft.AspNetCore.Http.Results;
Další informace o direktivách a using static <type> direktivách aliasů using najdete v tématu použití direktivy.
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 u položky 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 zkopíruje položku a Never, která položku nikdy nekopírovala. 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
Pro položku mimo adresář projektu a její podadresáře používá cíl publikování 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 Průzkumník řešení okně 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án, 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.