Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tato stránka je odkazem na vlastnosti a položky nástroje MSBuild, které můžete použít ke konfiguraci projektů .NET.
Note
Tato stránka probíhá a neobsahuje seznam všech užitečných vlastností nástroje MSBuild pro sadu .NET SDK. Seznam běžných vlastností nástroje MSBuild naleznete v části Společné vlastnosti nástroje MSBuild.
Vlastnosti ověření sestavení
Tyto vlastnosti a položky jsou předány úkolu ValidateAssemblies . Další informace o ověřování sestavení naleznete v tématu Ověření sestavení.
Následující vlastnosti nástroje MSBuild jsou popsány v této části:
Note
Tyto vlastnosti nejsou součástí sady .NET SDK (zatím). Pokud je chcete použít, musíte také přidat PackageReference microsoft.DotNet.ApiCompat.Task.
Kromě toho platí také následující vlastnosti, které jsou zdokumentované ve vlastnostech ověření balíčku pro ověření sestavení:
- ApiCompatEnableRuleAttributesMustMatch
- ApiCompatEnableRuleCannotChangeParameterName
- ApiCompatExcludeAttributesFile
- ApiCompatGenerateSuppressionFile
- ApiCompatPermitUnnecessarySuppressions
- ApiCompatPreserveUnnecessarySuppressions
- ApiCompatRespectInternals
- ApiCompatSuppressionFile
- ApiCompatSuppressionOutputFile
- NoWarn
- RoslynAssembliesPath
ApiCompatStrictMode
Při nastavení truena ApiCompatStrictMode vlastnost určuje, že kontroly kompatibility rozhraní API by se měly provádět v přísném režimu.
<PropertyGroup>
<ApiCompatStrictMode>true</ApiCompatStrictMode>
</PropertyGroup>
ApiCompatValidateAssemblies
Tato ApiCompatValidateAssemblies vlastnost umožňuje řadu ověření na zadaných sestaveních. Další informace naleznete v tématu Ověření sestavení.
<PropertyGroup>
<ApiCompatValidateAssemblies>true</ApiCompatValidateAssemblies>
</PropertyGroup>
Vlastnosti atributu sestavení
GenerateAssemblyInfo
Vlastnost GenerateAssemblyInfo řídí AssemblyInfo generování atributů pro projekt. Výchozí hodnota je true. Slouží false k zakázání generování souboru:
<PropertyGroup>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>
Nastavení GeneratedAssemblyInfoFile řídí název vygenerovaného souboru.
GenerateAssemblyInfo Pokud je truehodnota , vlastnosti projektu související s balíčkem se transformují na atributy sestavení.
Další informace o generování atributů sestavení pomocí souboru projektu naleznete v tématu Nastavení atributů sestavení v souboru projektu.
GeneratedAssemblyInfoFile
Vlastnost GeneratedAssemblyInfoFile definuje relativní nebo absolutní cestu vygenerovaného souboru informací o sestavení. Výchozí hodnota souboru s názvem [název_projektu]. AssemblyInfo. [cs|vb] v adresáři $(IntermediateOutputPath)(obvykle obj).
<PropertyGroup>
<GeneratedAssemblyInfoFile>assemblyinfo.cs</GeneratedAssemblyInfoFile>
</PropertyGroup>
Vlastnosti architektury
Následující vlastnosti nástroje MSBuild jsou popsány v této části:
TargetFramework
Vlastnost TargetFramework určuje verzi cílové architektury pro aplikaci. Seznam platných monikerů cílové architektury najdete v tématu Cílové architektury v projektech ve stylu sady SDK.
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
Další informace naleznete v tématu Cílové architektury v projektech ve stylu sady SDK.
TargetFrameworks
TargetFrameworks Vlastnost použijte, pokud chcete, aby vaše aplikace cílila na více platforem. Seznam platných monikerů cílové architektury najdete v tématu Cílové architektury v projektech ve stylu sady SDK.
Note
Pokud TargetFrameworks je zadáno TargetFramework (množné číslo), bude ignorováno (jednotné číslo).
<PropertyGroup>
<TargetFrameworks>net8.0;net462</TargetFrameworks>
</PropertyGroup>
Další informace naleznete v tématu Cílové architektury v projektech ve stylu sady SDK.
NetStandardImplicitPackageVersion
Note
Tato vlastnost se vztahuje pouze na projekty používající netstandard1.x. Nevztahuje se na projekty, které používají netstandard2.x.
NetStandardImplicitPackageVersion Vlastnost použijte, pokud chcete zadat verzi architektury, která je nižší než verze metabalíku. Soubor projektu v následujícím příkladu cílí netstandard1.3 , ale používá verzi NETStandard.Library1.6.0 .
<PropertyGroup>
<TargetFramework>netstandard1.3</TargetFramework>
<NetStandardImplicitPackageVersion>1.6.0</NetStandardImplicitPackageVersion>
</PropertyGroup>
Vlastnosti balíčku
Popisné vlastnosti
Můžete zadat vlastnosti, jako PackageIdje , , PackageVersionPackageIcon, Titlea Description popsat balíček, který se vytvoří z projektu. Informace otěchtoch
<PropertyGroup>
...
<PackageId>ClassLibDotNetStandard</PackageId>
<Version>1.0.0</Version>
<Authors>John Doe</Authors>
<Company>Contoso</Company>
</PropertyGroup>
PackRelease
Vlastnost PackRelease je podobná PublishRelease vlastnost, s tím rozdílem, že změní výchozí chování dotnet pack. Tato vlastnost byla zavedena v .NET 7.
<PropertyGroup>
<PackRelease>true</PackRelease>
</PropertyGroup>
Note
Počínaje sadou .NET 8 SDK je PackRelease výchozí hodnota true. Další informace naleznete v tématu dotnet pack používá konfiguraci vydané verze.
Vlastnosti ověření balíčku
Tyto vlastnosti a položky jsou předány úkolu ValidatePackage . Další informace o ověření balíčku naleznete v tématu Přehled ověření balíčku.
Vlastnosti úlohy ValidateAssemblies naleznete v části Vlastnosti ověření sestavení.
Následující vlastnosti a položky nástroje MSBuild jsou popsány v této části:
- ApiCompatEnableRuleAttributesMustMatch
- ApiCompatEnableRuleCannotChangeParameterName
- ApiCompatExcludeAttributesFile
- ApiCompatGenerateSuppressionFile
- ApiCompatPermitUnnecessarySuppressions
- ApiCompatPreserveUnnecessarySuppressions
- ApiCompatRespectInternals
- ApiCompatSuppressionFile
- ApiCompatSuppressionOutputFile
- EnablePackageValidation
- EnableStrictModeForBaselineValidation
- EnableStrictModeForCompatibleFrameworksInPackage
- EnableStrictModeForCompatibleTfms
- NoWarn
- PackageValidationBaselineFrameworkToIgnore
- PackageValidationBaselineName
- PackageValidationBaselineVersion
- PackageValidationReferencePath
- RoslynAssembliesPath
ApiCompatEnableRuleAttributesMustMatch
Pokud je tato vlastnost nastavená na truehodnotu , ApiCompatEnableRuleAttributesMustMatch povolí ověřovací pravidlo, které kontroluje, jestli se atributy shodují. Výchozí hodnota je false.
<PropertyGroup>
<ApiCompatEnableRuleAttributesMustMatch>true</ApiCompatEnableRuleAttributesMustMatch>
</PropertyGroup>
ApiCompatEnableRuleCannotChangeParameterName
Pokud je tato vlastnost nastavena na truehodnotu , ApiCompatEnableRuleCannotChangeParameterName umožňuje ověřovací pravidlo, které kontroluje, zda se názvy parametrů změnily ve veřejných metodách. Výchozí hodnota je false.
<PropertyGroup>
<ApiCompatEnableRuleCannotChangeParameterName>true</ApiCompatEnableRuleCannotChangeParameterName>
</PropertyGroup>
ApiCompatExcludeAttributesFile
Položka ApiCompatExcludeAttributesFile určuje cestu k souboru, který obsahuje atributy, které se mají vyloučit ve formátu DocId .
<ItemGroup>
<ApiCompatExcludeAttributesFile Include="ApiCompatExcludedAttributes.txt" />
<ApiCompatExcludeAttributesFile Include="ApiCompatBaselineExcludedAttributes.txt" />
</ItemGroup>
ApiCompatGenerateSuppressionFile
Vlastnost ApiCompatGenerateSuppressionFile určuje, zda se má vygenerovat soubor potlačení kompatibility.
<PropertyGroup>
<ApiCompatGenerateSuppressionFile>true</ApiCompatGenerateSuppressionFile>
</PropertyGroup>
ApiCompatPermitUnnecessarySuppressions
Vlastnost ApiCompatPermitUnnecessarySuppressions určuje, zda povolit nepotřebné potlačení v souboru potlačení.
Výchozí hodnota je false.
<PropertyGroup>
<ApiCompatPermitUnnecessarySuppressions>true</ApiCompatPermitUnnecessarySuppressions>
</PropertyGroup>
ApiCompatPreserveUnnecessarySuppressions
Vlastnost ApiCompatPreserveUnnecessarySuppressions určuje, zda chcete zachovat nepotřebné potlačení při opětovném vygenerování souboru potlačení. Při opětovném vygenerování existujícího souboru potlačení se jeho obsah načte, deserializuje do sady potlačení a uloží se do seznamu. Některé potlačení už nemusí být nutné, pokud byla opravena nekompatibilitu. Pokud jsou potlačení serializována zpět na disk, můžete zvolit, že chcete zachovat všechny existující (deserializované) výrazy nastavením této vlastnosti na true.
Výchozí hodnota je false.
<PropertyGroup>
<ApiCompatPreserveUnnecessarySuppressions>true</ApiCompatPreserveUnnecessarySuppressions>
</PropertyGroup>
ApiCompatRespectInternals
Vlastnost ApiCompatRespectInternals určuje, jestli internal se má kromě public rozhraní API kontrolovat kompatibilita rozhraní API.
<PropertyGroup>
<ApiCompatRespectInternals>true</ApiCompatRespectInternals>
</PropertyGroup>
ApiCompatSuppressionFile
Položka ApiCompatSuppressionFile určuje cestu k jednomu nebo více souborům potlačení, ze které se mají číst. Pokud není zadaný, soubor potlačení <project-directory>/CompatibilitySuppressions.xml se přečte (pokud existuje).
<ItemGroup>
<ApiCompatSuppressionFile Include="CompatibilitySuppressions.xml;CompatibilitySuppressions.WasmThreads.xml" />
</ItemGroup>
ApiCompatSuppressionOutputFile
Vlastnost ApiCompatSuppressionOutputFile určuje cestu k souboru potlačení pro zápis do kdy <ApiCompatGenerateSuppressionFile> je true. Pokud není zadáno, použije se první ApiCompatSuppressionFile položka.
EnablePackageValidation
Tato EnablePackageValidation vlastnost umožňuje po úloze řadu ověření balíčku Pack . Další informace najdete v tématu ověření balíčku.
<PropertyGroup>
<EnablePackageValidation>true</EnablePackageValidation>
</PropertyGroup>
EnableStrictModeForBaselineValidation
Pokud je tato vlastnost nastavená na truehodnotu , EnableStrictModeForBaselineValidation umožňuje striktní režim pro kontroly směrného plánu balíčku. Výchozí hodnota je false.
EnableStrictModeForCompatibleFrameworksInPackage
Pokud je nastavena na trueEnableStrictModeForCompatibleFrameworksInPackagehodnotu , vlastnost umožňuje striktní režim pro sestavení, která jsou kompatibilní na základě jejich cílové architektury. Výchozí hodnota je false.
EnableStrictModeForCompatibleTfms
Při nastavení truena EnableStrictModeForCompatibleTfms , vlastnost umožňuje striktní režim pro kontrakt a implementace sestavení pro všechny kompatibilní cílové architektury. Výchozí hodnota je true.
NoWarn
Vlastnost NoWarn určuje ID diagnostiky, která se mají potlačit.
<PropertyGroup>
<NoWarn>$(NoWarn);PKV0001</NoWarn>
</PropertyGroup>
PackageValidationBaselineFrameworkToIgnore
Položka PackageValidationBaselineFrameworkToIgnore určuje cílovou architekturu, která se má z balíčku směrného plánu ignorovat. Řetězec architektury musí přesně odpovídat názvu složky v balíčku podle směrného plánu.
<ItemGroup>
<PackageValidationBaselineFrameworkToIgnore Include="netcoreapp2.1" />
</ItemGroup>
PackageValidationBaselineName
Vlastnost PackageValidationBaselineName určuje název balíčku směrného plánu k ověření aktuálního balíčku proti. Pokud není zadáno, použije se PackageId hodnota.
PackageValidationBaselineVersion
Vlastnost PackageValidationBaselineVersion určuje verzi balíčku podle směrného plánu k ověření aktuálního balíčku.
PackageValidationReferencePath
Položka PackageValidationReferencePath určuje cestu k adresáři, kde lze najít referenční sestavení pro TFM.
<ItemGroup>
<PackageValidationReferencePath Include="path/to/reference-assembly" TargetFramework="net9.0" />
</ItemGroup>
RoslynAssembliesPath
Vlastnost RoslynAssembliesPath určuje cestu k adresáři, který obsahuje sestavení Microsoft.CodeAnalysis, které chcete použít. Tuto vlastnost je potřeba nastavit jenom v případě, že chcete testovat s novějším kompilátorem, než jaký je v sadě SDK.
Vlastnosti související s publikováním
Následující vlastnosti nástroje MSBuild jsou popsány v této části:
- AppendRuntimeIdentifierToOutputPath
- AppendTargetFrameworkToOutputPath
- CopyLocalLockFileAssemblies
- ErrorOnDuplicatePublishOutputFiles
- GenerateRuntimeConfigDevFile
- GenerateRuntimeConfigurationFiles
- GenerateSatelliteAssembliesForCore
- IsPublishable
- PreserveCompilationContext
- PreserveCompilationReferences
- ProduceReferenceAssemblyInOutDir
- PublishDocumentationFile
- PublishDocumentationFiles
- PublishReferencesDocumentationFiles
- PublishRelease
- PublishSelfContained
- RollForward
- RuntimeFrameworkVersion
- RuntimeIdentifier
- RuntimeIdentifiers
- SatelliteResourceLanguages
- SelfContained
- UseAppHost
AppendTargetFrameworkToOutputPath
Vlastnost AppendTargetFrameworkToOutputPath určuje, zda je k výstupní cestě připojeno moniker cílové architektury (TFM). Sada .NET SDK automaticky připojí cílovou architekturu a pokud je k dispozici, identifikátor modulu runtime k výstupní cestě. Nastavení AppendTargetFrameworkToOutputPath , které false zabrání připojení TFM k výstupní cestě. Bez TFM ve výstupní cestě se však může přepsat více artefaktů sestavení.
Například pro aplikaci .NET 5 se výstupní cesta změní z bin\Debug\net5.0bin\Debug následujícího nastavení:
<PropertyGroup>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
</PropertyGroup>
AppendRuntimeIdentifierToOutputPath
Vlastnost AppendRuntimeIdentifierToOutputPath řídí, zda je identifikátor modulu runtime (RID) připojen k výstupní cestě. Sada .NET SDK automaticky připojí cílovou architekturu a v případě přítomnosti identifikátor modulu runtime (RID) k výstupní cestě. Nastavením AppendRuntimeIdentifierToOutputPath zabráníte false připojení identifikátoru RID k výstupní cestě. (Identifikátor RID je ale stále připojený k cestě publikování. Další informace najdete v tématu dotnet/sdk#12114.)
Například pro aplikaci .NET 9 a identifikátor RID win-x64v následujícím nastavení se změní výstupní cesta z bin\Debug\net9.0\win-x64bin\Debug\net9.0:
<PropertyGroup>
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
</PropertyGroup>
CopyLocalLockFileAssemblies
Vlastnost CopyLocalLockFileAssemblies je užitečná pro projekty modulů plug-in, které mají závislosti na jiných knihovnách. Pokud tuto vlastnost nastavíte na true, všechny tranzitivní závislosti balíčku NuGet se zkopírují do výstupního adresáře. To znamená, že můžete použít výstup dotnet build ke spuštění modulu plug-in na libovolném počítači.
<PropertyGroup>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>
Výchozí hodnota CopyLocalLockFileAssemblies se může lišit v závislosti na typu výstupu. Například pro knihovny tříd je výchozí hodnota false, zatímco pro konzolové aplikace je výchozí .true Tuto vlastnost můžete explicitně zadat, aby se v případě potřeby přepsaly výchozí hodnoty.
Tip
Alternativně můžete použít dotnet publish k publikování knihovny tříd. Další informace najdete v tématu dotnet publish.
ErrorOnDuplicatePublishOutputFiles
Tato ErrorOnDuplicatePublishOutputFiles vlastnost souvisí s tím, jestli sada SDK generuje chybu NETSDK1148, když nástroj MSBuild zjistí ve výstupu publikování duplicitní soubory, ale nedokáže určit, které soubory se mají odebrat.
ErrorOnDuplicatePublishOutputFiles Vlastnost nastavte, false pokud nechcete, aby se chyba vygenerovala.
<PropertyGroup>
<ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>
</PropertyGroup>
Tato vlastnost byla zavedena v .NET 6.
GenerateRuntimeConfigDevFile
Počínaje sadou .NET 6 SDK se soubor [Appname].runtimesettings.dev.json už v době kompilace negeneruje. Pokud chcete, aby se tento soubor vygeneroval, nastavte GenerateRuntimeConfigDevFile vlastnost na truehodnotu .
<PropertyGroup>
<GenerateRuntimeConfigDevFile>true</GenerateRuntimeConfigDevFile>
</PropertyGroup>
GenerateRuntimeConfigurationFiles
Vlastnost GenerateRuntimeConfigurationFiles určuje, jestli se možnosti konfigurace modulu runtime zkopírují ze souboru runtimeconfig.template.json do souboru [appname].runtimeconfig.json souboru. Pro aplikace, které vyžadují runtimeconfig.json soubor, to znamená ty, jejichž OutputType je Exe, tato vlastnost je výchozí true.
<PropertyGroup>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
</PropertyGroup>
GenerateSatelliteAssembliesForCore
Vlastnost GenerateSatelliteAssembliesForCore určuje, zda jsou satelitní sestavení generována pomocí csc.exe nebo Al.exe (Assembly Linker) v projektech rozhraní .NET Framework. (Projekty .NET Core a .NET 5+ vždy používají csc.exe ke generování satelitních sestavení.) U projektů rozhraní .NET Framework jsou satelitní sestavení vytvořena ve výchozím nastavení al.exe.
GenerateSatelliteAssembliesForCore Nastavením vlastnosti na truesatelitní sestavení jsou vytvořena csc.exe místo toho. Použití csc.exe může být výhodné v následujících situacích:
- Chcete použít možnost
deterministicjazyka C#. - Jste omezeni skutečností, že al.exe nemá žádnou podporu pro veřejné podepisování a zpracovává AssemblyInformationalVersionAttribute špatně.
<PropertyGroup>
<GenerateSatelliteAssembliesForCore>true</GenerateSatelliteAssembliesForCore>
</PropertyGroup>
IsPublishable
Tato IsPublishable vlastnost umožňuje Publish spuštění cíle. Tato vlastnost má vliv pouze na procesy, které používají soubory .*proj a Publish cíl, například příkaz dotnet publish . Nemá vliv na publikování v sadě Visual Studio, který používá PublishOnly cíl. Výchozí hodnota je true.
Tato vlastnost je užitečná, pokud spustíte dotnet publish soubor řešení, protože umožňuje automatický výběr projektů, které by se měly publikovat.
<PropertyGroup>
<IsPublishable>false</IsPublishable>
</PropertyGroup>
PreserveCompilationContext
Tato PreserveCompilationContext vlastnost umožňuje sestavené nebo publikované aplikaci kompilovat více kódu za běhu pomocí stejných nastavení, která byla použita v době sestavení. Sestavení odkazovaná v době sestavení se zkopírují do podadresáře odkazu výstupního adresáře. Názvy referenčních sestavení jsou uloženy v souboru .deps.json aplikace spolu s možnostmi předanými kompilátoru. Tyto informace můžete načíst pomocí DependencyContext.CompileLibraries vlastností a DependencyContext.CompilationOptions vlastností.
Tyto funkce většinou interně používají ASP.NET Core MVC a Razor Pages k podpoře runtime kompilace souborů Razor.
<PropertyGroup>
<PreserveCompilationContext>true</PreserveCompilationContext>
</PropertyGroup>
PreserveCompilationReferences
Vlastnost PreserveCompilationReferences je podobná PreserveCompilationContext vlastnost, s tím rozdílem, že kopíruje pouze odkazovaná sestavení do adresáře publikování, a ne .deps.json soubor.
<PropertyGroup>
<PreserveCompilationReferences>true</PreserveCompilationReferences>
</PropertyGroup>
Další informace naleznete v tématu Vlastnosti sady Razor SDK.
ProduceReferenceAssemblyInOutDir
V .NET 5 a starších verzích jsou referenční sestavení vždy zapsána do OutDir adresáře. V .NET 6 a novějších verzích můžete pomocí ProduceReferenceAssemblyInOutDir vlastnosti určit, zda jsou referenční sestavení zapsána do OutDir adresáře. Výchozí hodnota je falsea referenční sestavení jsou zapsána pouze do IntermediateOutputPath adresáře. Nastavte hodnotu na true zápis referenčních sestavení do OutDir adresáře.
<PropertyGroup>
<ProduceReferenceAssemblyInOutDir>true</ProduceReferenceAssemblyInOutDir>
</PropertyGroup>
Další informace naleznete v tématu Zápis referenčních sestavení do zprostředkujícího výstupu.
PublishDocumentationFile
Pokud je truetato vlastnost , soubor dokumentace XML projektu, pokud je vygenerován, je zahrnut do výstupu publikování projektu. Tato vlastnost má výchozí hodnotu true.
Tip
Nastavte GenerateDocumentationFile tak, aby true vygeneroval soubor dokumentace XML v době kompilace.
PublishDocumentationFiles
Tato vlastnost je příznak povolení pro několik dalších vlastností, které řídí, zda jsou různé druhy souborů dokumentace XML zkopírovány do adresáře publikování ve výchozím nastavení, konkrétně PublishDocumentationFile a PublishReferencesDocumentationFiles. Pokud tyto vlastnosti nejsou nastaveny a tato vlastnost je nastavena, budou tyto vlastnosti výchozí .true Tato vlastnost má výchozí hodnotu true.
PublishReferencesDocumentationFiles
Pokud je truetato vlastnost , soubory dokumentace XML pro odkazy projektu se zkopírují do adresáře publikování místo jen runtime prostředků, jako jsou soubory DLL. Tato vlastnost má výchozí hodnotu true.
PublishRelease
Vlastnost PublishRelease informuje dotnet publish o použití Release konfigurace ve výchozím nastavení místo Debug konfigurace. Tato vlastnost byla zavedena v .NET 7.
<PropertyGroup>
<PublishRelease>true</PublishRelease>
</PropertyGroup>
Note
- Počínaje sadou .NET 8 SDK se ve výchozím nastavení nastaví
PublishReleasepro projekty,truekteré cílí na .NET 8 nebo novější. Další informace najdete v tématu dotnet publish používá konfiguraci vydané verze. - Tato vlastnost nemá vliv na chování
dotnet build /t:Publisha změní konfiguraci pouze při publikování prostřednictvím rozhraní .NET CLI.
PublishSelfContained
Tato PublishSelfContained vlastnost informuje dotnet publish o publikování aplikace jako samostatné aplikace. Tato vlastnost je užitečná, když nemůžete použít --self-contained argument pro příkaz dotnet publish – například při publikování na úrovni řešení. V takovém případě můžete přidat PublishSelfContained vlastnost MSBuild do souboru projektu nebo Directory.Build.Props .
Tato vlastnost byla zavedena v .NET 7. Podobá se vlastnosti SelfContained s tím rozdílem, že je specifická pro sloveso publish . Doporučuje se místo PublishSelfContainedSelfContained.
<PropertyGroup>
<PublishSelfContained>true</PublishSelfContained>
</PropertyGroup>
RollForward
Vlastnost RollForward řídí, jak aplikace zvolí modul runtime, pokud je k dispozici více verzí modulu runtime. Tato hodnota je výstupem .runtimeconfig.json jako rollForward nastavení.
<PropertyGroup>
<RollForward>LatestMinor</RollForward>
</PropertyGroup>
Nastavte RollForward jednu z následujících hodnot:
| Value | Description |
|---|---|
Minor |
Výchozí, pokud není zadáno. Pokud chybí požadovaná podverze, přejděte na další dostupnou podverzi (a verzi s nejvyšší dostupnou opravou v rámci této podverze). Pokud je požadovaná podverze k dispozici, použije se LatestPatch zásada. |
Major |
Pokud chybí požadovaná hlavní verze, roll-forward to the next available major version (at its lowest available minor version, and highest available patch version within that minor version), if requested major version is missing. Pokud je požadovaná hlavní verze přítomen, použije se Minor zásada. |
LatestPatch |
Proveďte aktualizaci na nejvyšší dostupnou verzi opravy pro požadovanou hlavní a vedlejší verzi. Tato hodnota zakáže vrácení podverze vpřed. |
LatestMinor |
Roll-forward to the highest minor version available for the requested major version (and highest available patch version within that minor version), i když je požadovaná podverze k dispozici. |
LatestMajor |
Roll-forward to highest available major version (and highest available minor and patch version within that major version), i když je požadovaná hlavní verze přítomna. |
Disable |
Nepřecházejte dál, vytvořte vazbu pouze na zadanou verzi. Tato zásada se nedoporučuje pro obecné použití, protože zakazuje přechod na nejnovější opravy. Tato hodnota se doporučuje jenom pro testování. |
Další informace naleznete v tématu Řízení chování roll-forward.
RuntimeFrameworkVersion
Vlastnost RuntimeFrameworkVersion určuje verzi modulu runtime, která se má použít při publikování. Zadejte verzi modulu runtime:
<PropertyGroup>
<RuntimeFrameworkVersion>5.0.7</RuntimeFrameworkVersion>
</PropertyGroup>
Při publikování aplikace závislé na rozhraní určuje tato hodnota minimální požadovanou verzi. Při publikování samostatné aplikace určuje tato hodnota přesnou požadovanou verzi.
RuntimeIdentifier
Tato RuntimeIdentifier vlastnost umožňuje zadat jeden identifikátor modulu runtime (RID) pro projekt. Identifikátor RID umožňuje publikování samostatného nasazení.
<PropertyGroup>
<RuntimeIdentifier>linux-x64</RuntimeIdentifier>
</PropertyGroup>
RuntimeIdentifiers
Tato RuntimeIdentifiers vlastnost umožňuje zadat seznam identifikátorů modulu runtime (RID) oddělených středníkem. Tuto vlastnost použijte, pokud potřebujete publikovat více modulů runtime.
RuntimeIdentifiers se používá v době obnovení, aby se zajistilo, že jsou v grafu správné prostředky.
Tip
RuntimeIdentifier (singulární) může poskytovat rychlejší sestavení v případě, že je vyžadován pouze jeden modul runtime.
<PropertyGroup>
<RuntimeIdentifiers>win-x64;osx-x64;linux-x64</RuntimeIdentifiers>
</PropertyGroup>
SatelliteResourceLanguages
Tato SatelliteResourceLanguages vlastnost umožňuje určit, které jazyky chcete během sestavování a publikování zachovat sestavení satelitních prostředků. Mnoho balíčků NuGet zahrnuje lokalizovaná satelitní sestavení prostředků v hlavním balíčku. U projektů, které odkazují na tyto balíčky NuGet, které nevyžadují lokalizované prostředky, mohou lokalizovaná sestavení zbytečně nafouknout velikost sestavení a publikování výstupu.
SatelliteResourceLanguages Přidáním vlastnosti do souboru projektu budou do výstupu sestavení a publikování zahrnuta pouze lokalizovaná sestavení pro zadané jazyky. Například v následujícím souboru projektu se zachovají pouze satelitní sestavení zdrojů v angličtině (USA) a němčině (Německo).
<PropertyGroup>
<SatelliteResourceLanguages>en-US;de-DE</SatelliteResourceLanguages>
</PropertyGroup>
Note
Tuto vlastnost je nutné zadat v projektu, který odkazuje na balíček NuGet s lokalizovanými satelitními sestaveními prostředků.
Chcete-li zadat více jazyků jako argument
dotnet publish, je nutné přidat tři dvojice uvozovek kolem identifikátorů jazyka. Například:dotnet msbuild multi.msbuildproj -p:SatelliteResourceLanguages="""de;en"""
SelfContained
Vlastnost SelfContained informuje a dotnet build sestaví dotnet publish nebo publikuje aplikaci jako samostatnou aplikaci. Tato vlastnost je užitečná, když nemůžete použít --self-contained argument s příkazem dotnet – například při publikování na úrovni řešení. V takovém případě můžete přidat SelfContained vlastnost MSBuild do souboru projektu nebo Directory.Build.Props .
Tato vlastnost je podobná PublishSelfContained vlastnost. Doporučuje se místo toho použít PublishSelfContained , pokud SelfContained je to možné.
<PropertyGroup>
<SelfContained>true</SelfContained>
</PropertyGroup>
UseAppHost
Vlastnost UseAppHost určuje, zda je pro nasazení vytvořen nativní spustitelný soubor. Pro samostatná nasazení se vyžaduje nativní spustitelný soubor. Ve výchozím nastavení se vytvoří spustitelný soubor závislý na rozhraní.
UseAppHost Nastavte vlastnost tak, aby false se zakázalo generování spustitelného souboru.
<PropertyGroup>
<UseAppHost>false</UseAppHost>
</PropertyGroup>
Další informace o nasazení najdete v tématu Nasazení aplikace .NET.
Vlastnosti související s oříznutím
K dispozici je celá řada vlastností nástroje MSBuild k vyladění oříznutí, což je funkce, která oříznou nepoužívaný kód z samostatně obsažených nasazení. Tyto možnosti jsou podrobně popsány v možnostech oříznutí. Následující tabulka obsahuje stručný přehled.
| Property | Values | Description |
|---|---|---|
PublishTrimmed |
true nebo false |
Určuje, jestli je během publikování povolené oříznutí. |
TrimMode |
full nebo partial |
Výchozí hodnota je full. Řídí členitost oříznutí. |
SuppressTrimAnalysisWarnings |
true nebo false |
Určuje, jestli se vytvářejí upozornění analýzy oříznutí. |
EnableTrimAnalyzer |
true nebo false |
Určuje, jestli se vytváří podmnožina upozornění analýzy oříznutí. Analýzu můžete povolit i v případě, že PublishTrimmed je nastavená hodnota false. |
ILLinkTreatWarningsAsErrors |
true nebo false |
Určuje, jestli se upozornění oříznutí považují za chyby. Můžete například chtít nastavit tuto vlastnost na false hodnotu , která TreatWarningsAsErrors je nastavena na truehodnotu . |
TrimmerSingleWarn |
true nebo false |
Určuje, jestli se zobrazí jedno upozornění na sestavení, nebo všechna upozornění. |
TrimmerRemoveSymbols |
true nebo false |
Určuje, jestli jsou všechny symboly odebrány z oříznuté aplikace. |
Vlastnosti související s sestavením
Následující vlastnosti nástroje MSBuild jsou popsány v této části:
- ContinuousIntegrationBuild
- CopyDebugSymbolFilesFromPackages
- CopyDocumentationFilesFromPackages
- DisableImplicitFrameworkDefines
- DocumentationFile
- EmbeddedResourceUseDependentUponConvention
- EnablePreviewFeatures
- EnableWindowsTargeting
- GenerateDocumentationFile
- GenerateRequiresPreviewFeaturesAttribute
- OptimizeImplicitlyTriggeredBuild
- DisableRuntimeMarshalling
- BuildWithNetFrameworkHostedCompiler
- RoslynCompilerType
Možnosti kompilátoru jazyka C#, například LangVersion a Nullable, lze také zadat jako vlastnosti NÁSTROJE MSBuild v souboru projektu. Další informace najdete v tématu Možnosti kompilátoru jazyka C#.
ContinuousIntegrationBuild
Tato ContinuousIntegrationBuild vlastnost označuje, jestli se sestavení spouští na serveru kontinuální integrace (CI). Pokud je tato vlastnost nastavená na true, tato vlastnost umožňuje nastavení, která se vztahují pouze na oficiální buildy na rozdíl od místních buildů na vývojářském počítači. Například uložené cesty k souborům jsou normalizovány pro oficiální buildy. Ladicí program ale na místním vývojovém počítači nedokáže najít místní zdrojové soubory, pokud jsou cesty k souborům normalizované.
Note
V současné době nastavení této vlastnosti true funguje pouze v případě, že přidáte odkaz na konkrétní balíček zprostředkovatele SourceLink nebo <SourceRoot Include="$(MyDirectory)" /> položku. Další informace najdete v tématu dotnet/roslyn problém 55860.
Proměnnou systému CI můžete použít k podmíněnému nastavení ContinuousIntegrationBuild vlastnosti. Například název proměnné pro Azure Pipelines je TF_BUILD:
<PropertyGroup Condition="'$(TF_BUILD)' == 'true'">
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>
Pro GitHub Actions je GITHUB_ACTIONSnázev proměnné:
<PropertyGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>
CopyDebugSymbolFilesFromPackages
Pokud je tato vlastnost nastavena na true, všechny soubory symbolů (označované také jako soubory PDB) z PackageReference položek v projektu se zkopírují do výstupu sestavení. Tyto soubory mohou poskytovat podrobnější trasování zásobníku pro výjimky a usnadnit pochopení výpisů paměti a trasování spuštěné aplikace. Zahrnutím těchto souborů ale vznikne větší velikost sady nasazení.
Tato vlastnost byla zavedena v sadě .NET SDK 7.0.100, i když se ve výchozím nastavení nezadává.
CopyDocumentationFilesFromPackages
Pokud je tato vlastnost nastavena na true, všechny vygenerované soubory dokumentace XML z PackageReference položek v projektu se zkopírují do výstupu sestavení. Všimněte si, že povolení této funkce bude mít za následek větší velikost sady nasazení.
Tato vlastnost byla zavedena v sadě .NET SDK 7.0.100, i když se ve výchozím nastavení nezadává.
DisableImplicitFrameworkDefines
Vlastnost DisableImplicitFrameworkDefines řídí, zda sada SDK generuje symboly preprocesoru pro cílovou architekturu a platformu pro projekt .NET. Pokud je tato vlastnost nastavená na false symboly preprocesoru (což je výchozí hodnota), vygenerují se pro:
- Framework bez verze (
NETFRAMEWORK,NETSTANDARD,NET) - Architektura s verzí (
NET48,NETSTANDARD2_0,NET6_0) - Architektura s minimální vazbou na verzi (
NET48_OR_GREATER,NETSTANDARD2_0_OR_GREATER,NET6_0_OR_GREATER)
Další informace o monikerech cílové architektury a těchto implicitních symbolech preprocesoru najdete v tématu Cílové architektury.
Pokud navíc v projektu zadáte cílovou architekturu specifickou pro operační systém (například net6.0-android), vygenerují se následující symboly preprocesoru:
- Platforma bez verze (
ANDROID,IOS,WINDOWS) - Platforma s verzí (
IOS15_1) - Platforma s minimální vazbou na verzi (
IOS15_1_OR_GREATER)
Další informace o monikerech cílové architektury specifické pro operační systém najdete v sadě TFM specifické pro operační systém.
Pokud vaše cílová architektura naznačuje podporu starších cílových architektur, vygenerují se symboly preprocesoru pro tyto starší architektury. Například net6.0implikuje podporu pro net5.0 a tak dále až dozadu .netcoreapp1.0. Pro každou z těchto cílových architektur se tedy definuje symbol rozhraní s minimální vazbou verze.
DocumentationFile
Tato DocumentationFile vlastnost umožňuje zadat název souboru XML, který obsahuje dokumentaci pro vaši knihovnu. Aby intelliSense fungovala správně s dokumentací, musí být název souboru stejný jako název sestavení a musí být ve stejném adresáři jako sestavení. Pokud tuto vlastnost nezadáte, ale nastavíte GenerateDocumentationFile na true, název souboru dokumentace je výchozí název sestavení, ale s příponou .xml souboru. Z tohoto důvodu je často jednodušší vynechat tuto vlastnost a místo toho použít GenerateDocumentationFile vlastnost .
Pokud zadáte tuto vlastnost, ale nastavíte GenerateDocumentationFile na false, kompilátor negeneruje soubor dokumentace. Pokud zadáte tuto vlastnost a vynecháte GenerateDocumentationFile vlastnost, kompilátor vygeneruje soubor dokumentace.
<PropertyGroup>
<DocumentationFile>path/to/file.xml</DocumentationFile>
</PropertyGroup>
EmbeddedResourceUseDependentUponConvention
Vlastnost EmbeddedResourceUseDependentUponConvention definuje, zda jsou názvy souborů manifestu prostředků generovány z informací o typu ve zdrojových souborech, které jsou umístěny společně se soubory prostředků. Pokud je například form1.resx ve stejné složce jako Form1.cs a EmbeddedResourceUseDependentUponConvention nastaví se na truehodnotu , vygenerovaný soubor .resources převezme jeho název z prvního typu definovaného v Form1.cs. Pokud MyNamespace.Form1 je první typ definovaný v Form1.cs, vygenerovaný název souboru je MyNamespace.Form1.resources.
Note
Pokud LogicalNameje pro ManifestResourceName položku zadána hodnota , DependentUponnebo EmbeddedResource metadata, je vygenerovaný název souboru manifestu pro tento soubor prostředků založený na tomto metadatu.
Ve výchozím nastavení je v novém projektu .NET, který cílí na .NET Core 3.0 nebo novější verzi, tato vlastnost je nastavena na true. Je-li nastavena hodnota false, a ne LogicalName, ManifestResourceNamenebo DependentUpon metadata je určena pro EmbeddedResource položku v souboru projektu, název souboru manifestu zdroje je založen na kořenovém oboru názvů projektu a relativní cesta k souboru .resx . Další informace naleznete v tématu Jak jsou pojmenovány soubory manifestu prostředků.
<PropertyGroup>
<EmbeddedResourceUseDependentUponConvention>true</EmbeddedResourceUseDependentUponConvention>
</PropertyGroup>
EnablePreviewFeatures
Vlastnost EnablePreviewFeatures definuje, zda váš projekt závisí na rozhraních API nebo sestaveních, která jsou zdobena atributem RequiresPreviewFeaturesAttribute . Tento atribut slouží k označení, že rozhraní API nebo sestavení používá funkce, které jsou považovány za verze Preview pro verzi SADY SDK, kterou používáte. Funkce ve verzi Preview se nepodporují a v budoucí verzi se můžou odebrat. Pokud chcete povolit použití funkcí ve verzi Preview, nastavte vlastnost na Truehodnotu .
<PropertyGroup>
<EnablePreviewFeatures>True</EnablePreviewFeatures>
</PropertyGroup>
Pokud projekt obsahuje tuto vlastnost nastavenou na True, do souboru AssemblyInfo.cs se přidá následující atribut na úrovni sestavení:
[assembly: RequiresPreviewFeatures]
Analyzátor varuje, pokud je tento atribut přítomen na závislostech pro projekty, kde EnablePreviewFeatures není nastavena na True.
Autoři knihovny, kteří mají v úmyslu dodávat sestavení preview, by tuto vlastnost měli nastavit na True. Pokud se sestavení musí dodávat se kombinací rozhraní API verze Preview a jiných než Preview, projděte si část GenerateRequiresPreviewFeaturesAttribute níže.
EnableWindowsTargeting
EnableWindowsTargeting Nastavte vlastnost pro true vytváření aplikací pro Windows (například model Windows Forms nebo aplikací Windows Presentation Foundation) na platformě mimo Windows. Pokud tuto vlastnost truenenastavíte, zobrazí se upozornění na sestavení NETSDK1100. K této chybě dochází, protože cílení a balíčky runtime se automaticky nestáhnou na platformách, které nejsou podporované. Nastavením této vlastnosti se tyto balíčky stáhnou při křížovému cílení.
Note
Tato vlastnost se v současné době doporučuje povolit vývoj na platformách mimo Windows. Jakmile je ale aplikace připravená k vydání, měla by být vytvořená ve Windows. Při sestavování na platformě jiné než Windows nemusí být výstup stejný jako při sestavování ve Windows. Zejména spustitelný soubor není označený jako aplikace pro Windows (což znamená, že vždy spustí okno konzoly) a nebude mít vloženou ikonu.
<PropertyGroup>
<EnableWindowsTargeting>true</EnableWindowsTargeting>
</PropertyGroup>
GenerateDocumentationFile
Vlastnost GenerateDocumentationFile určuje, zda kompilátor generuje soubor dokumentace XML pro vaši knihovnu. Pokud tuto vlastnost true nastavíte a nezadáte název souboru prostřednictvím vlastnosti DocumentationFile, vygenerovaný soubor XML se umístí do stejného výstupního adresáře jako sestavení a má stejný název souboru (ale s příponou .xml ).
<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
Další informace o generování dokumentace z komentářů ke kódu najdete v dokumentačních komentářích XML (C#), dokumentování kódu pomocí XML (Visual Basic) nebo dokumentování kódu pomocí XML (F#).
GenerateRequiresPreviewFeaturesAttribute
Vlastnost GenerateRequiresPreviewFeaturesAttribute úzce souvisí s EnablePreviewFeatures vlastnost. Pokud vaše knihovna používá funkce preview, ale nechcete, aby bylo celé sestavení označené atributem RequiresPreviewFeaturesAttribute , což by vyžadovalo, aby uživatelé povolili funkce preview, nastavte tuto vlastnost na False.
<PropertyGroup>
<EnablePreviewFeatures>True</EnablePreviewFeatures>
<GenerateRequiresPreviewFeaturesAttribute>False</GenerateRequiresPreviewFeaturesAttribute>
</PropertyGroup>
Important
Pokud vlastnost nastavíte GenerateRequiresPreviewFeaturesAttributeFalsena , musíte být jistí, že ozdobí všechna veřejná rozhraní API, která spoléhají na funkce ve verzi Preview s RequiresPreviewFeaturesAttribute.
OptimizeImplicitlyTriggeredBuild
Pokud chcete zrychlit čas sestavení, sestavení, která jsou implicitně aktivována sadou Visual Studio, přeskočí analýzu kódu, včetně analýzy s možnou hodnotou null. Visual Studio například aktivuje implicitní sestavení při spouštění testů. Implicitní sestavení jsou však optimalizována pouze v případě, že TreatWarningsAsErrors není true. Pokud jste TreatWarningsAsErrors nastavili true , ale přesto chcete, aby se implicitně aktivované buildy optimalizovaly, můžete nastavit OptimizeImplicitlyTriggeredBuild na Truehodnotu . Pokud chcete vypnout optimalizaci sestavení pro implicitně aktivované buildy, nastavte na OptimizeImplicitlyTriggeredBuildhodnotu False .
<PropertyGroup>
<OptimizeImplicitlyTriggeredBuild>True</OptimizeImplicitlyTriggeredBuild>
</PropertyGroup>
DisableRuntimeMarshalling
Tato DisableRuntimeMarshalling vlastnost umožňuje určit, že chcete zakázat podporu zařazování za běhu pro váš projekt. Pokud je tato vlastnost nastavena na true, pak DisableRuntimeMarshallingAttribute se přidá do sestavení a všechny P/Invokes nebo delegované vzájemné spojení budou dodržovat pravidla pro zakázané zařazování modulu runtime.
<PropertyGroup>
<DisableRuntimeMarshalling>True</DisableRuntimeMarshalling>
</PropertyGroup>
BuildWithNetFrameworkHostedCompiler
BuildWithNetFrameworkHostedCompiler=true Určení je ekvivalentem RoslynCompilerType=FrameworkPackagezadávání . Další informace naleznete v tématu RoslynCompilerType.
Určení BuildWithNetFrameworkHostedCompiler=false zajistí, že k automatickému RoslynCompilerType=FrameworkPackage přihlášení nedojde.
Pokud RoslynCompilerType je zadán explicitně, BuildWithNetFrameworkHostedCompiler nemá žádný vliv.
RoslynCompilerType
Vlastnost RoslynCompilerType řídí verzi kompilátoru jazyka C# nebo Visual Basic. Rozpoznávají se následující hodnoty:
-
Core: Použijte kompilátor, který je součástí sady .NET SDK. Toto je výchozí hodnota od .NET 10, i když používáte .NET Framework MSBuild. -
Framework: Použijte kompilátor, který je součástí rozhraní .NET Framework MSBuild. -
FrameworkPackage: Při použití rozhraní .NET Framework MSBuild stáhněte a použijte balíček s kompilátorem rozhraní .NET Framework, který odpovídá verzi sady .NET SDK.
Výchozí vlastnosti zahrnutí položek
Následující vlastnosti nástroje MSBuild jsou popsány v této části:
- DefaultItemExcludesInProjectFolder
- DefaultItemExcludes
- EnableDefaultCompileItems
- EnableDefaultEmbeddedResourceItems
- EnableDefaultItems
- EnableDefaultNoneItems
Další informace naleznete v tématu Výchozí zahrnutí a vyloučení.
DefaultItemExcludes
DefaultItemExcludes Pomocí vlastnosti můžete definovat vzory globů pro soubory a složky, které by měly být vyloučeny z zahrnutí, vyloučení a odebrání globů. Ve výchozím nastavení jsou složky ./bin a ./obj vyloučené ze vzorů globu.
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);**/*.myextension</DefaultItemExcludes>
</PropertyGroup>
DefaultItemExcludesInProjectFolder
DefaultItemExcludesInProjectFolder Pomocí vlastnosti můžete definovat vzory globu pro soubory a složky ve složce projektu, které by měly být vyloučeny z zahrnutí, vyloučení a odebrání globů. Ve výchozím nastavení jsou složky začínající tečkou (.například .git a .vs) vyloučené ze vzorů globu.
Tato vlastnost je velmi podobná DefaultItemExcludes vlastnosti s tím rozdílem, že bere v úvahu pouze soubory a složky ve složce projektu. Pokud by vzor globu neúmyslně odpovídal položkám mimo složku projektu s relativní cestou, použijte DefaultItemExcludesInProjectFolder místo vlastnosti vlastnost DefaultItemExcludes .
<PropertyGroup>
<DefaultItemExcludesInProjectFolder>$(DefaultItemExcludesInProjectFolder);**/myprefix*/**</DefaultItemExcludesInProjectFolder>
</PropertyGroup>
EnableDefaultItems
Vlastnost EnableDefaultItems určuje, zda jsou do projektu implicitně zahrnuty položky kompilace, vložené položky zdrojů a None položky. Výchozí hodnota je true.
EnableDefaultItems Nastavte vlastnost tak, aby false se zakázalo zahrnutí všech implicitních souborů.
<PropertyGroup>
<EnableDefaultItems>false</EnableDefaultItems>
</PropertyGroup>
EnableDefaultCompileItems
Vlastnost EnableDefaultCompileItems řídí, zda jsou kompilované položky implicitně zahrnuty do projektu. Výchozí hodnota je true.
EnableDefaultCompileItems Nastavte vlastnost tak, aby false zakázala implicitní zahrnutí *.cs a jiných souborů s příponou jazyka.
<PropertyGroup>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
</PropertyGroup>
EnableDefaultEmbeddedResourceItems
Vlastnost EnableDefaultEmbeddedResourceItems určuje, zda jsou vložené položky zdrojů implicitně zahrnuty do projektu. Výchozí hodnota je true.
EnableDefaultEmbeddedResourceItems Nastavte vlastnost tak, aby false zakázala implicitní zahrnutí vložených souborů prostředků.
<PropertyGroup>
<EnableDefaultEmbeddedResourceItems>false</EnableDefaultEmbeddedResourceItems>
</PropertyGroup>
EnableDefaultNoneItems
Vlastnost EnableDefaultNoneItems řídí, zda None položky (soubory, které nemají žádnou roli v procesu sestavení) jsou implicitně zahrnuty do projektu. Výchozí hodnota je true.
EnableDefaultNoneItems Nastavte vlastnost tak, aby false zakázala implicitní zahrnutí None položek.
<PropertyGroup>
<EnableDefaultNoneItems>false</EnableDefaultNoneItems>
</PropertyGroup>
Vlastnosti analýzy kódu
Následující vlastnosti nástroje MSBuild jsou popsány v této části:
- AnalysisLevel
- Kategorie AnalysisLevel<>
- AnalysisMode
- Kategorie AnalysisMode<>
- CodeAnalysisTreatWarningsAsErrors
- EnableNETAnalyzers
- EnforceCodeStyleInBuild
- _SkipUpgradeNetAnalyzersNuGetWarning
AnalysisLevel
Tato AnalysisLevel vlastnost umožňuje zadat sadu analyzátorů kódu, které se mají spustit podle verze .NET. Každá verze .NET má sadu pravidel analýzy kódu. Z této sady jsou ve výchozím nastavení povolená pravidla pro danou verzi, která analyzují váš kód. Pokud například upgradujete z .NET 8 na .NET 9, ale nechcete, aby se změnila výchozí sada pravidel analýzy kódu, nastavte AnalysisLevel na 8.
<PropertyGroup>
<AnalysisLevel>8</AnalysisLevel>
</PropertyGroup>
Volitelně můžete zadat složenou hodnotu pro tuto vlastnost, která také určuje, jak agresivně povolit pravidla. Složené hodnoty mají tvar <version>-<mode>, kde <mode> hodnota je jednou z hodnot AnalysisMode . Následující příklad používá preview verzi analyzátorů kódu a umožňuje recommended sadu pravidel.
<PropertyGroup>
<AnalysisLevel>preview-recommended</AnalysisLevel>
</PropertyGroup>
Výchozí hodnota:
- Pokud váš projekt cílí na .NET 5 nebo novější nebo pokud jste přidali vlastnost AnalysisMode , výchozí hodnota je
latest. - Jinak se tato vlastnost vynechá, pokud ji explicitně nepřidáte do souboru projektu.
Následující tabulka uvádí hodnoty, které můžete zadat.
| Value | Meaning |
|---|---|
latest |
Používají se nejnovější analyzátory kódu, které byly vydány. Tato možnost je výchozí. |
latest-<mode> |
Používají se nejnovější analyzátory kódu, které byly vydány. Hodnota <mode> určuje, která pravidla jsou povolena. |
preview |
Používají se nejnovější analyzátory kódu, i když jsou ve verzi Preview. |
preview-<mode> |
Používají se nejnovější analyzátory kódu, i když jsou ve verzi Preview. Hodnota <mode> určuje, která pravidla jsou povolena. |
10.0 |
Používá se sada pravidel, která byla k dispozici pro verzi .NET 10, i když jsou k dispozici novější pravidla. |
10.0-<mode> |
Používá se sada pravidel, která byla k dispozici pro verzi .NET 10, i když jsou k dispozici novější pravidla. Hodnota <mode> určuje, která pravidla jsou povolena. |
10 |
Používá se sada pravidel, která byla k dispozici pro verzi .NET 10, i když jsou k dispozici novější pravidla. |
10-<mode> |
Používá se sada pravidel, která byla k dispozici pro verzi .NET 10, i když jsou k dispozici novější pravidla. Hodnota <mode> určuje, která pravidla jsou povolena. |
9.0 |
Používá se sada pravidel, která byla k dispozici pro verzi .NET 9, i když jsou k dispozici novější pravidla. |
9.0-<mode> |
Používá se sada pravidel, která byla k dispozici pro verzi .NET 9, i když jsou k dispozici novější pravidla. Hodnota <mode> určuje, která pravidla jsou povolena. |
9 |
Používá se sada pravidel, která byla k dispozici pro verzi .NET 9, i když jsou k dispozici novější pravidla. |
9-<mode> |
Používá se sada pravidel, která byla k dispozici pro verzi .NET 9, i když jsou k dispozici novější pravidla. Hodnota <mode> určuje, která pravidla jsou povolena. |
8.0 |
Používá se sada pravidel, která byla k dispozici pro verzi .NET 8, i když jsou k dispozici novější pravidla. |
8.0-<mode> |
Používá se sada pravidel, která byla k dispozici pro verzi .NET 8, i když jsou k dispozici novější pravidla. Hodnota <mode> určuje, která pravidla jsou povolena. |
8 |
Používá se sada pravidel, která byla k dispozici pro verzi .NET 8, i když jsou k dispozici novější pravidla. |
8-<mode> |
Používá se sada pravidel, která byla k dispozici pro verzi .NET 8, i když jsou k dispozici novější pravidla. Hodnota <mode> určuje, která pravidla jsou povolena. |
Note
- Pokud nastavíte EnforceCodeStyleInBuild
true, tato vlastnost ovlivňuje pravidla stylu kódu (IDEXXXX) (kromě pravidel kvality kódu). - Pokud nastavíte složenou hodnotu
AnalysisLevel, nemusíte zadávat AnalysisMode. Nicméně, pokud ano,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. Další informace naleznete v tématu Povolení analýzy kódu ve starších projektech.
Kategorie AnalysisLevel<>
Tato vlastnost je stejná jako AnalysisLevel s tím rozdílem, že se vztahuje pouze na konkrétní kategorii pravidel analýzy kódu. Tato vlastnost umožňuje použít jinou verzi analyzátorů kódu pro určitou kategorii nebo povolit nebo zakázat pravidla na jiné úrovni než ostatní kategorie pravidel. Pokud tuto vlastnost vynecháte pro určitou kategorii pravidel, výchozí hodnota AnalysisLevel . Dostupné hodnoty jsou stejné jako pro AnalysisLevel.
<PropertyGroup>
<AnalysisLevelSecurity>preview</AnalysisLevelSecurity>
</PropertyGroup>
<PropertyGroup>
<AnalysisLevelSecurity>preview-recommended</AnalysisLevelSecurity>
</PropertyGroup>
Následující tabulka uvádí název vlastnosti pro každou kategorii pravidel.
| Název vlastnosti | Kategorie pravidla |
|---|---|
<AnalysisLevelDesign> |
Pravidla návrhu |
<AnalysisLevelDocumentation> |
Pravidla dokumentace |
<AnalysisLevelGlobalization> |
Pravidla globalizace |
<AnalysisLevelInteroperability> |
Pravidla přenositelnosti a interoperability |
<AnalysisLevelMaintainability> |
Pravidla udržovatelnosti |
<AnalysisLevelNaming> |
pravidla pojmenování |
<AnalysisLevelPerformance> |
Pravidla výkonu |
<AnalysisLevelSingleFile> |
Pravidla jednosouborové aplikace |
<AnalysisLevelReliability> |
Pravidla spolehlivosti |
<AnalysisLevelSecurity> |
Pravidla zabezpečení |
<AnalysisLevelStyle> |
Pravidla stylu kódu (IDEXXXX) |
<AnalysisLevelUsage> |
Pravidla použití |
AnalysisMode
Sada .NET SDK se dodává se všemi pravidly pro zvýšení kvality kódu certifikační autority. Ve výchozím nastavení jsou v každé vydané verzi .NET povolená pouze některá pravidla jako upozornění sestavení. Tato AnalysisMode vlastnost umožňuje přizpůsobit sadu pravidel, která jsou ve výchozím nastavení povolená. Můžete buď přepnout do agresivnějšího režimu analýzy, kde se můžete odhlásit z pravidel jednotlivě, nebo do konzervativnějšího režimu analýzy, kde se můžete přihlásit ke konkrétním pravidlům. Pokud například chcete povolit všechna pravidla jako upozornění sestavení, nastavte hodnotu na Allhodnotu .
<PropertyGroup>
<AnalysisMode>All</AnalysisMode>
</PropertyGroup>
V následující tabulce jsou uvedeny dostupné hodnoty možností. Jsou uvedené v rostoucím pořadí počtu povolených pravidel.
| Value | Description |
|---|---|
None |
Všechna pravidla jsou zakázaná. Můžete selektivně vyjádřit výslovný souhlas s jednotlivými pravidly, která je povolí. |
Default |
Výchozí režim, kdy jsou určitá pravidla povolená jako upozornění sestavení, jsou určitá pravidla povolená jako návrhy integrovaného vývojového prostředí sady Visual Studio a zbytek je zakázaný. |
Minimum |
Agresivnější režim než Default režim. Některé návrhy, které důrazně doporučujeme pro vynucování sestavení, jsou povolené jako upozornění sestavení. Pokud chcete zjistit, která pravidla zahrnují, zkontrolujte soubor %ProgramFiles%/dotnet/sdk/[version]/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_[level]_minimum.globalconfig. (Pro .NET 7 a starší verze je přípona souboru .editorconfig.) |
Recommended |
Agresivnější režim než Minimum režim, kdy je jako upozornění sestavení povoleno více pravidel. Pokud chcete zjistit, která pravidla zahrnují, zkontrolujte %ProgramFiles%/dotnet/sdk/[version]/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_[level]_recommended.globalconfig souboru. (Pro .NET 7 a starší verze je přípona souboru .editorconfig.) |
All |
Všechna pravidla jsou povolená jako upozornění* sestavení. Můžete selektivně vyjádřit výslovný nesouhlas s individuálními pravidly a zakázat je. * Následující pravidla nejsou povolena nastavením AnalysisModeAll na : AnalysisLevellatest-allCA1017, CA1045, CA1005, CA1014, CA1060, CA1021 a pravidly analyzátoru metrik kódu (CA1501, CA1502, CA1505, CA1506 a CA1509). Tato starší pravidla můžou být v budoucí verzi zastaralá. Přesto je ale můžete povolit jednotlivě pomocí dotnet_diagnostic.CAxxxx.severity = <severity> položky. |
Note
- Pokud nastavíte EnforceCodeStyleInBuild
true, tato vlastnost ovlivňuje pravidla stylu kódu (IDEXXXX) (kromě pravidel kvality kódu). - Pokud například pro AnalysisLevel, můžete tuto vlastnost zcela vynechat. Pokud však zadáte obě vlastnosti,
AnalysisLevelmá přednost předAnalysisMode.
Kategorie AnalysisMode<>
Tato vlastnost je stejná jako AnalysisMode, s tím rozdílem, že se vztahuje pouze na konkrétní kategorii pravidel analýzy kódu. Tato vlastnost umožňuje povolit nebo zakázat pravidla na jiné úrovni než ostatní kategorie pravidel. Pokud tuto vlastnost vynecháte pro určitou kategorii pravidel, výchozí hodnota AnalysisMode . Dostupné hodnoty jsou stejné jako pro AnalysisMode.
<PropertyGroup>
<AnalysisModeSecurity>All</AnalysisModeSecurity>
</PropertyGroup>
Následující tabulka uvádí název vlastnosti pro každou kategorii pravidel.
| Název vlastnosti | Kategorie pravidla |
|---|---|
<AnalysisModeDesign> |
Pravidla návrhu |
<AnalysisModeDocumentation> |
Pravidla dokumentace |
<AnalysisModeGlobalization> |
Pravidla globalizace |
<AnalysisModeInteroperability> |
Pravidla přenositelnosti a interoperability |
<AnalysisModeMaintainability> |
Pravidla udržovatelnosti |
<AnalysisModeNaming> |
pravidla pojmenování |
<AnalysisModePerformance> |
Pravidla výkonu |
<AnalysisModeSingleFile> |
Pravidla jednosouborové aplikace |
<AnalysisModeReliability> |
Pravidla spolehlivosti |
<AnalysisModeSecurity> |
Pravidla zabezpečení |
<AnalysisModeStyle> |
Pravidla stylu kódu (IDEXXXX) |
<AnalysisModeUsage> |
Pravidla použití |
CodeAnalysisTreatWarningsAsErrors
Tato CodeAnalysisTreatWarningsAsErrors vlastnost umožňuje nakonfigurovat, jestli se má upozornění analýzy kvality kódu (CAxxxx) považovat za upozornění a přerušit sestavení. Pokud při sestavování projektů použijete -warnaserror příznak, upozornění analýzy kvality kódu .NET se také považují za chyby. Pokud nechcete, aby se upozornění analýzy kvality kódu považovala za chyby, můžete nastavit CodeAnalysisTreatWarningsAsErrors vlastnost MSBuild na false soubor projektu.
<PropertyGroup>
<CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors>
</PropertyGroup>
EnableNETAnalyzers
Analýza kvality kódu .NET je ve výchozím nastavení povolená pro projekty, které cílí na .NET 5 nebo novější verzi. Pokud vyvíjíte pomocí sady .NET 5+ SDK, můžete povolit analýzu kódu .NET pro projekty ve stylu sady SDK, které cílí na starší verze .NET, nastavením EnableNETAnalyzers vlastnosti na true. Chcete-li zakázat analýzu kódu v libovolném projektu, nastavte tuto vlastnost na false.
<PropertyGroup>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
</PropertyGroup>
Note
Tato vlastnost se vztahuje konkrétně na integrované analyzátory v sadě .NET 5+ SDK. Nemělo by se používat při instalaci balíčku analýzy kódu NuGet.
EnforceCodeStyleInBuild
Analýza stylu kódu .NET je ve výchozím nastavení zakázaná při sestavení pro všechny projekty .NET. Analýzu stylu kódu pro projekty .NET můžete povolit nastavením EnforceCodeStyleInBuild vlastnosti na true.
<PropertyGroup>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
</PropertyGroup>
Všechna pravidla stylu kódu, která jsou nakonfigurovaná tak, aby se zobrazovala upozornění nebo chyby, se spustí při porušeních sestavení a hlášení.
_SkipUpgradeNetAnalyzersNuGetWarning
Tato _SkipUpgradeNetAnalyzersNuGetWarning vlastnost umožňuje nakonfigurovat, jestli se zobrazí upozornění, pokud používáte analyzátory kódu z balíčku NuGet, který je zastaralý v porovnání s analyzátory kódu v nejnovější sadě .NET SDK. Upozornění vypadá nějak takto:
Sada .NET SDK obsahuje novější analyzátory s verzí 6.0.0, než jakou verzi 5.0.3 poskytuje balíček Microsoft.CodeAnalysis.NetAnalyzers. Aktualizujte nebo odeberte tento odkaz na balíček.
Pokud chcete toto upozornění odebrat a dál používat verzi analyzátorů kódu v balíčku NuGet, nastavte _SkipUpgradeNetAnalyzersNuGetWarning v true souboru projektu.
<PropertyGroup>
<_SkipUpgradeNetAnalyzersNuGetWarning>true</_SkipUpgradeNetAnalyzersNuGetWarning>
</PropertyGroup>
Vlastnosti konfigurace modulu runtime
Určité chování modulu runtime můžete nakonfigurovat zadáním vlastností NÁSTROJE MSBuild v souboru projektu aplikace. Informace o dalších způsobech konfigurace chování modulu runtime naleznete v tématu Nastavení konfigurace modulu runtime.
- AutoreleasePoolSupport
- ConcurrentGarbageCollection
- InvariantGlobalization
- PredefinedCulturesOnly
- RetainVMGarbageCollection
- ServerGarbageCollection
- ThreadPoolMaxThreads
- ThreadPoolMinThreads
- TieredCompilation
- TieredCompilationQuickJit
- TieredCompilationQuickJitForLoops
- TieredPGO
- UseWindowsThreadPool
AutoreleasePoolSupport
Tato AutoreleasePoolSupport vlastnost konfiguruje, zda každé spravované vlákno obdrží implicitní NSAutoreleasePool při spuštění na podporované platformě macOS. Další informace najdete v tématu AutoreleasePool o spravovaných vláknech.
<PropertyGroup>
<AutoreleasePoolSupport>true</AutoreleasePoolSupport>
</PropertyGroup>
ConcurrentGarbageCollection
Vlastnost ConcurrentGarbageCollection konfiguruje, zda je povoleno uvolňování paměti na pozadí (souběžné). Nastavte hodnotu tak, aby false se zakázalo uvolňování paměti na pozadí. Další informace naleznete v tématu Background GC.
<PropertyGroup>
<ConcurrentGarbageCollection>false</ConcurrentGarbageCollection>
</PropertyGroup>
InvariantGlobalization
Tato InvariantGlobalization vlastnost konfiguruje, jestli aplikace běží v režimu globalizace-invariant , což znamená, že nemá přístup k datům specifickým pro jazykovou verzi. Nastavte hodnotu tak, aby true se spustila v režimu globalizace invariant. Další informace naleznete v tématu Invariantní režim.
<PropertyGroup>
<InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>
PredefinedCulturesOnly
V .NET 6 a novějších verzích vlastnost konfiguruje, PredefinedCulturesOnly zda aplikace mohou vytvářet jiné jazykové verze než invariantní jazykovou verzi, když je povolen režim globalizace invariant. Výchozí hodnota je true. Nastavte hodnotu tak, aby false umožňovala vytváření jakékoli nové jazykové verze v globalizačním režimu invariantního režimu.
<PropertyGroup>
<PredefinedCulturesOnly>false</PredefinedCulturesOnly>
</PropertyGroup>
Další informace naleznete v tématu Vytvoření jazykové verze a mapování případů v režimu globalizace invariant.
RetainVMGarbageCollection
Vlastnost RetainVMGarbageCollection nakonfiguruje systém uvolňování paměti tak, aby se odstraněné segmenty paměti umístily do pohotovostního seznamu pro budoucí použití nebo je uvolněte. Nastavení hodnoty tak, aby true systému uvolňování paměti řeklo, že se segmenty umístí do pohotovostního seznamu. Další informace najdete v tématu Zachování virtuálního počítače.
<PropertyGroup>
<RetainVMGarbageCollection>true</RetainVMGarbageCollection>
</PropertyGroup>
ServerGarbageCollection
Vlastnost ServerGarbageCollection konfiguruje, zda aplikace používá uvolňování paměti pracovní stanice nebo uvolňování paměti serveru. Nastavte hodnotu tak, aby true používala uvolňování paměti serveru. Další informace naleznete v tématu Pracovní stanice a server.
<PropertyGroup>
<ServerGarbageCollection>true</ServerGarbageCollection>
</PropertyGroup>
ThreadPoolMaxThreads
Vlastnost ThreadPoolMaxThreads nakonfiguruje maximální počet vláken pro fond pracovních vláken. Další informace naleznete v tématu Maximální počet vláken.
<PropertyGroup>
<ThreadPoolMaxThreads>20</ThreadPoolMaxThreads>
</PropertyGroup>
ThreadPoolMinThreads
Vlastnost ThreadPoolMinThreads nakonfiguruje minimální počet vláken pro fond pracovních vláken. Další informace naleznete v tématu Minimální počet vláken.
<PropertyGroup>
<ThreadPoolMinThreads>4</ThreadPoolMinThreads>
</PropertyGroup>
TieredCompilation
Vlastnost TieredCompilation konfiguruje, zda kompilátor JIT (just-in-time) používá vrstvené kompilace. Nastavte hodnotu na false zakázání vrstvené kompilace. Další informace naleznete v tématu Vrstvené kompilace.
<PropertyGroup>
<TieredCompilation>false</TieredCompilation>
</PropertyGroup>
TieredCompilationQuickJit
Tato TieredCompilationQuickJit vlastnost konfiguruje, zda kompilátor JIT používá rychlé JIT. Nastavte hodnotu na zakázání false rychlého JIT. Další informace najdete v tématu Rychlá JIT.
<PropertyGroup>
<TieredCompilationQuickJit>false</TieredCompilationQuickJit>
</PropertyGroup>
TieredCompilationQuickJitForLoops
Vlastnost TieredCompilationQuickJitForLoops konfiguruje, zda kompilátor JIT používá rychlé JIT u metod, které obsahují smyčky. Nastavte hodnotu na true povolení rychlého JIT u metod obsahujících smyčky. Další informace najdete v tématu Rychlá JIT smyčky.
<PropertyGroup>
<TieredCompilationQuickJitForLoops>true</TieredCompilationQuickJitForLoops>
</PropertyGroup>
TieredPGO
Vlastnost TieredPGO určuje, jestli je povolená dynamická nebo vrstvovaná optimalizace s asistencí profilu (PGO). Nastavte hodnotu na true povolení vrstveného PGO. Další informace najdete v tématu Optimalizace s asistencí profilu.
<PropertyGroup>
<TieredPGO>true</TieredPGO>
</PropertyGroup>
UseWindowsThreadPool
Tato UseWindowsThreadPool vlastnost konfiguruje, zda je správa vláken fondu vláken delegována do fondu vláken Systému Windows (pouze Windows). Výchozí hodnota je false, v takovém případě se používá fond vláken .NET. Další informace naleznete v tématu Fond vláken systému Windows.
<PropertyGroup>
<UseWindowsThreadPool>true</UseWindowsThreadPool>
</PropertyGroup>
Vlastnosti související s odkazy
Následující vlastnosti nástroje MSBuild jsou popsány v této části:
- AssetTargetFallback
- DisableImplicitFrameworkReferences
- DisableTransitiveFrameworkReferenceDownloads
- DisableTransitiveProjectReferences
- ManagePackageVersionsCentrally
- Vlastnosti související s obnovením
- UseMauiEssentials
- ValidateExecutableReferencesMatchSelfContained
AssetTargetFallback
Tato AssetTargetFallback vlastnost umožňuje zadat další kompatibilní verze rozhraní pro odkazy na projekty a balíčky NuGet. Pokud například zadáte závislost balíčku pomocí balíčku, PackageReference ale tento balíček neobsahuje prostředky, které jsou kompatibilní s vašimi projekty TargetFramework, AssetTargetFallback vlastnost přichází do hry. Kompatibilita odkazovaného balíčku se znovu zkontroluje pomocí každé cílové architektury, která je zadaná v AssetTargetFallback. Tato vlastnost nahrazuje zastaralou vlastnost PackageTargetFallback.
Vlastnost můžete nastavit AssetTargetFallback na jednu nebo více cílových verzí rozhraní.
<PropertyGroup>
<AssetTargetFallback>net461</AssetTargetFallback>
</PropertyGroup>
DisableImplicitFrameworkReferences
Vlastnost DisableImplicitFrameworkReferences řídí implicitní FrameworkReference položky při cílení na .NET Core 3.0 a novější verze. Při cílení na .NET Core 2.1 nebo .NET Standard 2.0 a starších verzí řídí implicitní položky PackageReference na balíčky v metabalíku. (Metabalíč je balíček založený na rozhraní, který se skládá pouze ze závislostí na jiných balíčcích.) Tato vlastnost také řídí implicitní odkazy, například System a System.Core při cílení na rozhraní .NET Framework.
Nastavte tuto vlastnost na true zakázat implicitní FrameworkReference nebo PackageReference položky. Pokud tuto vlastnost nastavíte na true, můžete přidat explicitní odkazy pouze na architektury nebo balíčky, které potřebujete.
<PropertyGroup>
<DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
</PropertyGroup>
DisableTransitiveFrameworkReferenceDownloads
DisableTransitiveFrameworkReferenceDownloads Nastavte vlastnost tak, aby true se zabránilo stahování extra runtime a cílení balíčků, na které váš projekt přímo neodkazuje.
<PropertyGroup>
<DisableTransitiveFrameworkReferenceDownloads>true</DisableTransitiveFrameworkReferenceDownloads>
</PropertyGroup>
DisableTransitiveProjectReferences
Vlastnost DisableTransitiveProjectReferences řídí implicitní odkazy na projekt. Nastavte tuto vlastnost tak, aby true se zakázaly implicitní ProjectReference položky. Zakázáním implicitních odkazů na projekt vznikne nepřenosné chování podobné staršímu systému projektů.
Pokud je truetato vlastnost , má podobný účinek jako nastavení PrivateAssets="All" na všech závislostech závislého projektu.
Pokud tuto vlastnost nastavíte na true, můžete přidat explicitní odkazy pouze na projekty, které potřebujete.
<PropertyGroup>
<DisableTransitiveProjectReferences>true</DisableTransitiveProjectReferences>
</PropertyGroup>
ManagePackageVersionsCentrally
Vlastnost ManagePackageVersionsCentrally byla zavedena v .NET 7. Nastavením souboru trueDirectory.Packages.props v kořenovém adresáři úložiště můžete spravovat běžné závislosti v projektech z jednoho umístění. Přidejte verze pro běžné závislosti balíčků pomocí PackageVersion položek v souboru Directory.Packages.props . V jednotlivých souborech projektu pak můžete vynechat Version atributy ze všech PackageReference položek, které odkazují na centrálně spravované balíčky.
Příklad souboru Directory.Packages.props :
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
...
<ItemGroup>
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="9.0.0" />
</ItemGroup>
Soubor jednotlivého projektu:
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration" />
</ItemGroup>
Další informace najdete v tématu správa centrálních balíčků (CPM).
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í, například RestorePackagesPath a RestoreIgnoreFailedSources. Další informace otěchtoch
<PropertyGroup>
<RestoreIgnoreFailedSource>true</RestoreIgnoreFailedSource>
</PropertyGroup>
UseMauiEssentials
UseMauiEssentials Nastavte vlastnost tak, aby true deklarovat explicitní odkaz na projekt nebo balíček, který závisí na MAUI Essentials. Toto nastavení zajistí, že váš projekt načítá správný známý odkaz na architekturu MAUI Essentials. Pokud váš projekt odkazuje na projekt, který používá MAUI Essentials, ale tuto vlastnost nenastavíte na , může dojít k trueupozornění NETSDK1186na sestavení .
<PropertyGroup>
<UseMauiEssentials>true</UseMauiEssentials>
</PropertyGroup>
ValidateExecutableReferencesMatchSelfContained
Vlastnost ValidateExecutableReferencesMatchSelfContained lze použít k zakázání chyb souvisejících se spustitelnými odkazy na projekt. Pokud .NET zjistí, že samostatný spustitelný projekt odkazuje na spustitelný projekt závislý na rozhraní nebo naopak, generuje chyby NETSDK1150 a NETSDK1151. Chcete-li těmto chybám zabránit, pokud je odkaz úmyslný, nastavte ValidateExecutableReferencesMatchSelfContained vlastnost na false.
<PropertyGroup>
<ValidateExecutableReferencesMatchSelfContained>false</ValidateExecutableReferencesMatchSelfContained>
</PropertyGroup>
WindowsSdkPackageVersion
Vlastnost WindowsSdkPackageVersion lze použít k přepsání verze balíčku cílení sady Windows SDK. Tato vlastnost byla zavedena v .NET 5 a nahrazuje použití FrameworkReference položky pro tento účel.
<PropertyGroup>
<WindowsSdkPackageVersion>10.0.19041.18</WindowsSdkPackageVersion>
</PropertyGroup>
Note
Nedoporučujeme přepisovat verzi sady Windows SDK, protože balíčky cílení sady Windows SDK jsou součástí sady .NET 5+ SDK. Pokud chcete odkazovat na nejnovější balíček sady Windows SDK, aktualizujte svou verzi sady .NET SDK. Tato vlastnost by se měla používat jen ve výjimečných případech, jako je použití balíčků preview nebo přepsání verze C#/WinRT.
Vlastnosti související s 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 jeho spuštění.
<PropertyGroup>
<RunArguments>-mode dryrun</RunArguments>
</PropertyGroup>
Tip
Další argumenty, které se mají předat do aplikace, můžete zadat pomocí -- možnosti pro dotnet run.
RunWorkingDirectory
Vlastnost RunWorkingDirectory definuje pracovní adresář pro proces aplikace, ve které se má spustit. Může to být absolutní cesta nebo cesta relativní k adresáři projektu. Pokud nezadáte adresář, OutDir použije se jako pracovní adresář.
<PropertyGroup>
<RunWorkingDirectory>c:\temp</RunWorkingDirectory>
</PropertyGroup>
Vlastnosti související se sadou SDK
Následující vlastnosti nástroje MSBuild jsou popsány v této části:
SdkAnalysisLevel
Vlastnost představená v .NET 9 SdkAnalysisLevel se dá použít ke konfiguraci striktního nástroje sady SDK. Pomáhá spravovat úrovně upozornění sady SDK v situacích, kdy možná nebudete moct připnout sady SDK prostřednictvím global.json nebo jiných prostředků. Pomocí této vlastnosti můžete sdělit novější sadě SDK, aby se chovala stejně jako starší sada SDK, pokud jde o konkrétní nástroj nebo funkci, aniž byste museli instalovat starší sadu SDK.
Povolené hodnoty této vlastnosti jsou pásma funkcí sady SDK, například 8.0.100 a 8.0.400. Výchozí hodnota je v pásmu funkcí sady SDK spuštěné sady SDK. Například pro sadu SDK 9.0.102 je hodnota 9.0.100. (Informace o tom, jak je sada .NET SDK verze, najdete v tématu Jak je .NET verze.)
<PropertyGroup>
<SdkAnalysisLevel>8.0.400</SdkAnalysisLevel>
</PropertyGroup>
Další informace naleznete v tématu Sdk Analysis Level Property and Usage.
Následující tabulka shrnuje diagnostiku a chování ovlivněné SDKAnalysisLevel.
| SDKAnalysisLevel | Description | Aktualizované chování |
|---|---|---|
| 9.0.100 | Obnovení diagnostiky zdrojů HTTP | Vygeneruje místo upozornění NU1803 chybu NU1302. |
| 10.0.100 | Vyřazení balíčku Obnovit | Funkce PrunePackageReference je ve výchozím nastavení povolená pro projekty, které cílí na .NET 8 nebo .NET Standard 2.0+. |
| 10.0.100 | Překladač Obnovit se zamykacími soubory | Používá vylepšený překladač grafů závislostí .NET 9 místo starší verze překladače grafu závislostí (.NET 8 SDK a starší). |
| 10.0.100 | Chování Obnovit pro PackageReference bez verze | Vygeneruje místo upozornění NU1603 chybu NU1015. |
Note
Chování povolené SdkAnalysisLevel hodnotou stárne (vyprší) po třech hlavních verzích. Například verze 11.0.100 respektuje pouze hodnoty nižší než 8.0.100. Ve verzi 12.0.100 nebudou funkce, které by v předchozích verzích mohly být zakázány nastavením SdkAnalysisLevel hodnoty 8.0.100.
Vlastnosti související s platformou Microsoft.Testing.Platform
Následující vlastnosti nástroje MSBuild jsou popsány v této části:
- IsTestingPlatformApplication
- Enable[NugetPackageNameWithoutDots]
- EnableAspireTesting
- EnableMSTestRunner
- EnableNUnitRunner
- EnablePlaywright
- GenerateTestingPlatformConfigurationFile
- GenerateTestingPlatformEntryPoint
- TestingExtensionsProfile
- TestingPlatformCaptureOutput
- TestingPlatformCommandLineArguments
- TestingPlatformDotnetTestSupport
- TestingPlatformShowTestsFailure
- UseMicrosoftTestingPlatformRunner
IsTestingPlatformApplication
Pokud váš projekt odkazuje na balíček Microsoft.Testing.Platform.MSBuild , nastavení IsTestingPlatformApplication na true (což je také výchozí hodnota, pokud není zadána) provede následující:
- Vygeneruje vstupní bod do testovacího projektu.
- Vygeneruje konfigurační soubor.
- Zjistí rozšíření.
Nastavením vlastnosti zakážete false tranzitivní závislost na balíčku.
Tranzitivní závislost je, když se projekt, který odkazuje na jiný projekt, který odkazuje na daný balíček, chová, jako by odkazoval na balíček. Tuto vlastnost false byste obvykle nastavili v netestovacím projektu, který odkazuje na testovací projekt. Další informace najdete v tématu chyba CS8892.
Pokud váš testovací projekt odkazuje na MSTest, NUnit nebo xUnit, tato vlastnost je nastavena na stejnou hodnotu jako EnableMSTestRunner, EnableNUnitRunner
Enable[NugetPackageNameWithoutDots]
Pomocí vlastnosti se vzorem Enable[NugetPackageNameWithoutDots] povolte nebo zakažte rozšíření Microsoft.Testing.Platform.
Pokud chcete například povolit rozšíření výpisu stavu systému (balíček NuGet Microsoft.Testing.Extensions.CrashDump), nastavte EnableMicrosoftTestingExtensionsCrashDump hodnotu true.
Další informace naleznete v tématu Povolení nebo zakázání rozšíření.
EnableAspireTesting
Pokud používáte sadu SDK projektu MSTest, můžete pomocí EnableAspireTesting vlastnosti přenést všechny závislosti a výchozí using direktivy, které potřebujete pro testování pomocí Aspire a MSTest. Tato vlastnost je k dispozici v MSTest 3.4 a novějších verzích.
Další informace naleznete v tématu Test with Aspire.
EnablePlaywright
Pokud používáte sadu SDK projektu MSTest, můžete pomocí EnablePlaywright vlastnosti přenést všechny závislosti a výchozí using direktivy, které potřebujete pro testování pomocí Playwright a MSTest. Tato vlastnost je k dispozici v MSTest 3.4 a novějších verzích.
Další informace naleznete v tématu Playwright.
EnableMSTestRunner
Tato EnableMSTestRunner vlastnost povolí nebo zakáže použití msTest runneru. MSTest runner je jednoduchá a přenosná alternativa k VSTest. Tato vlastnost je k dispozici v MSTest 3.2 a novějších verzích.
Note
Pokud váš projekt určuje sadu MSTest SDK, nemusíte tuto vlastnost nastavit. Nastaví se automaticky.
EnableNUnitRunner
Tato EnableNUnitRunner vlastnost povolí nebo zakáže použití spouštěče NUnit. NUnit runner je lehká a přenosná alternativa KSTest. Tato vlastnost je k dispozici v NUnit3TestAdapter ve verzi 5.0 a novější.
UseMicrosoftTestingPlatformRunner
Tato UseMicrosoftTestingPlatformRunner vlastnost povolí nebo zakáže použití Microsoft.Testing.Platform runneru v testovacích projektech xUnit.v3 .
GenerateTestingPlatformEntryPoint
Nastavení vlastnosti GenerateTestingPlatformEntryPoint na false zakáže automatické generování vstupního bodu programu v testovacích projektech, které používají Microsoft.Testing.Platform. Tuto vlastnost false můžete chtít nastavit při ručním definování vstupního bodu nebo při odkazování na testovací projekt ze spustitelného souboru, který má také vstupní bod.
Další informace najdete v tématu chyba CS8892.
Chcete-li řídit generování vstupního bodu v projektu VSTest, použijte GenerateProgramFile vlastnost.
GenerateTestingPlatformConfigurationFile
Vlastnost GenerateTestingPlatformConfigurationFile je k dispozici pouze v případech, kdy isTestingPlatformApplication je true. Slouží k povolení kopírování a přejmenování konfiguračního souboru ve výstupní složce.
TestingPlatformCaptureOutput
Vlastnost TestingPlatformCaptureOutput řídí, zda všechny výstupy konzoly, které testovací spustitelné zápisy jsou zachyceny a skryty uživateli při použití dotnet test ke spuštění Microsoft.Testing.Platform testů. Ve výchozím nastavení je výstup konzoly skrytý. Tento výstup obsahuje banner, informace o verzi a formátované testovací informace. Nastavte tuto vlastnost tak, aby false se tyto informace zobrazovaly společně s výstupem NÁSTROJE MSBuild.
Další informace najdete v tématu Zobrazení kompletního výstupu platformy.
TestingPlatformCommandLineArguments
Vlastnost TestingPlatformCaptureOutput umožňuje zadat argumenty příkazového řádku do testovací aplikace, když použijete dotnet test ke spouštění Microsoft.Testing.Platform testů. Následující fragment kódu souboru projektu ukazuje příklad.
<PropertyGroup>
...
<TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>
TestingPlatformDotnetTestSupport
Vlastnost TestingPlatformDotnetTestSupport umožňuje testování aplikací Microsoft.Testing.Platform při použití režimu VSTest .dotnet test
Note
Nevyvolávejte dotnet test řešení, které má projekty VSTest i Microsoft.Testing.Platform, protože tento scénář není podporovaný.
Další informace naleznete v tématu Testování pomocí dotnet test.
TestingPlatformShowTestsFailure
Tato TestingPlatformShowTestsFailure vlastnost umožňuje určit, jestli se při spuštění dotnet test testů hlásí jedna chyba nebo všechny chyby v neúspěšném testu. Ve výchozím nastavení se selhání testů shrnují do souboru .log a do nástroje MSBuild se hlásí jedno selhání na jeden testovací projekt. Pokud chcete zobrazit chyby na neúspěšný test, nastavte tuto vlastnost do true souboru projektu.
TestingExtensionsProfile
Při použití sady SDK projektu MSTest umožňuje vlastnost vybrat profil, TestingExtensionsProfile který se má použít. V následující tabulce jsou uvedené povolené hodnoty.
| Value | Description |
|---|---|
Default |
Povolí doporučená rozšíření pro tuto verzi msTest.SDK. |
None |
Nejsou povolena žádná rozšíření. |
AllMicrosoft |
Povolte všechna rozšíření dodávaná Microsoftem (včetně rozšíření s omezující licencí). |
Další informace naleznete v tématu profil Microsoft.Testing.Platform.
Vlastnosti související s VSTest
Následující vlastnosti nástroje MSBuild jsou popsány v této části:
IsTestProject
Vlastnost IsTestProject je nastavena true balíčkem NuGet Microsoft.NET.Test.Sdk. Označuje, zda je projekt testovacím projektem VSTest, aby byl rozpoznán dotnet test.
Note
Pokud váš projekt určuje sadu MSTest SDK, nemusíte tuto vlastnost nastavit, protože MSTest.Sdk odkazuje na balíček NuGet Microsoft.NET.Test.Sdk.
UseVSTest
Nastavte vlastnost UseVSTest na true přepnutí z Microsoft.Testing.Platform na VSTest runner při použití sady SDK projektu MSTest.
Vlastnosti související s MSTest
Následující vlastnosti nástroje MSBuild jsou popsány v této části:
MSTestAnalysisMode
Tato vlastnost rozhoduje, které analyzátory jsou povoleny v jaké závažnosti. Další informace najdete v tématu analýzy kódu MSTest .
Vlastnosti související s hostování
Následující vlastnosti nástroje MSBuild jsou popsány v této části:
AppHostDotNetSearch
Tato AppHostDotNetSearch vlastnost konfiguruje způsob, jakým nativní spustitelný soubor vytvořený pro aplikaci vyhledá instalaci .NET. Tato vlastnost má vliv pouze na spustitelný soubor vytvořený při publikování, nikoli sestavení.
<PropertyGroup>
<AppHostDotNetSearch>Global</AppHostDotNetSearch>
</PropertyGroup>
V následující tabulce jsou uvedeny platné hodnoty. Můžete zadat více hodnot oddělených středníky.
| Value | Meaning |
|---|---|
AppLocal |
Složka spustitelného souboru aplikace |
AppRelative |
Cesta vzhledem ke spustitelnému souboru aplikace podle specifikace AppHostRelativeDotNet |
EnvironmentVariable |
Hodnota proměnných DOTNET_ROOT[_<arch>] prostředí |
Global |
Registrovaná a výchozí globální umístění instalace |
Tato vlastnost byla zavedena v .NET 9.
AppHostRelativeDotNet
Tato AppHostRelativeDotNet vlastnost umožňuje zadat relativní cestu ke spustitelnému souboru aplikace, aby vyhledala instalaci .NET, když je nakonfigurovaná.
AppHostRelativeDotNet Nastavení vlastnosti znamená, že AppHostDotNetSearch je AppRelative. Tato vlastnost má vliv pouze na spustitelný soubor vytvořený při publikování, nikoli sestavení.
<PropertyGroup>
<AppHostRelativeDotNet>./relative/path/to/runtime</AppHostRelativeDotNet>
</PropertyGroup>
Tato vlastnost byla zavedena v .NET 9.
EnableComHosting
Vlastnost EnableComHosting označuje, že sestavení poskytuje server COM.
EnableComHosting Nastavení také true znamená, že EnableDynamicLoading je true.
<PropertyGroup>
<EnableComHosting>True</EnableComHosting>
</PropertyGroup>
Další informace naleznete v tématu Zveřejnění komponent .NET modelu COM.
EnableDynamicLoading
Vlastnost EnableDynamicLoading označuje, že sestavení je dynamicky načtená komponenta. Komponentou může být knihovna MODELU COM nebo jiná knihovna než COM, kterou lze použít z nativního hostitele nebo použít jako modul plug-in. Nastavení této vlastnosti má true následující účinky:
- Vygeneruje se soubor .runtimeconfig.json .
-
RollForward je nastaven na
LatestMinorhodnotu . - Odkazy NuGet se kopírují místně.
<PropertyGroup>
<EnableDynamicLoading>true</EnableDynamicLoading>
</PropertyGroup>
Vygenerované vlastnosti souboru
Následující vlastnosti se týkají kódu ve vygenerovaných souborech:
DisableImplicitNamespaceImports
Vlastnost DisableImplicitNamespaceImports lze použít k zakázání implicitních importů oboru názvů v projektech Visual Basic, které cílí na .NET 6 nebo novější verzi. Implicitní obory názvů jsou výchozí obory názvů, které se importují globálně v projektu jazyka Visual Basic. Nastavte tuto vlastnost tak, aby true zakázala implicitní importy oborů názvů.
<PropertyGroup>
<DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>
</PropertyGroup>
ImplicitUsings
Vlastnost ImplicitUsings lze použít k povolení a zakázání implicitních global using direktiv v projektech C#, které cílí na .NET 6 nebo novější verzi a C# 10 nebo novější. Pokud je tato funkce povolená, sada .NET SDK přidává global using direktivy pro sadu výchozích oborů názvů na základě typu sady SDK projektu. Nastavte tuto vlastnost na true nebo enable povolit implicitní global using direktivy. Chcete-li zakázat implicitní global using direktivy, odeberte vlastnost nebo ji nastavte na false nebo disable.
<PropertyGroup>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
Note
Šablony pro nové projekty C#, které cílí na ImplicitUsings .NET 6 nebo novější, jsou enable standardně nastavené na.
Pokud chcete definovat explicitní global using direktivu , přidejte položku Using .
Items
Položky NÁSTROJE MSBuild jsou vstupy do systému sestavení. Položky jsou zadány podle jejich typu, což je název prvku. Jedná se například CompileReference o dva běžné typy položek. Sada .NET SDK zpřístupní následující další typy položek:
U těchto položek můžete použít libovolný ze standardních atributů položky, Include například a Update. Slouží Include k přidání nové položky a použití Update k úpravě existující položky. Často se například Update používá k úpravě položky, která byla implicitně přidána sadou .NET SDK.
AssemblyMetadata
Položka AssemblyMetadata určuje atribut sestavení páru AssemblyMetadataAttribute klíč-hodnota. Metadata Include se stanou klíčem a Value metadata se stanou hodnotou.
<ItemGroup>
<AssemblyMetadata Include="Serviceable" Value="True" />
</ItemGroup>
InternalsVisibleTo
Položka InternalsVisibleTo vygeneruje InternalsVisibleToAttribute atribut sestavení pro zadané přátelské sestavení.
<ItemGroup>
<InternalsVisibleTo Include="MyProject.Tests" />
</ItemGroup>
Pokud je známé sestavení podepsáno, můžete zadat volitelná Key metadata pro zadání jeho úplného veřejného klíče. Pokud nezadáte Key metadata a $(PublicKey) je k dispozici, použije se tento klíč. Jinak se do atributu nepřidá žádný veřejný klíč.
FrameworkReference
Položka FrameworkReference definuje odkaz na sdílenou architekturu .NET.
Atribut Include určuje ID architektury.
Fragment kódu souboru projektu v následujícím příkladu odkazuje na sdílenou architekturu Microsoft.AspNetCore.App.
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
PackageReference
Položka PackageReference definuje odkaz na balíček NuGet.
Atribut Include určuje ID balíčku. Atribut Version určuje verzi nebo rozsah verzí. Informace o tom, jak zadat minimální verzi, maximální verzi, rozsah nebo přesnou shodu, naleznete v tématu Rozsahy verzí.
Fragment kódu souboru projektu v následujícím příkladu odkazuje na balíček System.Runtime .
<ItemGroup>
<PackageReference Include="System.Runtime" Version="4.3.0" />
</ItemGroup>
Prostředky závislostí můžete řídit také pomocí metadat, jako PrivateAssetsje .
<ItemGroup>
<PackageReference Include="Contoso.Utility.UsefulStuff" Version="3.6.0">
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>
Další informace naleznete v tématu Odkazy na balíčky v souborech projektu.
TrimmerRootAssembly
Položka TrimmerRootAssembly umožňuje vyloučit sestavení z oříznutí. Oříznutí je proces odebrání nepoužívaných částí modulu runtime z zabalené aplikace. V některých případech může oříznutí nesprávně odebrat požadované odkazy.
Následující kód XML vyloučí System.Security sestavení z oříznutí.
<ItemGroup>
<TrimmerRootAssembly Include="System.Security" />
</ItemGroup>
Další informace najdete v tématu Možnosti oříznutí.
Using
Položka Using umožňuje globálně zahrnout obor názvů do projektu C#, abyste nemuseli přidávat direktivu using pro obor názvů v horní části zdrojových souborů. Tato položka je podobná Import položce, kterou lze použít pro stejný účel v projektech jazyka Visual Basic. Tato vlastnost je dostupná od verze .NET 6.
<ItemGroup>
<Using Include="My.Awesome.Namespace" />
</ItemGroup>
Položku můžete také použít Using k definování globálních using <alias> direktiv a using static <type> direktiv.
<ItemGroup>
<Using Include="My.Awesome.Namespace" Alias="Awesome" />
</ItemGroup>
Napří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 najdete v tématu using aliasů.
Metadata položek
Kromě standardních atributů položky NÁSTROJE MSBuild jsou k dispozici následující značky metadat položek ze sady .NET SDK:
CopyToPublishDirectory
CopyToPublishDirectory Metadata položky NÁSTROJE MSBuild řídí při zkopírování položky do adresáře publikování. V následující tabulce jsou uvedené povolené hodnoty.
| Value | Description |
|---|---|
PreserveNewest |
Zkopíruje položku pouze v případě, že se změnila ve zdrojovém umístění. |
IfDifferent |
Zkopíruje položku pouze v případě, že se změnila ve zdrojovém nebo cílovém umístění. Toto nastavení je užitečné v situacích, kdy potřebujete resetovat změny, ke kterým dochází po publikování. |
Always |
Vždy zkopíruje položku. |
Never |
Nikdy položku nekopírujte. |
Z hlediska výkonu je vhodnější, PreserveNewest protože umožňuje přírůstkové sestavení. Nepoužívejte Always a místo toho používejte IfDifferent, což zabraňuje zápisům vstupně-výstupních operací bez efektu.
<ItemGroup>
<None Update="appsettings.Development.json" CopyToOutputDirectory="PreserveNewest" CopyToPublishDirectory="PreserveNewest" />
</ItemGroup>
LinkBase
U položky mimo adresář projektu a jeho podadresáře používá cíl publikování metadata odkazu položky k určení, kam se má položka zkopírovat.
Linktaké určuje, jak se položky mimo strom projektu zobrazují v okně Průzkumník řešení sady Visual Studio.
Pokud Link není určena pro položku, která je mimo kužel projektu, je výchozí hodnota %(LinkBase)\%(RecursiveDir)%(Filename)%(Extension).
LinkBase umožňuje určit rozumnou základní složku pro položky mimo kužel projektu. Hierarchie složek v základní složce je zachována prostřednictvím RecursiveDir. Pokud LinkBase není zadaný, vynechá se z Link cesty.
<ItemGroup>
<Content Include="..\Extras\**\*.cs" LinkBase="Shared"/>
</ItemGroup>
Následující obrázek ukazuje, jak se v Průzkumník řešení zobrazí soubor, který je součástí předchozího globu položkyInclude.