Referenční informace k nástroji MSBuild pro projekty .NET SDK
Tato stránka je odkazem na vlastnosti a položky nástroje MSBuild, které můžete použít ke konfiguraci projektů .NET.
Poznámka:
Tato stránka probíhá a neobsahuje seznam všech užitečných vlastností nástroje MSBuild pro sadu .NET SDK. Seznam běžných vlastností nástroje MSBuild naleznete v části Společné vlastnosti nástroje MSBuild.
Vlastnosti ověření sestavení
Tyto vlastnosti a položky jsou předány úkolu ValidateAssemblies
. Další informace o ověřování sestavení naleznete v tématu Ověření sestavení.
Následující vlastnosti nástroje MSBuild jsou popsány v této části:
Poznámka:
Tyto vlastnosti nejsou součástí sady .NET SDK (zatím). Pokud je chcete použít, musíte také přidat PackageReference
microsoft.DotNet.ApiCompat.Task.
Kromě toho platí také následující vlastnosti, které jsou zdokumentované ve vlastnostech ověření balíčku pro ověření sestavení:
- ApiCompatEnableRuleAttributesMustMatch
- ApiCompatEnableRuleCannotChangeParameterName
- ApiCompatExcludeAttributesFile
- ApiCompatGenerateSuppressionFile
- Nepotřebné funkce ApiCompatPermit
- Nepotřebné nástroje ApiCompatPreserve
- ApiCompatRespectInternals
- ApiCompatSuppressionFile
- ApiCompatSuppressionOutputFile
- NoWarn
- RoslynAssembliesPath
ApiCompatStrictMode
Při nastavení true
na 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 true
hodnota , 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.
Poznámka:
Tato vlastnost je ignorována, pokud TargetFramework
je zadána (singulární).
<PropertyGroup>
<TargetFrameworks>net8.0;net462</TargetFrameworks>
</PropertyGroup>
Další informace naleznete v tématu Cílové architektury v projektech ve stylu sady SDK.
NetStandardImplicitPackageVersion
Poznámka:
Tato vlastnost se vztahuje pouze na projekty používající netstandard1.x
. Nevztahuje se na projekty, které používají netstandard2.x
.
NetStandardImplicitPackageVersion
Vlastnost použijte, pokud chcete zadat verzi architektury, která je nižší než verze metabalíku. Soubor projektu v následujícím příkladu cílí netstandard1.3
, ale používá verzi NETStandard.Library
1.6.0 .
<PropertyGroup>
<TargetFramework>netstandard1.3</TargetFramework>
<NetStandardImplicitPackageVersion>1.6.0</NetStandardImplicitPackageVersion>
</PropertyGroup>
Vlastnosti balíčku
Popisné vlastnosti
Můžete zadat vlastnosti, jako PackageId
je , , PackageVersion
PackageIcon
, Title
a Description
popsat balíček, který se vytvoří z projektu. Informace otěchtoch
<PropertyGroup>
...
<PackageId>ClassLibDotNetStandard</PackageId>
<Version>1.0.0</Version>
<Authors>John Doe</Authors>
<Company>Contoso</Company>
</PropertyGroup>
PackRelease
Vlastnost PackRelease
je podobná PublishRelease vlastnost, s tím rozdílem, že změní výchozí chování dotnet pack
. Tato vlastnost byla zavedena v .NET 7.
<PropertyGroup>
<PackRelease>true</PackRelease>
</PropertyGroup>
Poznámka:
- Počínaje sadou .NET 8 SDK je
PackRelease
výchozí hodnotatrue
. Další informace naleznete v tématu dotnet pack používá konfiguraci vydané verze. - Pouze sada .NET 7 SDK: Pokud chcete použít
PackRelease
projekt, který je součástí řešení sady Visual Studio, musíte proměnnouDOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS
prostředí nastavit natrue
(nebo jinou hodnotu). U řešení s mnoha projekty se nastavením této proměnné zvýší doba potřebná k zabalení.
Vlastnosti ověření balíčku
Tyto vlastnosti a položky jsou předány úkolu ValidatePackage
. Další informace o ověření balíčku naleznete v tématu Přehled ověření balíčku.
Vlastnosti úlohy ValidateAssemblies
naleznete v části Vlastnosti ověření sestavení.
Následující vlastnosti a položky nástroje MSBuild jsou popsány v této části:
- ApiCompatEnableRuleAttributesMustMatch
- ApiCompatEnableRuleCannotChangeParameterName
- ApiCompatExcludeAttributesFile
- ApiCompatGenerateSuppressionFile
- Nepotřebné funkce ApiCompatPermit
- Nepotřebné nástroje ApiCompatPreserve
- ApiCompatRespectInternals
- ApiCompatSuppressionFile
- ApiCompatSuppressionOutputFile
- EnablePackageValidation
- EnableStrictModeForBaselineValidation
- EnableStrictModeForCompatibleFrameworksInPackage
- EnableStrictModeForCompatibleTfms
- NoWarn
- PackageValidationBaselineFrameworkToIgnore
- PackageValidationBaselineName
- PackageValidationBaselineVersion
- PackageValidationReferencePath
- RoslynAssembliesPath
ApiCompatEnableRuleAttributesMustMatch
Pokud je tato vlastnost nastavená na true
hodnotu , 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 true
hodnotu , ApiCompatEnableRuleCannotChangeParameterName
umožňuje ověřovací pravidlo, které kontroluje, zda se názvy parametrů změnily ve veřejných metodách. Výchozí hodnota je false
.
<PropertyGroup>
<ApiCompatEnableRuleCannotChangeParameterName>true</ApiCompatEnableRuleCannotChangeParameterName>
</PropertyGroup>
ApiCompatExcludeAttributesFile
Položka ApiCompatExcludeAttributesFile
určuje cestu k souboru, který obsahuje atributy, které se mají vyloučit ve formátu DocId .
<ItemGroup>
<ApiCompatExcludeAttributesFile Include="ApiCompatExcludedAttributes.txt" />
<ApiCompatExcludeAttributesFile Include="ApiCompatBaselineExcludedAttributes.txt" />
</ItemGroup>
ApiCompatGenerateSuppressionFile
Vlastnost ApiCompatGenerateSuppressionFile
určuje, zda se má vygenerovat soubor potlačení kompatibility.
<PropertyGroup>
<ApiCompatGenerateSuppressionFile>true</ApiCompatGenerateSuppressionFile>
</PropertyGroup>
Nepotřebné funkce ApiCompatPermit
Vlastnost ApiCompatPermitUnnecessarySuppressions
určuje, zda povolit nepotřebné potlačení v souboru potlačení.
Výchozí hodnota je false
.
<PropertyGroup>
<ApiCompatPermitUnnecessarySuppressions>true</ApiCompatPermitUnnecessarySuppressions>
</PropertyGroup>
Nepotřebné nástroje ApiCompatPreserve
Vlastnost ApiCompatPreserveUnnecessarySuppressions
určuje, zda chcete zachovat nepotřebné potlačení při opětovném vygenerování souboru potlačení. Při opětovném vygenerování existujícího souboru potlačení se jeho obsah načte, deserializuje do sady potlačení a uloží se do seznamu. Některé potlačení už nemusí být nutné, pokud byla opravena nekompatibilitu. Pokud jsou potlačení serializována zpět na disk, můžete zvolit, že chcete zachovat všechny existující (deserializované) výrazy nastavením této vlastnosti na true
.
Výchozí hodnota je false
.
<PropertyGroup>
<ApiCompatPreserveUnnecessarySuppressions>true</ApiCompatPreserveUnnecessarySuppressions>
</PropertyGroup>
ApiCompatRespectInternals
Vlastnost ApiCompatRespectInternals
určuje, jestli internal
se má kromě public
rozhraní API kontrolovat kompatibilita rozhraní API.
<PropertyGroup>
<ApiCompatRespectInternals>true</ApiCompatRespectInternals>
</PropertyGroup>
ApiCompatSuppressionFile
Položka ApiCompatSuppressionFile
určuje cestu k jednomu nebo více souborům potlačení, ze které se mají číst. Pokud není zadaný, soubor potlačení <project-directory>/CompatibilitySuppressions.xml se přečte (pokud existuje).
<ItemGroup>
<ApiCompatSuppressionFile Include="CompatibilitySuppressions.xml;CompatibilitySuppressions.WasmThreads.xml" />
</ItemGroup>
ApiCompatSuppressionOutputFile
Vlastnost ApiCompatSuppressionOutputFile
určuje cestu k souboru potlačení pro zápis do kdy <ApiCompatGenerateSuppressionFile>
je true
. Pokud není zadáno, použije se první ApiCompatSuppressionFile
položka.
EnablePackageValidation
Tato EnablePackageValidation
vlastnost umožňuje po úloze řadu ověření balíčku Pack
. Další informace najdete v tématu ověření balíčku.
<PropertyGroup>
<EnablePackageValidation>true</EnablePackageValidation>
</PropertyGroup>
EnableStrictModeForBaselineValidation
Pokud je tato vlastnost nastavená na true
hodnotu , 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 true
EnableStrictModeForCompatibleFrameworksInPackage
hodnotu , 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í true
na EnableStrictModeForCompatibleTfms
, vlastnost umožňuje striktní režim pro kontrakt a implementace sestavení pro všechny kompatibilní cílové architektury. Výchozí hodnota je true
.
NoWarn
Vlastnost NoWarn
určuje ID diagnostiky, která se mají potlačit.
<PropertyGroup>
<NoWarn>$(NoWarn);PKV0001</NoWarn>
</PropertyGroup>
PackageValidationBaselineFrameworkToIgnore
Položka PackageValidationBaselineFrameworkToIgnore
určuje cílovou architekturu, která se má z balíčku směrného plánu ignorovat. Řetězec architektury musí přesně odpovídat názvu složky v balíčku podle směrného plánu.
<ItemGroup>
<PackageValidationBaselineFrameworkToIgnore Include="netcoreapp2.1" />
</ItemGroup>
PackageValidationBaselineName
Vlastnost PackageValidationBaselineName
určuje název balíčku směrného plánu k ověření aktuálního balíčku proti. Pokud není zadáno, použije se PackageId
hodnota.
PackageValidationBaselineVersion
Vlastnost PackageValidationBaselineVersion
určuje verzi balíčku podle směrného plánu k ověření aktuálního balíčku.
PackageValidationReferencePath
Položka PackageValidationReferencePath
určuje cestu k adresáři, kde lze najít referenční sestavení pro TFM.
<ItemGroup>
<PackageValidationReferencePath Include="path/to/reference-assembly" TargetFramework="net7.0" />
</ItemGroup>
RoslynAssembliesPath
Vlastnost RoslynAssembliesPath
určuje cestu k adresáři, který obsahuje sestavení Microsoft.CodeAnalysis, které chcete použít. Tuto vlastnost je potřeba nastavit jenom v případě, že chcete testovat s novějším kompilátorem, než jaký je v sadě SDK.
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
- SatelitníresourceLanguages
- 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.0
bin\Debug
následujícího nastavení:
<PropertyGroup>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
</PropertyGroup>
AppendRuntimeIdentifierToOutputPath
Vlastnost AppendRuntimeIdentifierToOutputPath
řídí, zda je identifikátor modulu runtime (RID) připojen k výstupní cestě. Sada .NET SDK automaticky připojí cílovou architekturu a pokud je k dispozici, identifikátor modulu runtime k výstupní cestě. Nastavením AppendRuntimeIdentifierToOutputPath
zabráníte false
připojení identifikátoru RID k výstupní cestě.
Například pro aplikaci .NET 5 a identifikátor RID win-x64
v následujícím nastavení se změní výstupní cesta z bin\Debug\net5.0\win-x64
bin\Debug\net5.0
:
<PropertyGroup>
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
</PropertyGroup>
CopyLocalLockFileAssemblies
Vlastnost CopyLocalLockFileAssemblies
je užitečná pro projekty modulů plug-in, které mají závislosti na jiných knihovnách. Pokud tuto vlastnost nastavíte na true
, všechny tranzitivní závislosti balíčku NuGet se zkopírují do výstupního adresáře. To znamená, že můžete použít výstup dotnet build
ke spuštění modulu plug-in na libovolném počítači.
<PropertyGroup>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>
Výchozí hodnota CopyLocalLockFileAssemblies
se může lišit v závislosti na typu výstupu. Například pro knihovny tříd je výchozí hodnota false
, zatímco pro konzolové aplikace je výchozí .true
Tuto vlastnost můžete explicitně zadat, aby se v případě potřeby přepsaly výchozí hodnoty.
Tip
Alternativně můžete použít dotnet publish
k publikování knihovny tříd. Další informace najdete v tématu dotnet publish.
ErrorOnDuplicatePublishOutputFiles
Tato ErrorOnDuplicatePublishOutputFiles
vlastnost souvisí s tím, jestli sada SDK generuje chybu NETSDK1148, když nástroj MSBuild zjistí ve výstupu publikování duplicitní soubory, ale nedokáže určit, které soubory se mají odebrat.
ErrorOnDuplicatePublishOutputFiles
Vlastnost nastavte, false
pokud nechcete, aby se chyba vygenerovala.
<PropertyGroup>
<ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>
</PropertyGroup>
Tato vlastnost byla zavedena v .NET 6.
GenerateRuntimeConfigDevFile
Počínaje sadou .NET 6 SDK se soubor [Appname].runtimesettings.dev.json už v době kompilace negeneruje. Pokud chcete, aby se tento soubor vygeneroval, nastavte GenerateRuntimeConfigDevFile
vlastnost na true
hodnotu .
<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 true
satelitní sestavení jsou vytvořena csc.exe místo toho. Použití csc.exe může být výhodné v následujících situacích:
- Chcete použít možnost
deterministic
jazyka C#. - Jste omezeni skutečností, že al.exe nemá žádnou podporu pro veřejné podepisování a zpracovává AssemblyInformationalVersionAttribute špatně.
<PropertyGroup>
<GenerateSatelliteAssembliesForCore>true</GenerateSatelliteAssembliesForCore>
</PropertyGroup>
IsPublishable
Tato IsPublishable
vlastnost umožňuje Publish
spuštění cíle. Tato vlastnost má vliv pouze na procesy, které používají soubory .*proj a Publish
cíl, například příkaz dotnet publish . Nemá vliv na publikování v sadě Visual Studio, který používá PublishOnly
cíl. Výchozí hodnota je true
.
Tato vlastnost je užitečná, pokud spustíte dotnet publish
soubor řešení, protože umožňuje automatický výběr projektů, které by se měly publikovat.
<PropertyGroup>
<IsPublishable>false</IsPublishable>
</PropertyGroup>
PreserveCompilationContext
Tato PreserveCompilationContext
vlastnost umožňuje sestavené nebo publikované aplikaci kompilovat více kódu za běhu pomocí stejných nastavení, která byla použita v době sestavení. Sestavení odkazovaná v době sestavení se zkopírují do podadresáře odkazu výstupního adresáře. Názvy referenčních sestavení jsou uloženy v souboru .deps.json aplikace spolu s možnostmi předanými kompilátoru. Tyto informace můžete načíst pomocí DependencyContext.CompileLibraries vlastností a DependencyContext.CompilationOptions vlastností.
Tyto funkce většinou interně používají ASP.NET Core MVC a Razor Pages k podpoře kompilace souborů Razor za běhu.
<PropertyGroup>
<PreserveCompilationContext>true</PreserveCompilationContext>
</PropertyGroup>
PreserveCompilationReferences
Vlastnost PreserveCompilationReferences
je podobná PreserveCompilationContext vlastnost, s tím rozdílem, že kopíruje pouze odkazovaná sestavení do adresáře publikování, a ne .deps.json soubor.
<PropertyGroup>
<PreserveCompilationReferences>true</PreserveCompilationReferences>
</PropertyGroup>
Další informace naleznete v tématu Vlastnosti sady Razor SDK.
ProduceReferenceAssemblyInOutDir
V .NET 5 a starších verzích jsou referenční sestavení vždy zapsána do OutDir
adresáře. V .NET 6 a novějších verzích můžete pomocí ProduceReferenceAssemblyInOutDir
vlastnosti určit, zda jsou referenční sestavení zapsána do OutDir
adresáře. Výchozí hodnota je false
a 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 true
tato 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 true
tato vlastnost , soubory dokumentace XML pro odkazy projektu se zkopírují do adresáře publikování místo jen prostředků za běhu, jako jsou soubory DLL. Tato vlastnost má výchozí hodnotu true
.
PublishRelease
Vlastnost PublishRelease
informuje dotnet publish
o použití Release
konfigurace ve výchozím nastavení místo Debug
konfigurace. Tato vlastnost byla zavedena v .NET 7.
<PropertyGroup>
<PublishRelease>true</PublishRelease>
</PropertyGroup>
Poznámka:
- Počínaje sadou .NET 8 SDK se ve výchozím nastavení nastaví
PublishRelease
pro projekty,true
které cílí na .NET 8 nebo novější. Další informace najdete v tématu dotnet publish používá konfiguraci vydané verze. - Tato vlastnost nemá vliv na chování
dotnet build /t:Publish
a mění pouze konfiguraci pouze při publikování prostřednictvím rozhraní .NET CLI. - Pouze sada .NET 7 SDK: Pokud chcete použít
PublishRelease
projekt, který je součástí řešení sady Visual Studio, musíte proměnnouDOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS
prostředí nastavit natrue
(nebo jinou hodnotu). Při publikování řešení s povolenou touto proměnnou má hodnota spustitelného projektuPublishRelease
přednost a tok nové výchozí konfigurace do všech ostatních projektů v řešení. Pokud řešení obsahuje více spustitelných nebo nejvyšších projektů s odlišnými hodnotamiPublishRelease
, řešení se úspěšně nepublikuje. U řešení, která mají mnoho projektů, se pomocí tohoto nastavení zvýší doba potřebná k publikování.
PublishSelfContained
Tato PublishSelfContained
vlastnost informuje dotnet publish
o publikování aplikace jako samostatné aplikace. Tato vlastnost je užitečná, když nemůžete použít --self-contained
argument pro příkaz dotnet publish – například při publikování na úrovni řešení. V takovém případě můžete přidat PublishSelfContained
vlastnost MSBuild do souboru projektu nebo Directory.Build.Props .
Tato vlastnost byla zavedena v .NET 7. Podobá se vlastnosti SelfContained s tím rozdílem, že je specifická pro sloveso publish
. Doporučuje se místo PublishSelfContained
SelfContained
.
<PropertyGroup>
<PublishSelfContained>true</PublishSelfContained>
</PropertyGroup>
RollForward
Vlastnost RollForward
řídí, jak aplikace zvolí modul runtime, pokud je k dispozici více verzí modulu runtime. Tato hodnota je výstupem .runtimeconfig.json jako rollForward
nastavení.
<PropertyGroup>
<RollForward>LatestMinor</RollForward>
</PropertyGroup>
Nastavte RollForward
jednu z následujících hodnot:
Hodnota | Popis |
---|---|
Minor |
Výchozí, pokud není zadáno. Pokud chybí požadovaná podverze, přejděte na nejnižší nižší podverzi. Pokud je požadovaná podverze k dispozici, použije se LatestPatch zásada. |
Major |
Pokud chybí požadovaná hlavní verze, přejděte k další dostupné vyšší hlavní verzi a nejnižší podverzi. Pokud je požadovaná hlavní verze přítomen, použije se Minor zásada. |
LatestPatch |
Přechod na nejvyšší verzi opravy Tato hodnota zakáže vrácení podverze vpřed. |
LatestMinor |
Roll-forward to highest minor version, even if requested minor version is present. |
LatestMajor |
Roll-forward to highest major and highest minor version, even ifed major is present. |
Disable |
Nepřecházejte dál, vytvořte vazbu pouze na zadanou verzi. Tato zásada se nedoporučuje pro obecné použití, protože zakazuje přechod na nejnovější opravy. Tato hodnota se doporučuje jenom pro testování. |
Další informace naleznete v tématu Řízení chování roll-forward.
RuntimeFrameworkVersion
Vlastnost RuntimeFrameworkVersion
určuje verzi modulu runtime, která se má použít při publikování. Zadejte verzi modulu runtime:
<PropertyGroup>
<RuntimeFrameworkVersion>5.0.7</RuntimeFrameworkVersion>
</PropertyGroup>
Při publikování aplikace závislé na rozhraní určuje tato hodnota minimální požadovanou verzi. Při publikování samostatné aplikace určuje tato hodnota přesnou požadovanou verzi.
RuntimeIdentifier
Tato RuntimeIdentifier
vlastnost umožňuje zadat jeden identifikátor modulu runtime (RID) pro projekt. Identifikátor RID umožňuje publikování samostatného nasazení.
<PropertyGroup>
<RuntimeIdentifier>linux-x64</RuntimeIdentifier>
</PropertyGroup>
RuntimeIdentifiers
Tato RuntimeIdentifiers
vlastnost umožňuje zadat seznam identifikátorů modulu runtime (RID) oddělených středníkem. Tuto vlastnost použijte, pokud potřebujete publikovat více modulů runtime.
RuntimeIdentifiers
se používá v době obnovení, aby se zajistilo, že jsou v grafu správné prostředky.
Tip
RuntimeIdentifier
(singulární) může poskytovat rychlejší sestavení v případě, že je vyžadován pouze jeden modul runtime.
<PropertyGroup>
<RuntimeIdentifiers>win-x64;osx-x64;linux-x64</RuntimeIdentifiers>
</PropertyGroup>
SatelitníresourceLanguages
Tato SatelliteResourceLanguages
vlastnost umožňuje určit, které jazyky chcete během sestavování a publikování zachovat sestavení satelitních prostředků. Mnoho balíčků NuGet zahrnuje lokalizovaná satelitní sestavení prostředků v hlavním balíčku. U projektů, které odkazují na tyto balíčky NuGet, které nevyžadují lokalizované prostředky, mohou lokalizovaná sestavení zbytečně nafouknout velikost sestavení a publikování výstupu.
SatelliteResourceLanguages
Přidáním vlastnosti do souboru projektu budou do výstupu sestavení a publikování zahrnuta pouze lokalizovaná sestavení pro zadané jazyky. Například v následujícím souboru projektu se zachovají pouze satelitní sestavení zdrojů v angličtině (USA) a němčině (Německo).
<PropertyGroup>
<SatelliteResourceLanguages>en-US;de-DE</SatelliteResourceLanguages>
</PropertyGroup>
Poznámka:
Tuto vlastnost je nutné zadat v projektu, který odkazuje na balíček NuGet s lokalizovanými satelitními sestaveními prostředků.
Chcete-li zadat více jazyků jako argument
dotnet publish
, je nutné přidat tři dvojice uvozovek kolem identifikátorů jazyka. Příklad:dotnet msbuild multi.msbuildproj -p:SatelliteResourceLanguages="""de;en"""
SelfContained
Vlastnost SelfContained
informuje a dotnet 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.
Vlastnost | Hodnoty | Popis |
---|---|---|
PublishTrimmed |
true nebo false |
Určuje, jestli je během publikování povolené oříznutí. |
TrimMode |
full nebo partial |
Výchozí hodnota je full . Řídí členitost oříznutí. |
SuppressTrimAnalysisWarnings |
true nebo false |
Určuje, jestli se vytvářejí upozornění analýzy oříznutí. |
EnableTrimAnalyzer |
true nebo false |
Určuje, jestli se vytváří podmnožina upozornění analýzy oříznutí. Analýzu můžete povolit i v případě, že PublishTrimmed je nastavená hodnota false . |
ILLinkTreatWarningsAsErrors |
true nebo false |
Určuje, jestli se upozornění oříznutí považují za chyby. Můžete například chtít nastavit tuto vlastnost na false hodnotu , která TreatWarningsAsErrors je nastavena na true hodnotu . |
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
Možnosti kompilátoru jazyka C#, například LangVersion
a Nullable
, lze také zadat jako vlastnosti NÁSTROJE MSBuild v souboru projektu. Další informace najdete v tématu Možnosti kompilátoru jazyka C#.
ContinuousIntegrationBuild
Tato ContinuousIntegrationBuild
vlastnost označuje, jestli se sestavení spouští na serveru kontinuální integrace (CI). Pokud je tato vlastnost nastavená na true
, tato vlastnost umožňuje nastavení, která se vztahují pouze na oficiální buildy na rozdíl od místních buildů na vývojářském počítači. Například uložené cesty k souborům jsou normalizovány pro oficiální buildy. Ladicí program ale na místním vývojovém počítači nedokáže najít místní zdrojové soubory, pokud jsou cesty k souborům normalizované.
Poznámka:
V současné době nastavení této vlastnosti true
funguje pouze v případě, že přidáte odkaz na konkrétní balíček zprostředkovatele SourceLink nebo <SourceRoot Include="$(MyDirectory)" />
položku. Další informace najdete v tématu dotnet/roslyn problém 55860.
Proměnnou systému CI můžete použít k podmíněnému nastavení ContinuousIntegrationBuild
vlastnosti. Například název proměnné pro Azure Pipelines je TF_BUILD
:
<PropertyGroup Condition="'$(TF_BUILD)' == 'true'">
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>
Pro GitHub Actions je GITHUB_ACTIONS
název proměnné:
<PropertyGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>
CopyDebugSymbolFilesFromPackages
Pokud je tato vlastnost nastavena na true
, všechny soubory symbolů (označované také jako soubory PDB) z PackageReference
položek v projektu se zkopírují do výstupu sestavení. Tyto soubory mohou poskytovat podrobnější trasování zásobníku pro výjimky a usnadnit pochopení výpisů paměti a trasování spuštěné aplikace. Zahrnutím těchto souborů ale vznikne větší velikost sady nasazení.
Tato vlastnost byla zavedena v sadě .NET SDK 7.0.100, i když se ve výchozím nastavení nezadává.
CopyDocumentationFilesFromPackages
Pokud je tato vlastnost nastavena na true
, všechny vygenerované soubory dokumentace XML z PackageReference
položek v projektu se zkopírují do výstupu sestavení. Všimněte si, že povolení této funkce bude mít za následek větší velikost sady nasazení.
Tato vlastnost byla zavedena v sadě .NET SDK 7.0.100, i když se ve výchozím nastavení nezadává.
DisableImplicitFrameworkDefines
Vlastnost DisableImplicitFrameworkDefines
řídí, zda sada SDK generuje symboly preprocesoru pro cílovou architekturu a platformu pro projekt .NET. Pokud je tato vlastnost nastavená na false
symboly preprocesoru (což je výchozí hodnota), vygenerují se pro:
- Framework bez verze (
NETFRAMEWORK
,NETSTANDARD
,NET
) - Architektura s verzí (
NET48
,NETSTANDARD2_0
,NET6_0
) - Architektura s minimální vazbou na verzi (
NET48_OR_GREATER
,NETSTANDARD2_0_OR_GREATER
,NET6_0_OR_GREATER
)
Další informace o monikerech cílové architektury a těchto implicitních symbolech preprocesoru najdete v tématu Cílové architektury.
Pokud navíc v projektu zadáte cílovou architekturu specifickou pro operační systém (například net6.0-android
), vygenerují se následující symboly preprocesoru:
- Platforma bez verze (
ANDROID
,IOS
,WINDOWS
) - Platforma s verzí (
IOS15_1
) - Platforma s minimální vazbou na verzi (
IOS15_1_OR_GREATER
)
Další informace o monikerech cílové architektury specifické pro operační systém najdete v sadě TFM specifické pro operační systém.
Pokud vaše cílová architektura naznačuje podporu starších cílových architektur, vygenerují se symboly preprocesoru pro tyto starší architektury. Například net6.0
implikuje podporu pro net5.0
a tak dále až dozadu .netcoreapp1.0
. Pro každou z těchto cílových architektur se tedy definuje symbol rozhraní s minimální vazbou verze.
DocumentationFile
Tato DocumentationFile
vlastnost umožňuje zadat název souboru XML, který obsahuje dokumentaci pro vaši knihovnu. Aby intelliSense fungovala správně s dokumentací, musí být název souboru stejný jako název sestavení a musí být ve stejném adresáři jako sestavení. Pokud tuto vlastnost nezadáte, ale nastavíte GenerateDocumentationFile na true
, název souboru dokumentace je výchozí název sestavení, ale s příponou .xml souboru. Z tohoto důvodu je často jednodušší vynechat tuto vlastnost a místo toho použít GenerateDocumentationFile vlastnost .
Pokud zadáte tuto vlastnost, ale nastavíte GenerateDocumentationFile na false
, kompilátor negeneruje soubor dokumentace. Pokud zadáte tuto vlastnost a vynecháte GenerateDocumentationFile vlastnost, kompilátor vygeneruje soubor dokumentace.
<PropertyGroup>
<DocumentationFile>path/to/file.xml</DocumentationFile>
</PropertyGroup>
EmbeddedResourceUseDependentUponConvention
Vlastnost EmbeddedResourceUseDependentUponConvention
definuje, zda jsou názvy souborů manifestu prostředků generovány z informací o typu ve zdrojových souborech, které jsou umístěny společně se soubory prostředků. Pokud je například form1.resx ve stejné složce jako Form1.cs a EmbeddedResourceUseDependentUponConvention
nastaví se na true
hodnotu , vygenerovaný soubor .resources převezme jeho název z prvního typu definovaného v Form1.cs. Pokud MyNamespace.Form1
je první typ definovaný v Form1.cs, vygenerovaný název souboru je MyNamespace.Form1.resources.
Poznámka:
Pokud LogicalName
je pro ManifestResourceName
položku zadána hodnota , DependentUpon
nebo 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
, ManifestResourceName
nebo 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 True
hodnotu .
<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 true
nenastavíte, zobrazí se upozornění na sestavení NETSDK1100. K této chybě dochází, protože cílení a balíčky runtime se automaticky nestáhnou na platformách, které nejsou podporované. Nastavením této vlastnosti se tyto balíčky stáhnou při křížovému cílení.
Poznámka:
Tato vlastnost se v současné době doporučuje povolit vývoj na platformách mimo Windows. Jakmile je ale aplikace připravená k vydání, měla by být vytvořená ve Windows. Při sestavování na platformě jiné než Windows nemusí být výstup stejný jako při sestavování ve Windows. Zejména spustitelný soubor není označený jako aplikace pro Windows (což znamená, že vždy spustí okno konzoly) a nebude mít vloženou ikonu.
<PropertyGroup>
<EnableWindowsTargeting>true</EnableWindowsTargeting>
</PropertyGroup>
GenerateDocumentationFile
Vlastnost GenerateDocumentationFile
určuje, zda kompilátor generuje soubor dokumentace XML pro vaši knihovnu. Pokud tuto vlastnost true
nastavíte a nezadáte název souboru prostřednictvím vlastnosti DocumentationFile, vygenerovaný soubor XML se umístí do stejného výstupního adresáře jako sestavení a má stejný název souboru (ale s příponou .xml ).
<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
Další informace o generování dokumentace z komentářů ke kódu najdete v dokumentačních komentářích XML (C#), dokumentování kódu pomocí XML (Visual Basic) nebo dokumentování kódu pomocí XML (F#).
GenerateRequiresPreviewFeaturesAttribute
Vlastnost GenerateRequiresPreviewFeaturesAttribute
úzce souvisí s EnablePreviewFeatures vlastnost. Pokud vaše knihovna používá funkce preview, ale nechcete, aby bylo celé sestavení označené atributem RequiresPreviewFeaturesAttribute , což by vyžadovalo, aby uživatelé povolili funkce preview, nastavte tuto vlastnost na False
.
<PropertyGroup>
<EnablePreviewFeatures>True</EnablePreviewFeatures>
<GenerateRequiresPreviewFeaturesAttribute>False</GenerateRequiresPreviewFeaturesAttribute>
</PropertyGroup>
Důležité
Pokud vlastnost nastavíte GenerateRequiresPreviewFeaturesAttribute
False
na , 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 True
hodnotu . Pokud chcete vypnout optimalizaci sestavení pro implicitně aktivované buildy, nastavte na OptimizeImplicitlyTriggeredBuild
hodnotu 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>
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.
Hodnota | Význam |
---|---|
latest |
Používají se nejnovější analyzátory kódu, které byly vydány. Tato možnost je výchozí. |
latest-<mode> |
Používají se nejnovější analyzátory kódu, které byly vydány. Hodnota <mode> určuje, která pravidla jsou povolena. |
preview |
Používají se nejnovější analyzátory kódu, i když jsou ve verzi Preview. |
preview-<mode> |
Používají se nejnovější analyzátory kódu, i když jsou ve verzi Preview. Hodnota <mode> určuje, která pravidla jsou povolena. |
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. |
7.0 |
Používá se sada pravidel, která byla k dispozici pro verzi .NET 7, i když jsou k dispozici novější pravidla. |
7.0-<mode> |
Používá se sada pravidel, která byla k dispozici pro verzi .NET 7, i když jsou k dispozici novější pravidla. Hodnota <mode> určuje, která pravidla jsou povolena. |
7 |
Používá se sada pravidel, která byla k dispozici pro verzi .NET 7, i když jsou k dispozici novější pravidla. |
7-<mode> |
Používá se sada pravidel, která byla k dispozici pro verzi .NET 7, i když jsou k dispozici novější pravidla. Hodnota <mode> určuje, která pravidla jsou povolena. |
Poznámka:
- 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,AnalysisLevel
má 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<>
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 All
hodnotu .
<PropertyGroup>
<AnalysisMode>All</AnalysisMode>
</PropertyGroup>
V následující tabulce jsou uvedeny dostupné hodnoty možností. Jsou uvedené v rostoucím pořadí počtu povolených pravidel.
Hodnota | Popis |
---|---|
None |
Všechna pravidla jsou zakázaná. Můžete selektivně vyjádřit výslovný souhlas s jednotlivými pravidly, která je povolí. |
Default |
Výchozí režim, kdy jsou určitá pravidla povolená jako upozornění sestavení, jsou určitá pravidla povolená jako návrhy integrovaného vývojového prostředí sady Visual Studio a zbytek je zakázaný. |
Minimum |
Agresivnější režim než Default režim. Některé návrhy, které důrazně doporučujeme pro vynucování sestavení, jsou povolené jako upozornění sestavení. Pokud chcete zjistit, která pravidla 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 AnalysisMode All na : AnalysisLevel latest-all CA1017, CA1045, CA1005, CA1014, CA1060, CA1021 a pravidly analyzátoru metrik kódu (CA1501, CA1502, CA1505, CA1506 a CA1509). Tato starší pravidla můžou být v budoucí verzi zastaralá. Přesto je ale můžete povolit jednotlivě pomocí dotnet_diagnostic.CAxxxx.severity = <severity> položky. |
Poznámka:
- 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,
AnalysisLevel
má 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 AnalysisMode<>
Tato vlastnost je stejná jako AnalysisMode, s tím rozdílem, že se vztahuje pouze na konkrétní kategorii pravidel analýzy kódu. Tato vlastnost umožňuje povolit nebo zakázat pravidla na jiné úrovni než ostatní kategorie pravidel. Pokud tuto vlastnost vynecháte pro určitou kategorii pravidel, výchozí hodnota AnalysisMode . Dostupné hodnoty jsou stejné jako pro AnalysisMode.
<PropertyGroup>
<AnalysisModeSecurity>All</AnalysisModeSecurity>
</PropertyGroup>
Následující tabulka uvádí název vlastnosti pro každou kategorii pravidel.
Název vlastnosti | Kategorie pravidla |
---|---|
<AnalysisModeDesign> |
Pravidla návrhu |
<AnalysisModeDocumentation> |
Pravidla dokumentace |
<AnalysisModeGlobalization> |
Pravidla globalizace |
<AnalysisModeInteroperability> |
Pravidla přenositelnosti a interoperability |
<AnalysisModeMaintainability> |
Pravidla udržovatelnosti |
<AnalysisModeNaming> |
Pravidla pojmenování |
<AnalysisModePerformance> |
Pravidla výkonu |
<AnalysisModeSingleFile> |
Pravidla jednosouborové aplikace |
<AnalysisModeReliability> |
Pravidla spolehlivosti |
<AnalysisModeSecurity> |
Pravidla zabezpečení |
<AnalysisModeStyle> |
Pravidla stylu kódu (IDEXXXX) |
<AnalysisModeUsage> |
Pravidla použití |
CodeAnalysisTreatWarningsAsErrors
Tato CodeAnalysisTreatWarningsAsErrors
vlastnost umožňuje nakonfigurovat, jestli se má upozornění analýzy kvality kódu (CAxxxx) považovat za upozornění a přerušit sestavení. Pokud při sestavování projektů použijete -warnaserror
příznak, upozornění analýzy kvality kódu .NET se také považují za chyby. Pokud nechcete, aby se upozornění analýzy kvality kódu považovala za chyby, můžete nastavit CodeAnalysisTreatWarningsAsErrors
vlastnost MSBuild na false
soubor projektu.
<PropertyGroup>
<CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors>
</PropertyGroup>
EnableNETAnalyzers
Analýza kvality kódu .NET je ve výchozím nastavení povolená pro projekty, které cílí na .NET 5 nebo novější verzi. Pokud vyvíjíte pomocí sady .NET 5+ SDK, můžete povolit analýzu kódu .NET pro projekty ve stylu sady SDK, které cílí na starší verze .NET, nastavením EnableNETAnalyzers
vlastnosti na true
. Chcete-li zakázat analýzu kódu v libovolném projektu, nastavte tuto vlastnost na false
.
<PropertyGroup>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
</PropertyGroup>
Poznámka:
Tato vlastnost se vztahuje konkrétně na integrované analyzátory v sadě .NET 5+ SDK. Nemělo by se používat při instalaci balíčku analýzy kódu NuGet.
EnforceCodeStyleInBuild
Analýza stylu kódu .NET je ve výchozím nastavení zakázaná při sestavení pro všechny projekty .NET. Analýzu stylu kódu pro projekty .NET můžete povolit nastavením EnforceCodeStyleInBuild
vlastnosti na true
.
<PropertyGroup>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
</PropertyGroup>
Všechna pravidla stylu kódu, která jsou nakonfigurovaná tak, aby se zobrazovala upozornění nebo chyby, se spustí při porušeních sestavení a hlášení.
_SkipUpgradeNetAnalyzersNuGetWarning
Tato _SkipUpgradeNetAnalyzersNuGetWarning
vlastnost umožňuje nakonfigurovat, jestli se zobrazí upozornění, pokud používáte analyzátory kódu z balíčku NuGet, který je zastaralý v porovnání s analyzátory kódu v nejnovější sadě .NET SDK. Upozornění vypadá nějak takto:
Sada .NET SDK obsahuje novější analyzátory s verzí 6.0.0, než jakou verzi 5.0.3 poskytuje balíček Microsoft.CodeAnalysis.NetAnalyzers. Aktualizujte nebo odeberte tento odkaz na balíček.
Pokud chcete toto upozornění odebrat a dál používat verzi analyzátorů kódu v balíčku NuGet, nastavte _SkipUpgradeNetAnalyzersNuGetWarning
v true
souboru projektu.
<PropertyGroup>
<_SkipUpgradeNetAnalyzersNuGetWarning>true</_SkipUpgradeNetAnalyzersNuGetWarning>
</PropertyGroup>
Vlastnosti konfigurace modulu runtime
Určité chování modulu runtime můžete nakonfigurovat zadáním vlastností NÁSTROJE MSBuild v souboru projektu aplikace. Informace o dalších způsobech konfigurace chování modulu runtime naleznete v tématu Nastavení konfigurace modulu runtime.
- AutoreleasePoolSupport
- ConcurrentGarbageCollection
- InvariantGlobalization
- PředdefinovanéCulturesOnly
- RetainVMGarbageCollection
- ServerGarbageCollection
- ThreadPoolMaxThreads
- ThreadPoolMinThreads
- Vrstvené dokončování
- TieredCompilationQuickJit
- TieredCompilationQuickJitForLoops
- Vrstvené funkcePGO
- 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>
PředdefinovanéCulturesOnly
V .NET 6 a novějších verzích vlastnost konfiguruje, PredefinedCulturesOnly
zda aplikace mohou vytvářet jiné jazykové verze než invariantní jazykovou verzi, když je povolen režim globalizace invariant. Výchozí hodnota je true
. Nastavte hodnotu tak, aby false
umožňovala vytváření jakékoli nové jazykové verze v globalizačním režimu invariantního režimu.
<PropertyGroup>
<PredefinedCulturesOnly>false</PredefinedCulturesOnly>
</PropertyGroup>
Další informace naleznete v tématu Vytvoření jazykové verze a mapování případů v režimu globalizace invariant.
RetainVMGarbageCollection
Vlastnost RetainVMGarbageCollection
nakonfiguruje systém uvolňování paměti tak, aby se odstraněné segmenty paměti umístily do pohotovostního seznamu pro budoucí použití nebo je uvolněte. Nastavení hodnoty tak, aby true
systému uvolňování paměti řeklo, že se segmenty umístí do pohotovostního seznamu. Další informace najdete v tématu Zachování virtuálního počítače.
<PropertyGroup>
<RetainVMGarbageCollection>true</RetainVMGarbageCollection>
</PropertyGroup>
ServerGarbageCollection
Vlastnost ServerGarbageCollection
konfiguruje, zda aplikace používá uvolňování paměti pracovní stanice nebo uvolňování paměti serveru. Nastavte hodnotu tak, aby true
používala uvolňování paměti serveru. Další informace naleznete v tématu Pracovní stanice a server.
<PropertyGroup>
<ServerGarbageCollection>true</ServerGarbageCollection>
</PropertyGroup>
ThreadPoolMaxThreads
Vlastnost ThreadPoolMaxThreads
nakonfiguruje maximální počet vláken pro fond pracovních vláken. Další informace naleznete v tématu Maximální počet vláken.
<PropertyGroup>
<ThreadPoolMaxThreads>20</ThreadPoolMaxThreads>
</PropertyGroup>
ThreadPoolMinThreads
Vlastnost ThreadPoolMinThreads
nakonfiguruje minimální počet vláken pro fond pracovních vláken. Další informace naleznete v tématu Minimální počet vláken.
<PropertyGroup>
<ThreadPoolMinThreads>4</ThreadPoolMinThreads>
</PropertyGroup>
Vrstvené dokončování
Vlastnost TieredCompilation
konfiguruje, zda kompilátor JIT (just-in-time) používá vrstvené kompilace. Nastavte hodnotu na false
zakázání vrstvené kompilace. Další informace naleznete v tématu Vrstvené kompilace.
<PropertyGroup>
<TieredCompilation>false</TieredCompilation>
</PropertyGroup>
TieredCompilationQuickJit
Tato TieredCompilationQuickJit
vlastnost konfiguruje, zda kompilátor JIT používá rychlé JIT. Nastavte hodnotu na zakázání false
rychlého JIT. Další informace najdete v tématu Rychlá JIT.
<PropertyGroup>
<TieredCompilationQuickJit>false</TieredCompilationQuickJit>
</PropertyGroup>
TieredCompilationQuickJitForLoops
Vlastnost TieredCompilationQuickJitForLoops
konfiguruje, zda kompilátor JIT používá rychlé JIT u metod, které obsahují smyčky. Nastavte hodnotu na true
povolení rychlého JIT u metod obsahujících smyčky. Další informace najdete v tématu Rychlá JIT smyčky.
<PropertyGroup>
<TieredCompilationQuickJitForLoops>true</TieredCompilationQuickJitForLoops>
</PropertyGroup>
Vrstvené funkcePGO
Vlastnost TieredPGO
určuje, jestli je povolená dynamická nebo vrstvovaná optimalizace s asistencí profilu (PGO). Nastavte hodnotu na true
povolení vrstveného PGO. Další informace najdete v tématu Optimalizace s asistencí profilu.
<PropertyGroup>
<TieredPGO>true</TieredPGO>
</PropertyGroup>
UseWindowsThreadPool
Tato UseWindowsThreadPool
vlastnost konfiguruje, zda je správa vláken fondu vláken delegována do fondu vláken Systému Windows (pouze Windows). Výchozí hodnota je false
, v takovém případě se používá fond vláken .NET. Další informace naleznete v tématu Fond vláken systému Windows.
<PropertyGroup>
<UseWindowsThreadPool>true</UseWindowsThreadPool>
</PropertyGroup>
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 true
tato vlastnost , má podobný účinek jako nastavení PrivateAssets="All"
na všech závislostech závislého projektu.
Pokud tuto vlastnost nastavíte na true
, můžete přidat explicitní odkazy pouze na projekty, které potřebujete.
<PropertyGroup>
<DisableTransitiveProjectReferences>true</DisableTransitiveProjectReferences>
</PropertyGroup>
ManagePackageVersionsCentrally
Vlastnost ManagePackageVersionsCentrally
byla zavedena v .NET 7. Nastavením souboru true
Directory.Packages.props v kořenovém adresáři úložiště můžete spravovat běžné závislosti v projektech z jednoho umístění. Přidejte verze pro běžné závislosti balíčků pomocí PackageVersion
položek v souboru Directory.Packages.props . V jednotlivých souborech projektu pak můžete vynechat Version
atributy ze všech PackageReference
položek, které odkazují na centrálně spravované balíčky.
Příklad souboru Directory.Packages.props :
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
...
<ItemGroup>
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="7.0.0" />
</ItemGroup>
Soubor jednotlivého projektu:
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration" />
</ItemGroup>
Další informace najdete v tématu správa centrálních balíčků (CPM).
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 true
upozornění NETSDK1186
na sestavení .
<PropertyGroup>
<UseMauiEssentials>true</UseMauiEssentials>
</PropertyGroup>
ValidateExecutableReferencesMatchSelfContained
Vlastnost ValidateExecutableReferencesMatchSelfContained
lze použít k zakázání chyb souvisejících se spustitelnými odkazy na projekt. Pokud .NET zjistí, že samostatný spustitelný projekt odkazuje na spustitelný projekt závislý na rozhraní nebo naopak, generuje chyby NETSDK1150 a NETSDK1151. Chcete-li těmto chybám zabránit, pokud je odkaz úmyslný, nastavte ValidateExecutableReferencesMatchSelfContained
vlastnost na false
.
<PropertyGroup>
<ValidateExecutableReferencesMatchSelfContained>false</ValidateExecutableReferencesMatchSelfContained>
</PropertyGroup>
WindowsSdkPackageVersion
Vlastnost WindowsSdkPackageVersion
lze použít k přepsání verze balíčku cílení sady Windows SDK. Tato vlastnost byla zavedena v .NET 5 a nahrazuje použití FrameworkReference
položky pro tento účel.
<PropertyGroup>
<WindowsSdkPackageVersion>10.0.19041.18</WindowsSdkPackageVersion>
</PropertyGroup>
Poznámka:
Nedoporučujeme přepisovat verzi sady Windows SDK, protože balíčky cílení sady Windows SDK jsou součástí sady .NET 5+ SDK. Pokud chcete odkazovat na nejnovější balíček sady Windows SDK, aktualizujte svou verzi sady .NET SDK. Tato vlastnost by se měla používat jen ve výjimečných případech, jako je použití balíčků preview nebo přepsání verze C#/WinRT.
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 by hodnota byla 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.
Testování vlastností souvisejících s projektem
Následující vlastnosti nástroje MSBuild jsou popsány v této části:
- IsTestProject
- IsTestingPlatformApplication
- Povolit[NugetPackageNameWithoutDots]
- EnableAspireTesting
- EnablePlaywright
- EnableMSTestRunner
- EnableNUnitRunner
- GenerateTestingPlatformEntryPoint
- TestingPlatformCaptureOutput
- TestingPlatformCommandLineArguments
- TestingPlatformDotnetTestSupport
- TestingPlatformShowTestsFailure
- TestingExtensionsProfile
- UseVSTest
IsTestProject
Vlastnost IsTestProject
označuje, že projekt je testovací projekt. Pokud je tato vlastnost nastavena na true
, ověření, zda projekt odkazuje na samostatný spustitelný soubor je zakázán. Důvodem je to, že testovací projekty mají rozhraní API, která obvykle OutputType
Exe
volají v odkazovaném spustitelném souboru, a ne se snaží spustit. Pokud navíc projekt odkazuje na projekt, na který IsTestProject
je nastavený true
, testovací projekt se neověří jako spustitelný odkaz.
Tato vlastnost je potřebná hlavně pro dotnet test
scénář a nemá žádný vliv při použití vstest.console.exe.
Poznámka:
Pokud váš projekt určuje sadu MSTest SDK, nemusíte tuto vlastnost nastavit. Nastaví se automaticky. Podobně je tato vlastnost nastavena automaticky pro projekty, které odkazují na balíček NuGet Microsoft.NET.Test.Sdk propojený s VSTest.
IsTestingPlatformApplication
Pokud váš projekt odkazuje na balíček Microsoft.Testing.Platform.MSBuild , nastavení IsTestingPlatformApplication
na true
(což je také výchozí hodnota, pokud není zadána) provede následující:
- Vygeneruje vstupní bod do testovacího projektu.
- Vygeneruje konfigurační soubor.
- Zjistí rozšíření.
Nastavením vlastnosti zakážete false
tranzitivní závislost na balíčku.
Tranzitivní závislost je, když se projekt, který odkazuje na jiný projekt, který odkazuje na daný balíček, chová, jako by odkazoval na balíček. Tuto vlastnost false
byste obvykle nastavili v netestovacím projektu, který odkazuje na testovací projekt. Další informace najdete v tématu chyba CS8892.
Pokud váš testovací projekt odkazuje na MSTest, NUnit nebo xUnit, tato vlastnost je nastavena na stejnou hodnotu jako EnableMSTestRunner, EnableNUnitRunner
Povolit[NugetPackageNameWithoutDots]
Pomocí vlastnosti se vzorem Enable[NugetPackageNameWithoutDots]
povolte nebo zakažte rozšíření Microsoft.Testing.Platform.
Pokud chcete například povolit rozšíření výpisu stavu systému (balíček NuGet Microsoft.Testing.Extensions.CrashDump), nastavte EnableMicrosoftTestingExtensionsCrashDump
hodnotu true
.
Další informace naleznete v tématu Povolení nebo zakázání rozšíření.
EnableAspireTesting
Pokud používáte sadu SDK projektu MSTest, můžete pomocí EnableAspireTesting
vlastnosti přenést všechny závislosti a výchozí using
direktivy, které potřebujete pro testování pomocí Aspire
a MSTest
. Tato vlastnost je k dispozici v MSTest 3.4 a novějších verzích.
Další informace naleznete v tématu Testování pomocí rozhraní .NET Aspire.
EnablePlaywright
Pokud používáte sadu SDK projektu MSTest, můžete pomocí EnablePlaywright
vlastnosti přenést všechny závislosti a výchozí using
direktivy, které potřebujete pro testování pomocí Playwright
a MSTest
. Tato vlastnost je k dispozici v MSTest 3.4 a novějších verzích.
Další informace naleznete v tématu Playwright.
EnableMSTestRunner
Tato EnableMSTestRunner
vlastnost povolí nebo zakáže použití msTest runneru. MSTest runner je jednoduchá a přenosná alternativa k VSTest. Tato vlastnost je k dispozici v MSTest 3.2 a novějších verzích.
Poznámka:
Pokud váš projekt určuje sadu MSTest SDK, nemusíte tuto vlastnost nastavit. Nastaví se automaticky.
EnableNUnitRunner
Tato EnableNUnitRunner
vlastnost povolí nebo zakáže použití spouštěče NUnit. NUnit runner je lehká a přenosná alternativa KSTest. Tato vlastnost je k dispozici v NUnit3TestAdapter ve verzi 5.0 a novější.
GenerateTestingPlatformEntryPoint
GenerateTestingPlatformEntryPoint
Nastavením vlastnosti zakážete false
automatické generování vstupního bodu programu v testovacím projektu MSTest, NUnit nebo xUnit. Tuto vlastnost false
můžete chtít nastavit při ručním definování vstupního bodu nebo při odkazování na testovací projekt ze spustitelného souboru, který má také vstupní bod.
Další informace najdete v tématu chyba CS8892.
Chcete-li řídit generování vstupního bodu v projektu VSTest, použijte GenerateProgramFile
vlastnost.
TestingPlatformCaptureOutput
Vlastnost TestingPlatformCaptureOutput
řídí, zda všechny výstupy konzoly, které testovací spustitelné zápisy jsou zachyceny a skryty uživateli při použití dotnet test
ke spuštění Microsoft.Testing.Platform
testů. Ve výchozím nastavení je výstup konzoly skrytý. Tento výstup obsahuje banner, informace o verzi a formátované testovací informace. Nastavte tuto vlastnost tak, aby false
se tyto informace zobrazovaly společně s výstupem NÁSTROJE MSBuild.
Další informace najdete v tématu Zobrazení kompletního výstupu platformy.
TestingPlatformCommandLineArguments
Vlastnost TestingPlatformCaptureOutput
umožňuje zadat argumenty příkazového řádku do testovací aplikace, když použijete dotnet test
ke spouštění Microsoft.Testing.Platform
testů. Následující fragment kódu souboru projektu ukazuje příklad.
<PropertyGroup>
...
<TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>
TestingPlatformDotnetTestSupport
Tato TestingPlatformDotnetTestSupport
vlastnost umožňuje určit, zda se VSTest používá při použití dotnet test
ke spouštění testů. Pokud tuto vlastnost nastavíte na true
, VSTest je zakázáno a všechny Microsoft.Testing.Platform
testy jsou spouštěny přímo.
Pokud máte řešení, které obsahuje projekty testů VSTest a projekty MSTest, NUnit nebo XUnit, měli byste provést jedno volání na režim (to znamená, dotnet test
že neproběhne testy z VSTest i novější platformy v jednom volání).
TestingPlatformShowTestsFailure
Tato TestingPlatformShowTestsFailure
vlastnost umožňuje určit, jestli se při spuštění dotnet test
testů hlásí jedna chyba nebo všechny chyby v neúspěšném testu. Ve výchozím nastavení se selhání testů shrnují do souboru .log a do nástroje MSBuild se hlásí jedno selhání na jeden testovací projekt. Pokud chcete zobrazit chyby na neúspěšný test, nastavte tuto vlastnost do true
souboru projektu.
TestingExtensionsProfile
Při použití sady SDK projektu MSTest umožňuje vlastnost vybrat profil, TestingExtensionsProfile
který se má použít. V následující tabulce jsou uvedené povolené hodnoty.
Hodnota | Popis |
---|---|
Default |
Povolí doporučená rozšíření pro tuto verzi msTest.SDK. |
None |
Nejsou povolena žádná rozšíření. |
AllMicrosoft |
Povolte všechna rozšíření dodávaná Microsoftem (včetně rozšíření s omezující licencí). |
Další informace naleznete v profilu MSTest runner.
UseVSTest
UseVSTest
Nastavte vlastnost na true
přepnutí z MSTest runneru na VSTest runner při použití sady SDK projektu MSTest.
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.
Hodnota | Význam |
---|---|
AppLocal |
Složka spustitelného souboru aplikace |
AppRelative |
Cesta vzhledem ke spustitelnému souboru aplikace podle specifikace AppHostRelativeDotNet |
EnvironmentVariables |
Hodnota proměnných DOTNET_ROOT[_<arch>] prostředí |
Global |
Registrovaná a výchozí globální umístění instalace |
Tato vlastnost byla zavedena v .NET 9.
AppHostRelativeDotNet
Tato AppHostRelativeDotNet
vlastnost umožňuje zadat relativní cestu ke spustitelnému souboru aplikace, aby vyhledala instalaci .NET, když je nakonfigurovaná.
AppHostRelativeDotNet
Nastavení vlastnosti znamená, že AppHostDotNetSearch
je AppRelative
. Tato vlastnost má vliv pouze na spustitelný soubor vytvořený při publikování, nikoli sestavení.
<PropertyGroup>
<AppHostRelativeDotNet>./relative/path/to/runtime</AppHostRelativeDotNet>
</PropertyGroup>
Tato vlastnost byla zavedena v .NET 9.
EnableComHosting
Vlastnost EnableComHosting
označuje, že sestavení poskytuje server COM.
EnableComHosting
Nastavení také true
znamená, že EnableDynamicLoading je true
.
<PropertyGroup>
<EnableComHosting>True</EnableComHosting>
</PropertyGroup>
Další informace naleznete v tématu Zveřejnění komponent .NET modelu COM.
EnableDynamicLoading
Vlastnost EnableDynamicLoading
označuje, že sestavení je dynamicky načtená komponenta. Komponentou může být knihovna MODELU COM nebo jiná knihovna než COM, kterou lze použít z nativního hostitele nebo použít jako modul plug-in. Nastavení této vlastnosti má true
následující účinky:
- Vygeneruje se soubor .runtimeconfig.json .
-
RollForward je nastaven na
LatestMinor
hodnotu . - Odkazy NuGet se kopírují místně.
<PropertyGroup>
<EnableDynamicLoading>true</EnableDynamicLoading>
</PropertyGroup>
Vygenerované vlastnosti souboru
Následující vlastnosti se týkají kódu ve vygenerovaných souborech:
DisableImplicitNamespaceImports
Vlastnost DisableImplicitNamespaceImports
lze použít k zakázání implicitních importů oboru názvů v projektech Visual Basic, které cílí na .NET 6 nebo novější verzi. Implicitní obory názvů jsou výchozí obory názvů, které se importují globálně v projektu jazyka Visual Basic. Nastavte tuto vlastnost tak, aby true
zakázala implicitní importy oborů názvů.
<PropertyGroup>
<DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>
</PropertyGroup>
Implicitní úpravy
Vlastnost ImplicitUsings
lze použít k povolení a zakázání implicitních global using
direktiv v projektech C#, které cílí na .NET 6 nebo novější verzi a C# 10 nebo novější. Pokud je tato funkce povolená, sada .NET SDK přidává global using
direktivy pro sadu výchozích oborů názvů na základě typu sady SDK projektu. Nastavte tuto vlastnost na true
nebo enable
povolit implicitní global using
direktivy. Chcete-li zakázat implicitní global using
direktivy, odeberte vlastnost nebo ji nastavte na false
nebo disable
.
<PropertyGroup>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
Poznámka:
Šablony pro nové projekty C#, které cílí na 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 Compile
Reference
o dva běžné typy položek. Sada .NET SDK zpřístupní následující další typy položek:
U těchto položek můžete použít libovolný ze standardních atributů položky, Include
například a Update
. Slouží Include
k přidání nové položky a použití Update
k úpravě existující položky. Často se například Update
používá k úpravě položky, která byla implicitně přidána sadou .NET SDK.
AssemblyMetadata
Položka AssemblyMetadata
určuje atribut sestavení páru AssemblyMetadataAttribute klíč-hodnota. Metadata Include
se stanou klíčem a Value
metadata se stanou hodnotou.
<ItemGroup>
<AssemblyMetadata Include="Serviceable" Value="True" />
</ItemGroup>
InternalsVisibleTo
Položka InternalsVisibleTo
vygeneruje InternalsVisibleToAttribute atribut sestavení pro zadané přátelské sestavení.
<ItemGroup>
<InternalsVisibleTo Include="MyProject.Tests" />
</ItemGroup>
Pokud je známé sestavení podepsáno, můžete zadat volitelná Key
metadata pro zadání jeho úplného veřejného klíče. Pokud nezadáte Key
metadata a $(PublicKey)
je k dispozici, použije se tento klíč. Jinak se do atributu nepřidá žádný veřejný klíč.
FrameworkReference
Položka FrameworkReference
definuje odkaz na sdílenou architekturu .NET.
Atribut Include
určuje ID architektury.
Fragment kódu souboru projektu v následujícím příkladu odkazuje na sdílenou architekturu Microsoft.AspNetCore.App.
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
PackageReference
Položka PackageReference
definuje odkaz na balíček NuGet.
Atribut Include
určuje ID balíčku. Atribut Version
určuje verzi nebo rozsah verzí. Informace o tom, jak zadat minimální verzi, maximální verzi, rozsah nebo přesnou shodu, naleznete v tématu Rozsahy verzí.
Fragment kódu souboru projektu v následujícím příkladu odkazuje na balíček System.Runtime .
<ItemGroup>
<PackageReference Include="System.Runtime" Version="4.3.0" />
</ItemGroup>
Prostředky závislostí můžete řídit také pomocí metadat, jako PrivateAssets
je .
<ItemGroup>
<PackageReference Include="Contoso.Utility.UsefulStuff" Version="3.6.0">
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>
Další informace naleznete v tématu Odkazy na balíčky v souborech projektu.
TrimmerRootAssembly
Položka TrimmerRootAssembly
umožňuje vyloučit sestavení z oříznutí. Oříznutí je proces odebrání nepoužívaných částí modulu runtime z zabalené aplikace. V některých případech může oříznutí nesprávně odebrat požadované odkazy.
Následující kód XML vyloučí System.Security
sestavení z oříznutí.
<ItemGroup>
<TrimmerRootAssembly Include="System.Security" />
</ItemGroup>
Další informace najdete v tématu Možnosti oříznutí.
Použití
Položka Using
umožňuje globálně zahrnout obor názvů do projektu C#, abyste nemuseli přidávat direktivu using
pro obor názvů v horní části zdrojových souborů. Tato položka je podobná Import
položce, kterou lze použít pro stejný účel v projektech jazyka Visual Basic. Tato vlastnost je dostupná od verze .NET 6.
<ItemGroup>
<Using Include="My.Awesome.Namespace" />
</ItemGroup>
Položku můžete také použít Using
k definování globálních using <alias>
direktiv a using static <type>
direktiv.
<ItemGroup>
<Using Include="My.Awesome.Namespace" Alias="Awesome" />
</ItemGroup>
Příklad:
-
<Using Include="Microsoft.AspNetCore.Http.Results" Alias="Results" />
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í. Povolené hodnoty jsou PreserveNewest
, které kopírují pouze položku, pokud se změnila, Always
což vždy kopíruje položku a Never
, která položku nikdy nekopíruje. Z hlediska výkonu je vhodnější, PreserveNewest
protože umožňuje přírůstkové sestavení.
<ItemGroup>
<None Update="appsettings.Development.json" CopyToOutputDirectory="PreserveNewest" CopyToPublishDirectory="PreserveNewest" />
</ItemGroup>
LinkBase
U položky mimo adresář projektu a jeho podadresáře používá cíl publikování metadata odkazu položky k určení, kam se má položka zkopírovat.
Link
také 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
.