referenční informace o MSBuild pro projekty .net SDK
tato stránka je odkazem na MSBuild vlastnosti a položky, které můžete použít ke konfiguraci projektů .net.
Poznámka
tato stránka je nedokončená práce a neobsahuje seznam všech užitečných vlastností MSBuild pro sadu .net SDK. seznam běžných vlastností MSBuild najdete v tématu běžné vlastnosti MSBuild.
Vlastnosti architektury
v této části jsou popsány následující vlastnosti MSBuild:
TargetFramework
TargetFrameworkVlastnost určuje cílovou verzi rozhraní .NET Framework pro aplikaci. Seznam platných monikerů cílového rozhraní Framework naleznete v tématu cílové architektury v projektech ve stylu sady SDK.
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
Další informace naleznete v tématu cílová rozhraní v projektech ve stylu sady SDK.
TargetFramework
Vlastnost použijte, TargetFrameworks Pokud chcete, aby aplikace byla cílena na více platforem. Seznam platných monikerů cílového rozhraní Framework naleznete v tématu cílové architektury v projektech ve stylu sady SDK.
Poznámka
Tato vlastnost je ignorována TargetFramework , pokud je zadáno (jednotné).
<PropertyGroup>
<TargetFrameworks>netcoreapp3.1;net462</TargetFrameworks>
</PropertyGroup>
Další informace naleznete v tématu cílová rozhraní v projektech ve stylu sady SDK.
NetStandardImplicitPackageVersion
Poznámka
Tato vlastnost se vztahuje pouze na projekty používající netstandard1.x . Neplatí pro projekty, které používají netstandard2.x .
Vlastnost použijte NetStandardImplicitPackageVersion , pokud chcete zadat verzi rozhraní, která je nižší než verze Metapackage. Soubor projektu v následujícím příkladu cílí, netstandard1.3 ale používá 1.6.0 verzi NETStandard.Library .
<PropertyGroup>
<TargetFramework>netstandard1.3</TargetFramework>
<NetStandardImplicitPackageVersion>1.6.0</NetStandardImplicitPackageVersion>
</PropertyGroup>
Vlastnosti atributu sestavení
GenerateAssemblyInfo
GenerateAssemblyInfo AssemblyInfo Generování atributu pro projekt řídí vlastnosti. Výchozí hodnota je true. Použijte false k zakázání generování souboru:
<PropertyGroup>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>
Nastavení GeneratedAssemblyInfoFile řídí název generovaného souboru.
Pokud GenerateAssemblyInfo je hodnota true , Vlastnosti projektu související s balíčkem jsou transformovány do atributů sestavení. V následující tabulce jsou uvedeny vlastnosti projektu, které generují atributy. Obsahuje také seznam vlastností, které lze použít k zakázání této generace u jednotlivých atributů, například:
<PropertyGroup>
<GenerateNeutralResourcesLanguageAttribute>false</GenerateNeutralResourcesLanguageAttribute>
</PropertyGroup>
| MSBuild – vlastnost | Atribut Assembly | Vlastnost pro zakázání generování atributu |
|---|---|---|
Company |
AssemblyCompanyAttribute | GenerateAssemblyCompanyAttribute |
Configuration |
AssemblyConfigurationAttribute | GenerateAssemblyConfigurationAttribute |
Copyright |
AssemblyCopyrightAttribute | GenerateAssemblyCopyrightAttribute |
Description |
AssemblyDescriptionAttribute | GenerateAssemblyDescriptionAttribute |
FileVersion |
AssemblyFileVersionAttribute | GenerateAssemblyFileVersionAttribute |
InformationalVersion |
AssemblyInformationalVersionAttribute | GenerateAssemblyInformationalVersionAttribute |
Product |
AssemblyProductAttribute | GenerateAssemblyProductAttribute |
AssemblyTitle |
AssemblyTitleAttribute | GenerateAssemblyTitleAttribute |
AssemblyVersion |
AssemblyVersionAttribute | GenerateAssemblyVersionAttribute |
NeutralLanguage |
NeutralResourcesLanguageAttribute | GenerateNeutralResourcesLanguageAttribute |
Poznámky k těmto nastavením:
AssemblyVersionaFileVersionVýchozí hodnota$(Version)bez přípony. Například pokud$(Version)je1.2.3-beta.4, pak hodnota by byla1.2.3.InformationalVersionVýchozí hodnota je$(Version).- Pokud
$(SourceRevisionId)je vlastnost přítomna, je připojena kInformationalVersion. Toto chování můžete zakázat pomocíIncludeSourceRevisionInInformationalVersion. CopyrightaDescriptionvlastnosti se také používají pro NuGet metadat.Configuration, což je výchozí nastaveníDebug, je sdíleno se všemi cíli MSBuild. Můžete ho nastavit přes--configurationmožnostidotnetpříkazů, například dotnet Pack.- některé vlastnosti se používají při vytváření balíčku NuGet. Další informace najdete v tématu Vlastnosti balíčku.
Migrace z .NET Framework
.NET Framework šablon projektů vytvoří soubor kódu s nastavením těchto atributů informací o sestavení. Soubor se obvykle nachází na adrese .\Properties\AssemblyInfo.cs nebo .\Properties\AssemblyInfo.vb. Projekty ve stylu sady SDK generují tento soubor pro vás na základě nastavení projektu. Nemůžete mít obojí. Při přenosu kódu do rozhraní .NET 5 (nebo .NET Core 3,1) nebo novější proveďte jednu z následujících akcí:
- Zakažte generování dočasného souboru kódu, který obsahuje atributy informací o sestavení, nastavením
GenerateAssemblyInfonafalsev souboru projektu. To vám umožní zachovat soubor AssemblyInfo . - Migrujte nastavení v
AssemblyInfosouboru do souboru projektu a pak tentoAssemblyInfosoubor odstraňte.
GeneratedAssemblyInfoFile
GeneratedAssemblyInfoFileVlastnost definuje relativní nebo absolutní cestu generovaného souboru s informacemi o sestavení. Ve výchozím nastavení se jedná o soubor s názvem [Project-name]. AssemblyInfo. [cs | VB] v $(IntermediateOutputPath) adresáři (obvykle v obj).
<PropertyGroup>
<GeneratedAssemblyInfoFile>assemblyinfo.cs</GeneratedAssemblyInfoFile>
</PropertyGroup>
Vlastnosti balíčku
Můžete zadat vlastnosti, například, PackageId , PackageVersion PackageIcon , Title a Description pro popis balíčku, který je vytvořen z projektu. Informace o těchto a dalších vlastnostech naleznete v tématu targeting pack.
<PropertyGroup>
...
<PackageId>ClassLibDotNetStandard</PackageId>
<Version>1.0.0</Version>
<Authors>John Doe</Authors>
<Company>Contoso</Company>
</PropertyGroup>
Vlastnosti související s publikováním
v této části jsou popsány následující vlastnosti MSBuild:
- AppendRuntimeIdentifierToOutputPath
- AppendTargetFrameworkToOutputPath
- CopyLocalLockFileAssemblies
- EnablePackageValidation
- ErrorOnDuplicatePublishOutputFiles
- GenerateRuntimeConfigurationFiles
- Publikovatelné
- PreserveCompilationContext
- PreserveCompilationReferences
- Dopředné obnovení
- RuntimeFrameworkVersion
- RuntimeIdentifier
- RuntimeIdentifiers
- SatelliteResourceLanguages
- UseAppHost
AppendTargetFrameworkToOutputPath
AppendTargetFrameworkToOutputPathVlastnost určuje, zda je cílový moniker rozhraní .NET (TFM) připojen k výstupní cestě (která je definována pomocí OutputPath). Sada .NET SDK automaticky připojí cílovou architekturu a, je-li k dispozici, identifikátor modulu runtime do výstupní cesty. Nastavením AppendTargetFrameworkToOutputPath false zabráníte připojení TFM k výstupní cestě. Nicméně bez TFM ve výstupní cestě může více artefaktů sestavení navzájem přepsáno.
Například pro aplikaci .NET 5 se výstupní cesta změní z bin\Debug\net5.0 na na bin\Debug s následujícím nastavením:
<PropertyGroup>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
</PropertyGroup>
AppendRuntimeIdentifierToOutputPath
AppendRuntimeIdentifierToOutputPathVlastnost určuje, zda je identifikátor modulu runtime (RID) připojen k výstupní cestě. Sada .NET SDK automaticky připojí cílovou architekturu a, je-li k dispozici, identifikátor modulu runtime do výstupní cesty. Nastavení AppendRuntimeIdentifierToOutputPath , které false zabrání připojení identifikátoru RID k výstupní cestě.
Například pro aplikaci .NET 5 a identifikátor RID se win10-x64 výstupní cesta změní z bin\Debug\net5.0\win10-x64 na na bin\Debug\net5.0 s následujícím nastavením:
<PropertyGroup>
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
</PropertyGroup>
CopyLocalLockFileAssemblies
CopyLocalLockFileAssembliesVlastnost je užitečná pro projekty modulů plug-in, které mají závislosti na jiných knihovnách. pokud nastavíte tuto vlastnost na true , všechny závislosti balíčků NuGet se zkopírují do výstupního adresáře. To znamená, že můžete použít výstup dotnet build pro spuštění modulu plug-in na jakémkoli počítači.
<PropertyGroup>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>
Tip
Alternativně můžete použít dotnet publish k publikování knihovny tříd. Další informace najdete v tématu dotnet Publish.
ErrorOnDuplicatePublishOutputFiles
Vlastnost souvisí s tím, jestli sada SDK generuje chybu NETSDK1148, když MSBuild detekuje duplicitní soubory ve výstupu publikování, ale nemůže určit, které soubory se ErrorOnDuplicatePublishOutputFiles mají odebrat. Pokud nechcete, aby se chyba vygenerovala, ErrorOnDuplicatePublishOutputFiles false nastavte vlastnost na .
<PropertyGroup>
<ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>
</PropertyGroup>
Tato vlastnost byla zavedena v rozhraní .NET 6.
EnablePackageValidation
Vlastnost EnablePackageValidation umožňuje řadu ověření balíčku za pack úlohou. Další informace najdete v tématu ověření balíčku.
<PropertyGroup>
<EnablePackageValidation>true</EnablePackageValidation>
</PropertyGroup>
Tato vlastnost byla zavedena v rozhraní .NET 6.
GenerateRuntimeConfigurationFiles
Vlastnost určuje, jestli se možnosti konfigurace modulu runtime zkopírují ze souboru GenerateRuntimeConfigurationFiles runtimeconfig.template.json do souboru [appname]. runtimeconfig.json. Pro aplikace, které vyžadují soubor runtimeconfig.json, to znamená pro ty, jejichž je OutputType , se tato vlastnost ve výchozím nastavení používá jako Exe true .
<PropertyGroup>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
</PropertyGroup>
IsPublishable
Vlastnost IsPublishable umožňuje Publish spuštění cíle. Tato vlastnost má vliv pouze na procesy, které používají . * proj a Publish cíl, například příkaz dotnet publish. Nemá vliv na publikování v Visual Studio, který používá PublishOnly cíl. Výchozí hodnota je true.
Tato vlastnost je užitečná, když spustíte soubor řešení, protože umožňuje automatický výběr projektů, dotnet publish které se mají publikovat.
<PropertyGroup>
<IsPublishable>false</IsPublishable>
</PropertyGroup>
PreserveCompilationContext
Vlastnost PreserveCompilationContext 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 ref výstupního adresáře. Názvy referenčních sestavení jsou uloženy v souboru .deps.json aplikace spolu s možnostmi předaly kompilátoru. Tyto informace můžete načíst pomocí DependencyContext.CompileLibraries vlastností DependencyContext.CompilationOptions a .
Tuto funkci většinou interně používá ASP.NET Core MVC a Razor Pages pro podporu kompilace souborů Razor za běhu.
<PropertyGroup>
<PreserveCompilationContext>true</PreserveCompilationContext>
</PropertyGroup>
PreserveCompilationReferences
Vlastnost PreserveCompilationReferences je podobná vlastnosti PreserveCompilationContext s tím rozdílem, že pouze zkopíruje odkazovaná sestavení do adresáře publikování, a ne do souboru .deps.json.
<PropertyGroup>
<PreserveCompilationReferences>true</PreserveCompilationReferences>
</PropertyGroup>
Další informace najdete v tématu o vlastnostech sady Razor SDK.
RollForward
Vlastnost RollForward určuje, jak aplikace zvolí modul runtime, pokud je k dispozici více verzí modulu runtime. Tato hodnota je výstupem nastavení .runtimeconfig.json. rollForward
<PropertyGroup>
<RollForward>LatestMinor</RollForward>
</PropertyGroup>
Nastavte RollForward na jednu z následujících hodnot:
| Hodnota | Popis |
|---|---|
Minor |
Výchozí hodnota , pokud není zadána. Pokud chybí požadovaná podverze, převeďte ji nahoru na nejnižší nižší verzi. Pokud je k dispozici požadovaná dílčí verze, LatestPatch zásada se použije. |
Major |
Pokud chybí požadovaná hlavní verze, převeďte se k nejbližší dostupné vyšší hlavní verzi a nejnižší podverzi. Pokud je k dispozici požadovaná hlavní verze, pak se Minor zásada použije. |
LatestPatch |
Převeďte na nejvyšší verzi opravy. Tato hodnota zakáže dílčí verzi s přesměrováním. |
LatestMinor |
Převeďte do nejvyšší dílčí verze, i když je k dispozici požadovaná dílčí verze. |
LatestMajor |
Převeďte na nejvyšší hlavní a nejvyšší dílčí verzi, i když je k dispozici požadovaná hlavní verze. |
Disable |
Nezadávejte předem pouze vazby na určenou verzi. Tyto zásady se nedoporučují pro obecné použití, protože tato zásada zabraňuje tomu, aby bylo možné předem předávat nejnovější opravy. Tato hodnota se doporučuje jenom pro testování. |
Další informace najdete v tématu Řízení chování při přeposílání.
RuntimeFrameworkVersion
Vlastnost RuntimeFrameworkVersion určuje verzi modulu runtime, která se má použít při publikování. Zadejte verzi modulu runtime:
<PropertyGroup>
<RuntimeFrameworkVersion>5.0.7</RuntimeFrameworkVersion>
</PropertyGroup>
Při publikování aplikace závislé na rozhraní určuje tato hodnota minimální požadovanou verzi. Při publikování samostatné aplikace tato hodnota určuje přesnou požadovanou verzi.
Identifikátor modulu runtime
Vlastnost RuntimeIdentifier umožňuje zadat jeden identifikátor modulu runtime (RID) pro projekt. Rid umožňuje publikování samostatného nasazení.
<PropertyGroup>
<RuntimeIdentifier>ubuntu.16.04-x64</RuntimeIdentifier>
</PropertyGroup>
Identifikátory modulu runtime
Vlastnost umožňuje zadat středníkem oddělený seznam identifikátorů RuntimeIdentifiers modulu runtime (RID) pro projekt. Tuto vlastnost použijte, pokud potřebujete publikovat pro více běhových prostředí. RuntimeIdentifiers se používá při obnovení, aby se zajistilo, že jsou v grafu správné prostředky.
Tip
RuntimeIdentifier (jednotné) může poskytovat rychlejší sestavení, pokud se vyžaduje pouze jeden modul runtime.
<PropertyGroup>
<RuntimeIdentifiers>win10-x64;osx.10.11-x64;ubuntu.16.04-x64</RuntimeIdentifiers>
</PropertyGroup>
SatelliteResourceLanguages
Vlastnost umožňuje určit jazyky, pro které chcete zachovat sestavení satelitních prostředků SatelliteResourceLanguages během sestavování a publikování. Mnoho NuGet balíčky obsahují lokalizovaná satelitní sestavení prostředků v hlavním balíčku. Pro projekty, které odkazují na tyto NuGet balíčky, které nevyžadují lokalizované prostředky, mohou lokalizovaná sestavení zbytečně nafouknout velikost výstupu sestavení a publikování. Přidáním vlastnosti do souboru projektu se do výstupu sestavení a publikování zahrnou pouze lokalizovaná sestavení pro jazyky, které SatelliteResourceLanguages zadáte. Například v následujícím souboru projektu budou zachována pouze satelitní sestavení prostředků angličtiny (USA).
<PropertyGroup>
<SatelliteResourceLanguages>en-US</SatelliteResourceLanguages>
</PropertyGroup>
Poznámka
Tuto vlastnost je nutné zadat v projektu, který odkazuje na NuGet s lokalizovanými satelitními sestaveními prostředků.
UseAppHost
Vlastnost určuje, jestli se pro nasazení vytvoří nativní UseAppHost spustitelný soubor. Nativní spustitelný soubor je vyžadován pro samostatná nasazení.
V .NET Core 3.0 a novějších verzích se ve výchozím nastavení vytvoří spustitelný soubor závislý na rozhraní. Pokud chcete UseAppHost zakázat generování false spustitelného souboru, nastavte vlastnost na .
<PropertyGroup>
<UseAppHost>false</UseAppHost>
</PropertyGroup>
Další informace o nasazení najdete v tématu Nasazení aplikace .NET.
Vlastnosti související s kompilací
Následující MSBuild jsou uvedená v této části:
- Soubor dokumentace
- EmbeddedResourceUseDependentUponConvention
- EnablePreviewFeatures
- GenerateDocumentationFile
- GenerateRequiresPreviewFeaturesAttribute
- OptimizeImplicitlyTriggeredBuild
Možnosti kompilátoru jazyka C#, například a , lze zadat LangVersion MSBuild vlastnosti v souboru Nullable projektu. Další informace najdete v tématu Možnosti kompilátoru jazyka C#.
EmbeddedResourceUseDependentUponConvention
Vlastnost EmbeddedResourceUseDependentUponConvention definuje, jestli se názvy souborů manifestu prostředků generují z informací o typu ve zdrojových souborech, které jsou umístěné spolu se soubory prostředků. Pokud je například form1.resx ve stejné složce jako Form1.cs a je nastaven na , vygenerovaný soubor .resources převezme název z prvního typu definovaného v EmbeddedResourceUseDependentUponConvention souboru true Form1.cs. Pokud je například MyNamespace.Form1 první typ definovaný v souboru Form1.cs, vygenerovaný název souboru je MyNamespace.Form1.resources.
Poznámka
Pokud je pro položku zadaná metadata , nebo , je vygenerovaný název souboru manifestu pro tento soubor prostředků založený LogicalName ManifestResourceName na tomto DependentUpon EmbeddedResource metadatu.
Ve výchozím nastavení je v novém projektu .NET tato vlastnost nastavená na true . Pokud je pro položku v souboru projektu nastavená hodnota a není zadána metadata , nebo , je název souboru manifestu prostředku založen na kořenovém oboru názvů projektu a relativní cestě k souboru k souboru false LogicalName ManifestResourceName DependentUpon EmbeddedResource .resx. Další informace najdete v tématu Jak mají soubory manifestu prostředků název.
<PropertyGroup>
<EmbeddedResourceUseDependentUponConvention>true</EmbeddedResourceUseDependentUponConvention>
</PropertyGroup>
EnablePreviewFeatures
Vlastnost definuje, jestli váš projekt závisí na všech rozhraních API nebo sestaveních, EnablePreviewFeatures která jsou dekorována RequiresPreviewFeaturesAttribute atributem . Tento atribut slouží k označení, že rozhraní API nebo sestavení používá funkce, které jsou považovány za funkce ve verzi Preview pro verzi sady SDK, kterou používáte. Funkce ve verzi Preview nejsou podporované a v budoucí verzi je možné je odebrat. Pokud chcete povolit používání funkcí preview, nastavte vlastnost na True .
<PropertyGroup>
<EnablePreviewFeatures>True</EnablePreviewFeatures>
</PropertyGroup>
Pokud projekt obsahuje tuto vlastnost nastavenou na , je do souboru True AssemblyInfo.cs přidán následující atribut na úrovni sestavení:
[assembly: RequiresPreviewFeatures]
Analyzátor vás upozorní, pokud se tento atribut nachází u závislostí pro projekty, u kterých EnablePreviewFeatures není nastavená hodnota True .
Autoři knihoven, kteří mají v úmyslu doovat sestavení ve verzi Preview, by měli tuto vlastnost nastavit na True . Pokud sestavení musí být dodáno se kombinaci rozhraní API verze Preview a rozhraní API bez verze Preview, podívejte se níže na část GenerateRequiresPreviewFeaturesAttribute.
Soubor dokumentace
Vlastnost DocumentationFile umožňuje zadat název souboru XML, který obsahuje dokumentaci pro vaši knihovnu. Aby technologie IntelliSense fungovala správně s vaší dokumentací, musí být název souboru stejný jako název sestavení a musí být ve stejném adresáři jako sestavení. Pokud tuto vlastnost nezadáte, ale vlastnost GenerateDocumentationFile nastavíte na , název souboru dokumentace se nastaví jako výchozí název sestavení, ale s příponou true .xml souboru. Z tohoto důvodu je často jednodušší tuto vlastnost vynechat a místo ní použít vlastnost GenerateDocumentationFile.
Pokud zadáte tuto vlastnost, ale vlastnost GenerateDocumentationFile nastavíte na false , kompilátor nevygeneruje soubor dokumentace. Pokud zadáte tuto vlastnost a vyjádřete vlastnost GenerateDocumentationFile, kompilátor vygeneruje soubor dokumentace.
<PropertyGroup>
<DocumentationFile>path/to/file.xml</DocumentationFile>
</PropertyGroup>
GenerateDocumentationFile
Vlastnost GenerateDocumentationFile určuje, zda kompilátor generuje soubor dokumentace XML pro vaši knihovnu. Pokud nastavíte tuto vlastnost na a nezadáte název souboru prostřednictvím vlastnosti DocumentationFile , generovaný 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 true .xml).
<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
Další informace o generování dokumentace z komentářů ke kódu najdete v tématu Dokumentační komentáře XML (C#),Dokumentování kódu pomocí XML (Visual Basic)nebo Dokumentování kódu pomocí XML (F#).
GenerateRequiresPreviewFeaturesAttribute
Vlastnost GenerateRequiresPreviewFeaturesAttribute úzce souvisí s vlastností EnablePreviewFeatures. Pokud vaše knihovna používá funkce preview, ale nechcete, aby bylo celé sestavení označeno atributem , což by vyžadovalo, aby funkce ve verzi Preview povolují uživatelé, nastavte tuto vlastnost RequiresPreviewFeaturesAttribute na False .
<PropertyGroup>
<EnablePreviewFeatures>True</EnablePreviewFeatures>
<GenerateRequiresPreviewFeaturesAttribute>False</GenerateRequiresPreviewFeaturesAttribute>
</PropertyGroup>
Důležité
Pokud nastavíte vlastnost na , musíte si být jistí, že se všechna veřejná rozhraní API, která spoléhají na funkce ve verzi Preview, pomocí GenerateRequiresPreviewFeaturesAttribute False RequiresPreviewFeaturesAttribute .
OptimizeImplicitlyTriggeredBuild
Aby se urychlil čas sestavení, sestavení, která jsou implicitně aktivována Visual Studio přeskočit analýzu kódu, včetně analýzy s možnou hodnotou null. Visual Studio spouští implicitní sestavení při spuštění testů, například. Implicitní sestavení jsou však optimalizována pouze v případě, že není TreatWarningsAsErrors true . Pokud jste TreatWarningsAsErrors nastavili, true ale přesto chcete, aby byla sestavení optimalizovaná implicitně aktivovanými sestaveními, můžete nastavit OptimizeImplicitlyTriggeredBuild na True . Pro vypnutí optimalizace sestavení pro implicitně aktivované sestavení nastavte OptimizeImplicitlyTriggeredBuild na False .
<PropertyGroup>
<OptimizeImplicitlyTriggeredBuild>True</OptimizeImplicitlyTriggeredBuild>
</PropertyGroup>
Vlastnosti zahrnutí výchozích položek
v této části jsou popsány následující vlastnosti MSBuild:
- DefaultExcludesInProjectFolder
- DefaultItemExcludes
- EnableDefaultCompileItems
- EnableDefaultEmbeddedResourceItems
- EnableDefaultItems
- EnableDefaultNoneItems
Další informace najdete v tématu výchozí zahrnutí a vyloučení.
DefaultItemExcludes
Pomocí DefaultItemExcludes Vlastnosti definujte glob vzory pro soubory a složky, které se mají vyloučit z globy include, Exclude a Remove. Ve výchozím nastavení jsou složky ./bin a ./obj vyloučené ze vzorů glob.
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);**/*.myextension</DefaultItemExcludes>
</PropertyGroup>
DefaultExcludesInProjectFolder
Pomocí DefaultExcludesInProjectFolder Vlastnosti definujte vzory glob pro soubory a složky ve složce projektu, které mají být vyloučeny z globy include, Exclude a Remove. Ve výchozím nastavení jsou složky, které začínají tečkou ( . ), jako je například . Git a . vs, vyloučeny ze vzorů glob.
Tato vlastnost je velmi podobná DefaultItemExcludes vlastnosti, s tím rozdílem, že pouze soubory a složky se považují za složku projektu. Pokud glob vzor záměrně neúmyslně odpovídá položkám mimo složku projektu s relativní cestou, použijte DefaultExcludesInProjectFolder namísto DefaultItemExcludes vlastnosti vlastnost.
<PropertyGroup>
<DefaultExcludesInProjectFolder>$(DefaultExcludesInProjectFolder);**/myprefix*/**</DefaultExcludesInProjectFolder>
</PropertyGroup>
EnableDefaultItems
EnableDefaultItemsVlastnost určuje, zda jsou položky kompilace, vložené položky prostředku a None položky implicitně zahrnuty v projektu. Výchozí hodnota je true. Nastavte EnableDefaultItems vlastnost na hodnotu false , chcete-li zakázat veškeré zahrnutí implicitních souborů.
<PropertyGroup>
<EnableDefaultItems>false</EnableDefaultItems>
</PropertyGroup>
EnableDefaultCompileItems
EnableDefaultCompileItemsVlastnost určuje, zda jsou položky kompilace implicitně zahrnuty v projektu. Výchozí hodnota je true. Nastavte EnableDefaultCompileItems vlastnost na hodnotu false pro zakázání implicitního zahrnutí *. cs a dalších souborů jazykové přípony.
<PropertyGroup>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
</PropertyGroup>
EnableDefaultEmbeddedResourceItems
EnableDefaultEmbeddedResourceItemsVlastnost určuje, zda jsou vložené položky prostředků implicitně zahrnuty v projektu. Výchozí hodnota je true. Nastavením EnableDefaultEmbeddedResourceItems vlastnosti na false zakážete implicitní zahrnutí souborů integrovaných prostředků.
<PropertyGroup>
<EnableDefaultEmbeddedResourceItems>false</EnableDefaultEmbeddedResourceItems>
</PropertyGroup>
EnableDefaultNoneItems
EnableDefaultNoneItemsVlastnost určuje, zda None jsou položky (soubory, které nemají žádné role v procesu sestavení) implicitně zahrnuty v projektu. Výchozí hodnota je true. Nastavte EnableDefaultNoneItems vlastnost na hodnotu false pro zakázání implicitního zahrnutí None položek.
<PropertyGroup>
<EnableDefaultNoneItems>false</EnableDefaultNoneItems>
</PropertyGroup>
Vlastnosti analýzy kódu
v této části jsou popsány následující vlastnosti MSBuild:
- AnalysisLevel
- AnalysisLevel<Category>
- AnalysisMode
- AnalysisMode<Category>
- CodeAnalysisTreatWarningsAsErrors
- EnableNETAnalyzers
- EnforceCodeStyleInBuild
AnalysisLevel
AnalysisLevelVlastnost umožňuje určit sadu analyzátorů kódu, které mají být spuštěny v souladu s verzí rozhraní .NET. Každá verze rozhraní .NET Počínaje rozhraním .NET 5 má sadu pravidel analýzy kódu. Z této sady budou pravidla, která jsou ve výchozím nastavení povolena pro tuto verzi, analyzovat váš kód.
Například pokud upgradujete na rozhraní .NET 6, ale nechcete, aby se výchozí sada pravidel analýzy kódu změnila, nastavte AnalysisLevel na 5 .
<PropertyGroup>
<AnalysisLevel>preview</AnalysisLevel>
</PropertyGroup>
V případě potřeby můžete v rozhraní .NET 6 zadat složenou hodnotu pro tuto vlastnost, která také určuje, jak agresivní pravidla mají být povolena. Složené hodnoty mají formu <version>-<mode> , kde <mode> hodnota je jedna z hodnot AnalysisMode . Následující příklad používá verzi Preview analyzátorů kódu a povoluje doporučenou sadu pravidel.
<PropertyGroup>
<AnalysisLevel>preview-recommended</AnalysisLevel>
</PropertyGroup>
Poznámka
Pokud nastavíte AnalysisLevel 5-<mode> nebo 5.0-<mode> a pak nainstalujete sadu .NET 6 SDK a znovu zkompilujete projekt, může se zobrazit neočekávaná upozornění na nové sestavení. Další informace najdete v tématu dotnet/Roslyn-analyzers # 5679.
Výchozí hodnota:
- Pokud je projekt cílen na rozhraní .NET 5 nebo vyšší nebo pokud jste přidali vlastnost AnalysisMode , je výchozí hodnota
latest. - V opačném případě je tato vlastnost vynechána, pokud ji explicitně nepřidáte do souboru projektu.
V následující tabulce jsou uvedeny hodnoty, které můžete zadat.
| Hodnota | Význam |
|---|---|
latest |
Použijí se nejnovější analyzátory kódu, které byly vydány. Tato možnost je výchozí. |
latest-<mode> |
Použijí se nejnovější analyzátory kódu, které byly vydány. <mode>Hodnota určuje, která pravidla jsou povolená. |
preview |
Používají se nejnovější analyzátory kódu, a to i v případě, že jsou ve verzi Preview. |
preview-<mode> |
Používají se nejnovější analyzátory kódu, a to i v případě, že jsou ve verzi Preview. <mode>Hodnota určuje, která pravidla jsou povolená. |
6.0 |
Sada pravidel, která byla k dispozici pro verzi rozhraní .NET 6, je použita, i když jsou k dispozici novější pravidla. |
6.0-<mode> |
Sada pravidel, která byla k dispozici pro verzi rozhraní .NET 6, je použita, i když jsou k dispozici novější pravidla. <mode>Hodnota určuje, která pravidla jsou povolená. |
6 |
Sada pravidel, která byla k dispozici pro verzi rozhraní .NET 6, je použita, i když jsou k dispozici novější pravidla. |
6-<mode> |
Sada pravidel, která byla k dispozici pro verzi rozhraní .NET 6, je použita, i když jsou k dispozici novější pravidla. <mode>Hodnota určuje, která pravidla jsou povolená. |
5.0 |
Sada pravidel, která byla k dispozici pro verzi rozhraní .NET 5, je použita, i když jsou k dispozici novější pravidla. |
5.0-<mode> |
Sada pravidel, která byla k dispozici pro verzi rozhraní .NET 5, je použita, i když jsou k dispozici novější pravidla. <mode>Hodnota určuje, která pravidla jsou povolená. |
5 |
Sada pravidel, která byla k dispozici pro verzi rozhraní .NET 5, je použita, i když jsou k dispozici novější pravidla. |
5-<mode> |
Sada pravidel, která byla k dispozici pro verzi rozhraní .NET 5, je použita, i když jsou k dispozici novější pravidla. <mode>Hodnota určuje, která pravidla jsou povolená. |
Poznámka
- V rozhraní .NET 5 a starších verzích Tato vlastnost ovlivňuje pouze pravidla kvality kódu (CAXXXX). Od rozhraní .NET 6 platí, že pokud nastavíte EnforceCodeStyleInBuild na
true, tato vlastnost ovlivňuje také pravidla stylu kódu (IDEXXXX) . - Pokud nastavíte složené hodnoty pro
AnalysisLevel, nemusíte zadávat AnalysisMode. Nicméně pokud to uděláte,AnalysisLevelmá přednost předAnalysisMode. - tato vlastnost nemá žádný vliv na analýzu kódu v projektech, které neodkazují na sadu SDK projektu, například starší verze .NET Framework projektů, které odkazují na balíček NuGet Microsoft. CodeAnalysis. NetAnalyzers.
AnalysisLevel<Category>
V rozhraní .NET 6 je tato vlastnost stejná jako AnalysisLevel, s tím rozdílem, že se vztahuje pouze na konkrétní kategorii pravidel pro analýzu kódu. Tato vlastnost umožňuje použít pro určitou kategorii jinou verzi analyzátorů kódu nebo povolit nebo zakázat pravidla na jiné úrovni pravidel pro ostatní kategorie. Pokud tuto vlastnost vynecháte pro určitou kategorii pravidel, použije se výchozí hodnota AnalysisLevel . Dostupné hodnoty jsou stejné jako pro AnalysisLevel.
<PropertyGroup>
<AnalysisLevelSecurity>preview</AnalysisLevelSecurity>
</PropertyGroup>
<PropertyGroup>
<AnalysisLevelSecurity>preview-recommended</AnalysisLevelSecurity>
</PropertyGroup>
V následující tabulce je uveden seznam názvů vlastností pro každou kategorii pravidel.
| Název vlastnosti | Kategorie pravidla |
|---|---|
<AnalysisLevelDesign> |
Pravidla návrhu |
<AnalysisLevelDocumentation> |
Pravidla dokumentace |
<AnalysisLevelGlobalization> |
Pravidla globalizace |
<AnalysisLevelInteroperability> |
Přenositelnost pravidel interoperability |
<AnalysisLevelMaintainability> |
Pravidla udržovatelnosti |
<AnalysisLevelNaming> |
Pravidla pojmenování |
<AnalysisLevelPerformance> |
Pravidla výkonu |
<AnalysisLevelSingleFile> |
Pravidla pro aplikace s jedním souborem |
<AnalysisLevelReliability> |
Pravidla spolehlivosti |
<AnalysisLevelSecurity> |
Pravidla zabezpečení |
<AnalysisLevelStyle> |
Všechna pravidla pro styl kódu (IDEXXXX) |
<AnalysisLevelUsage> |
Pravidla používání |
AnalysisMode
Počínaje verzí .NET 5 je sada .NET SDK dodávána se všemi pravidly kvality kódu "CA". Ve výchozím nastavení jsou v každé verzi rozhraní .NET povolena pouze některá pravidla jako upozornění sestavení. AnalysisModeVlastnost umožňuje přizpůsobit sadu pravidel, která jsou ve výchozím nastavení povolená. Můžete buď přepnout do účinnějšího režimu analýzy, kde se můžete odhlásit z pravidel jednotlivě, nebo lépe konzervativní režim analýzy, ve kterém se můžete rozhodnout pro konkrétní pravidla. Například pokud chcete povolit všechna pravidla jako upozornění sestavení, nastavte hodnotu na All .
<PropertyGroup>
<AnalysisMode>All</AnalysisMode>
</PropertyGroup>
V následující tabulce jsou uvedeny dostupné hodnoty možností v rozhraní .NET 5 a .NET 6. Jsou uvedené ve vzestupném pořadí podle počtu pravidel, která povolují.
| Hodnota .NET 6 + | Hodnota .NET 5 | Význam |
|---|---|---|
None |
AllDisabledByDefault |
Všechna pravidla jsou zakázaná. Můžete selektivně odsouhlasit s jednotlivými pravidly a povolit je. |
Default |
Default |
výchozí režim, kde jsou určitá pravidla povolená jako upozornění sestavení, jsou určitá pravidla povolená jako Visual Studio návrhů IDE a zbývající jsou zakázaná. |
Minimum |
– | Další agresivní režim než Default režim. Některé návrhy, které jsou důrazně doporučené pro vynucení sestavení, jsou povoleny jako upozornění sestavení. |
Recommended |
– | Více agresivní režim než Minimum režim, kde je pro upozornění sestavení povoleno více pravidel. |
All |
AllEnabledByDefault |
Všechna pravidla jsou povolena jako upozornění sestavení. Můžete selektivně odsouhlasit jednotlivá pravidla, abyste je zakázali. |
Poznámka
- V rozhraní .NET 5 Tato vlastnost ovlivňuje pouze pravidla kvality kódu (CAXXXX). Od rozhraní .NET 6 platí, že pokud nastavíte EnforceCodeStyleInBuild na
true, tato vlastnost ovlivňuje také pravidla stylu kódu (IDEXXXX) . - Pokud použijete složené hodnoty pro AnalysisLevel, například
<AnalysisLevel>5-recommended</AnalysisLevel>, můžete tuto vlastnost zcela vynechat. Nicméně pokud zadáte obě vlastnosti,AnalysisLevelmá přednost předAnalysisMode. - Pokud
AnalysisModeje nastaven naAllEnabledByDefaultaAnalysisLevelje nastaven na5nebo5.0a pak nainstalujete sadu .NET 6 SDK a znovu zkompilujete projekt, může se zobrazit neočekávaná upozornění na nové sestavení. Další informace najdete v tématu dotnet/Roslyn-analyzers # 5679. - tato vlastnost nemá žádný vliv na analýzu kódu v projektech, které neodkazují na sadu SDK projektu, například starší verze .NET Framework projektů, které odkazují na balíček NuGet Microsoft. CodeAnalysis. NetAnalyzers.
AnalysisMode<Category>
V rozhraní .NET 6 je tato vlastnost stejná jako AnalysisMode, s tím rozdílem, že se vztahuje pouze na konkrétní kategorii pravidel pro analýzu kódu. Tato vlastnost umožňuje povolit nebo zakázat pravidla na jiné úrovni pravidel pro ostatní kategorie pravidel. Pokud tuto vlastnost vynecháte pro určitou kategorii pravidel, použije se výchozí hodnota AnalysisMode . Dostupné hodnoty jsou stejné jako pro AnalysisMode.
<PropertyGroup>
<AnalysisModeSecurity>All</AnalysisModeSecurity>
</PropertyGroup>
V následující tabulce je uveden seznam názvů vlastností pro každou kategorii pravidel.
| Název vlastnosti | Kategorie pravidla |
|---|---|
<AnalysisModeDesign> |
Pravidla návrhu |
<AnalysisModeDocumentation> |
Pravidla dokumentace |
<AnalysisModeGlobalization> |
Pravidla globalizace |
<AnalysisModeInteroperability> |
Přenositelnost pravidel interoperability |
<AnalysisModeMaintainability> |
Pravidla udržovatelnosti |
<AnalysisModeNaming> |
Pravidla pojmenování |
<AnalysisModePerformance> |
Pravidla výkonu |
<AnalysisModeSingleFile> |
Pravidla pro aplikace s jedním souborem |
<AnalysisModeReliability> |
Pravidla spolehlivosti |
<AnalysisModeSecurity> |
Pravidla zabezpečení |
<AnalysisModeStyle> |
Všechna pravidla pro styl kódu (IDEXXXX) |
<AnalysisModeUsage> |
Pravidla používání |
CodeAnalysisTreatWarningsAsErrors
CodeAnalysisTreatWarningsAsErrorsVlastnost umožňuje nakonfigurovat, zda by měla být upozornění analýzy kvality kódu (CAxxxx) zpracována jako upozornění a přerušeno sestavení. Použijete-li -warnaserror příznak při sestavování projektů, budou upozornění analýzy kvality kódu .NET také považována za chyby. pokud nechcete, aby upozornění analýzy kvality kódu byla považována za chyby, můžete nastavit CodeAnalysisTreatWarningsAsErrors vlastnost MSBuild na hodnotu false v souboru projektu.
<PropertyGroup>
<CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors>
</PropertyGroup>
EnableNETAnalyzers
Analýza kvality kódu .NET je ve výchozím nastavení povolená pro projekty, které cílí na .NET 5 nebo novější verzi. Pokud vyvíjíte pomocí .NET 5 + SDK, můžete povolit analýzu kódu .NET pro projekty ve stylu sady SDK, které jsou cíleny na starší verze rozhraní .NET, nastavením EnableNETAnalyzers vlastnosti na true . Chcete-li zakázat analýzu kódu v jakémkoli projektu, nastavte tuto vlastnost na false .
<PropertyGroup>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
</PropertyGroup>
Poznámka
Tato vlastnost se vztahuje konkrétně na předdefinované analyzátory v sadě .NET 5 + SDK. neměl by se používat při instalaci balíčku pro analýzu kódu NuGet.
EnforceCodeStyleInBuild
Analýza stylu kódu .NET je ve výchozím nastavení zakázána při sestavení pro všechny projekty .NET. Můžete povolit analýzu stylu kódu pro projekty .NET nastavením EnforceCodeStyleInBuild vlastnosti na true .
<PropertyGroup>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
</PropertyGroup>
Všechna pravidla stylu kódu konfigurovaná jako upozornění nebo chyby se spustí při sestavení a porušení sestav.
Vlastnosti konfigurace modulu runtime
můžete nakonfigurovat některá chování za běhu zadáním MSBuild vlastností v souboru projektu aplikace. Informace o jiných způsobech konfigurace chování za běhu najdete v tématu nastavení konfigurace modulu runtime.
- ConcurrentGarbageCollection
- InvariantGlobalization
- PredefinedCulturesOnly
- RetainVMGarbageCollection
- ServerGarbageCollection
- ThreadPoolMaxThreads
- ThreadPoolMinThreads
- TieredCompilation
- TieredCompilationQuickJit
- TieredCompilationQuickJitForLoops
ConcurrentGarbageCollection
ConcurrentGarbageCollectionVlastnost konfiguruje, zda je povoleno uvolňování paměti na pozadí (souběžně) . Nastavte hodnotu na false Zakázat uvolňování paměti na pozadí. Další informace najdete v tématu GC na pozadí.
<PropertyGroup>
<ConcurrentGarbageCollection>false</ConcurrentGarbageCollection>
</PropertyGroup>
InvariantGlobalization
InvariantGlobalizationVlastnost nakonfiguruje, jestli aplikace běží v režimu invariantní globalizace , což znamená, že nemá přístup k datům specifickým pro jazykovou verzi. Nastavte hodnotu pro true spuštění v režimu invariantní globalizace. Další informace naleznete v tématu invariantní režim.
<PropertyGroup>
<InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>
PredefinedCulturesOnly
V rozhraní .NET 6 a novějších verzích PredefinedCulturesOnly vlastnost určuje, zda aplikace mohou vytvořit jiné jazykové verze než invariantní jazykovou verzi v případě, že je povolený režim invariantní režim . Výchozí formát je true. Nastavte hodnotu na, false aby povolovala vytváření jakékoli nové jazykové verze v režimu globalizace a invariantní.
<PropertyGroup>
<PredefinedCulturesOnly>false</PredefinedCulturesOnly>
</PropertyGroup>
Další informace naleznete v tématu vytváření a mapování velkých a malých písmen v režimu globalizace a invariantní.
RetainVMGarbageCollection
RetainVMGarbageCollectionVlastnost konfiguruje systém uvolňování paměti pro vložení odstraněných segmentů paměti v pohotovostním seznamu pro budoucí použití nebo uvolnění. Nastavením hodnoty určíte true , aby systém uvolňování paměti umístil segmenty do seznamu pohotovostních hodnot. Další informace najdete v tématu uchování virtuálního počítače.
<PropertyGroup>
<RetainVMGarbageCollection>true</RetainVMGarbageCollection>
</PropertyGroup>
ServerGarbageCollection
ServerGarbageCollectionVlastnost konfiguruje, zda aplikace používá uvolňování paměti pracovní stanice nebo uvolňování paměti serveru. Nastavte hodnotu na true použít uvolňování paměti serveru. Další informace najdete v tématu pracovní stanice vs. Server.
<PropertyGroup>
<ServerGarbageCollection>true</ServerGarbageCollection>
</PropertyGroup>
ThreadPoolMaxThreads
ThreadPoolMaxThreadsVlastnost konfiguruje maximální počet vláken pro fond pracovních vláken. Další informace najdete v tématu maximální počet vláken.
<PropertyGroup>
<ThreadPoolMaxThreads>20</ThreadPoolMaxThreads>
</PropertyGroup>
ThreadPoolMinThreads
ThreadPoolMinThreadsVlastnost konfiguruje minimální počet vláken pro fond pracovních vláken. Další informace najdete v tématu minimální počet vláken.
<PropertyGroup>
<ThreadPoolMinThreads>4</ThreadPoolMinThreads>
</PropertyGroup>
TieredCompilation
TieredCompilationVlastnost určuje, zda kompilátor JIT (just-in-time) používá vrstvenou kompilaci. Nastavte hodnotu na false Zakázat vrstvenou kompilaci. Další informace najdete v tématu vrstvená kompilace.
<PropertyGroup>
<TieredCompilation>false</TieredCompilation>
</PropertyGroup>
TieredCompilationQuickJit
TieredCompilationQuickJitVlastnost konfiguruje, zda kompilátor JIT používá rychlou JIT. Nastavením hodnoty na false zakážete rychlou JIT. Další informace najdete v tématu rychlá JIT.
<PropertyGroup>
<TieredCompilationQuickJit>false</TieredCompilationQuickJit>
</PropertyGroup>
TieredCompilationQuickJitForLoops
TieredCompilationQuickJitForLoopsVlastnost konfiguruje, zda kompilátor JIT používá rychlou JIT v metodách, které obsahují smyčky. Nastavte hodnotu na, true Chcete-li povolit rychlou JIT v metodách, které obsahují smyčky. Další informace najdete v tématu rychlá JIT pro smyčky.
<PropertyGroup>
<TieredCompilationQuickJitForLoops>true</TieredCompilationQuickJitForLoops>
</PropertyGroup>
Vlastnosti odkazu
v této části jsou popsány následující vlastnosti MSBuild:
- AssetTargetFallback
- DisableImplicitFrameworkReferences
- Vlastnosti související s obnovením
- ValidateExecutableReferencesMatchSelfContained
AssetTargetFallback
AssetTargetFallbackvlastnost umožňuje zadat další kompatibilní verze rozhraní pro odkazy na projekt a balíčky NuGet. Pokud například zadáte závislost balíčku pomocí, PackageReference ale tento balíček neobsahuje prostředky, které jsou kompatibilní s vašimi projekty TargetFramework , AssetTargetFallback vlastnost se dostane do hry. Kompatibilita odkazovaného balíčku je znovu zkontrolována pomocí každé cílové architektury, která je určena v AssetTargetFallback . Tato vlastnost nahrazuje nepoužívané vlastnosti PackageTargetFallback .
Můžete nastavit AssetTargetFallback vlastnost na jednu nebo více cílových verzí rozhraní .NET Framework.
<PropertyGroup>
<AssetTargetFallback>net461</AssetTargetFallback>
</PropertyGroup>
DisableImplicitFrameworkReferences
DisableImplicitFrameworkReferencesVlastnost řídí implicitní FrameworkReference položky při cílení na .net Core 3,0 a novější verze. Při cílení na rozhraní .NET Core 2,1 nebo .NET Standard 2,0 a dřívějších verzí ovládací prvky vycházejí z implicitních PackageReference položek do balíčků ve Metapackage. (Metapackage je balíček založený na architektuře, který se skládá jenom z závislostí na dalších balíčcích.) Tato vlastnost také ovládá implicitní odkazy jako System a System.Core při cílení na .NET Framework.
Nastavte tuto vlastnost na true , chcete-li zakázat implicitní FrameworkReference nebo PackageReference položky. Pokud nastavíte tuto vlastnost na true , můžete přidat explicitní odkazy pouze na rozhraní nebo balíčky, které potřebujete.
<PropertyGroup>
<DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
</PropertyGroup>
Vlastnosti související s obnovením
Při obnovení odkazovaného balíčku se nainstaluje všechny jeho přímé závislosti a všechny závislosti těchto závislostí. Obnovení balíčku můžete přizpůsobit zadáním vlastností, jako jsou RestorePackagesPath a RestoreIgnoreFailedSources . Další informace o těchto a dalších vlastnostech naleznete v tématu Restore Target.
<PropertyGroup>
<RestoreIgnoreFailedSource>true</RestoreIgnoreFailedSource>
</PropertyGroup>
ValidateExecutableReferencesMatchSelfContained
ValidateExecutableReferencesMatchSelfContainedVlastnost 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, v uvedeném pořadí. Chcete-li předejít těmto chybám, pokud je odkaz záměrné, nastavte ValidateExecutableReferencesMatchSelfContained vlastnost na hodnotu false .
<PropertyGroup>
<ValidateExecutableReferencesMatchSelfContained>false</ValidateExecutableReferencesMatchSelfContained>
</PropertyGroup>
WindowsSdkPackageVersion
WindowsSdkPackageVersionvlastnost se dá použít k přepsání verze Windows SDKho cílového balíčku. Tato vlastnost byla představena v rozhraní .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 Windows SDK, protože Windows SDK s cílovými balíčky jsou součástí sady .net 5 + SDK. místo toho chcete-li odkazovat na nejnovější balíček Windows SDK, aktualizujte svou verzi sady .net SDK. Tato vlastnost by měla být použita pouze ve výjimečných případech, jako je například použití balíčků verze Preview nebo nutnosti přepsat verzi jazyka C#/WinRT.
Vlastnosti související s spuštěním
Následující vlastnosti se používají ke spuštění aplikace s dotnet run příkazem:
RunArguments
RunArgumentsVlastnost definuje argumenty, které jsou předány aplikaci při spuštění.
<PropertyGroup>
<RunArguments>-mode dryrun</RunArguments>
</PropertyGroup>
Tip
Můžete zadat další argumenty, které se mají předat aplikaci, pomocí -- Možnosti pro dotnet run .
RunWorkingDirectory
RunWorkingDirectoryVlastnost definuje pracovní adresář pro spuštění procesu aplikace. Může se jednat o absolutní cestu nebo cestu, která je relativní vzhledem k adresáři projektu. Pokud adresář nezadáte, OutDir použije se jako pracovní adresář.
<PropertyGroup>
<RunWorkingDirectory>c:\temp</RunWorkingDirectory>
</PropertyGroup>
Vlastnosti související s hostováním
v této části jsou popsány následující vlastnosti MSBuild:
EnableComHosting
EnableComHostingVlastnost označuje, že sestavení poskytuje server com. Nastavení na EnableComHosting true také znamená, že EnableDynamicLoading je true .
<PropertyGroup>
<EnableComHosting>True</EnableComHosting>
</PropertyGroup>
Další informace najdete v tématu vystavení komponent .NET v modelu COM.
EnableDynamicLoading
EnableDynamicLoadingVlastnost označuje, že sestavení je dynamicky načtená komponenta. Součástí může být Knihovna com nebo knihovna jiného typu než com, kterou lze použít z nativního hostitele nebo použít jako modul plug-in. Nastavení této vlastnosti na true má následující důsledky:
- Vygeneruje se soubor . runtimeconfig. JSON .
- Dopředné obnovení je nastavené na
LatestMinor. - odkazy na NuGet se zkopírují lokálně.
<PropertyGroup>
<EnableDynamicLoading>true</EnableDynamicLoading>
</PropertyGroup>
Vlastnosti generovaného souboru
Následující vlastnosti se týkají kódu v generovaných souborech:
DisableImplicitNamespaceImports
DisableImplicitNamespaceImportsvlastnost se dá použít k zakázání importu implicitního oboru názvů v Visual Basic projektech cílících na rozhraní .net 6 nebo novější verzi. implicitní obory názvů jsou výchozí obory názvů, které jsou importovány globálně v Visual Basic projektu. Nastavte tuto vlastnost na true , chcete-li zakázat importy implicitních oborů názvů.
<PropertyGroup>
<DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>
</PropertyGroup>
ImplicitUsings
ImplicitUsingsVlastnost lze použít k povolení a zakázání implicitních global using direktiv v projektech C#, které cílí na rozhraní .NET 6 nebo novější verze a C# 10 nebo novější verze. Pokud je funkce povolená, sada .NET SDK přidá global using direktivy pro sadu výchozích oborů názvů na základě typu Project SDK. Nastavte tuto vlastnost na true nebo enable , pokud chcete 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 rozhraní .NET 6 nebo novější, jsou ImplicitUsings ve výchozím nastavení nastaveny na enable .
Chcete-li definovat explicitní global using direktivu, přidejte položku using .
Položky
MSBuild položky jsou vstupy do systému sestavení. Položky jsou určeny podle jejich typu, což je název elementu. Například Compile a Reference jsou dva běžné typy položek. Sada .NET SDK zpřístupňuje následující další typy položek:
U těchto položek můžete použít kterýkoli ze standardníchatributů položky , například Include a Update . Slouží Include k přidání nové položky a použití k Update úpravě existující položky. Často se Update například používá k úpravě položky, kterou implicitně přidala sada .NET SDK.
Metadata sestavení
Položka AssemblyMetadata určuje atribut sestavení páru klíč-hodnota. AssemblyMetadataAttribute 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é smyšlné sestavení.
<ItemGroup>
<InternalsVisibleTo Include="MyProject.Tests" />
</ItemGroup>
Je-li smyšlné sestavení podepsáno, můžete Key zadat volitelná metadata a zadat jeho úplný veřejný klíč. Pokud nezadáte metadata a je Key $(PublicKey) k dispozici, použije se tento klíč. Jinak se k atributu nepřidá žádný veřejný klíč.
PackageReference
Položka PackageReference definuje odkaz na NuGet balíček.
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, najdete v tématu Rozsahy verzí.
Fragment 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 také řídit pomocí metadat, jako je PrivateAssets .
<ItemGroup>
<PackageReference Include="Contoso.Utility.UsefulStuff" Version="3.6.0">
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>
Další informace najdete v tématu Odkazy na balíček v souborech projektu.
TrimrRootAssembly
Položka TrimmerRootAssembly umožňuje vyloučit sestavení z ořezávání. Ořezávání je proces odebrání nepoužívaných částí modulu runtime z zabalené aplikace. V některých případech může ořezávání nesprávně odebrat požadované odkazy.
Následující kód XML vyloučí System.Security sestavení z ořezávání.
<ItemGroup>
<TrimmerRootAssembly Include="System.Security" />
</ItemGroup>
Použití
Položka umožňuje globálně zahrnout obor názvů v rámci projektu C#, takže nemusíte přidávat direktivu pro obor názvů na začátek Using using zdrojových souborů. Tato položka se podobá Import položce, kterou lze použít pro stejný účel v Visual Basic projektech. Tato vlastnost je dostupná od verze .NET 6.
<ItemGroup>
<Using Include="My.Awesome.Namespace" />
</ItemGroup>
Položku můžete použít také Using k definování globálních direktiv a using <alias> using static <type> .
<ItemGroup>
<Using Include="My.Awesome.Namespace" Alias="Awesome" />
</ItemGroup>
Například:
<Using Include="Microsoft.AspNetCore.Http.Results" Alias="Results" />Vydáváglobal using Results = global::Microsoft.AspNetCore.Http.Results;<Using Include="Microsoft.AspNetCore.Http.Results" Static="True" />Vydáváglobal using static global::Microsoft.AspNetCore.Http.Results;
Další informace o direktivách a direktivách using s using static <type> aliasy najdete v tématu using – direktiva.
Metadata položky
Kromě standardních atributů MSBuild položekjsou následující značky metadat položek dostupné sadou .NET SDK:
CopyToPublishDirectory
Metadata na MSBuild řídí, kdy se položka CopyToPublishDirectory zkopíruje do adresáře publikování. Povolitelné hodnoty jsou , které kopírují položku pouze v případě, že se změnila, , která vždy zkopíruje položku a , která položku nikdy PreserveNewest Always Never nekopíruje. Z hlediska výkonu je PreserveNewest vhodnější, protože umožňuje přírůstkové sestavení.
<ItemGroup>
<None Update="appsettings.Development.json" CopyToOutputDirectory="PreserveNewest" CopyToPublishDirectory="PreserveNewest" />
</ItemGroup>
Propojení
Pro položku, která je mimo adresář projektu a jeho podadresáře, cíl publikování používá metadata Propojení položky k určení, kam se má položka zkopírovat. Linktaké určuje, jak se položky mimo strom projektu zobrazují v Průzkumník řešení okna Visual Studio.
Pokud není zadaný pro položku, která je mimo Link projektový cone, výchozí hodnota je %(LinkBase)\%(RecursiveDir)%(Filename)%(Extension) . LinkBase umožňuje určit rozumnou základní složku pro položky mimo projektový cone. Hierarchie složek v základní složce je zachována prostřednictvím RecursiveDir . Pokud není zadaný, je v LinkBase cestě Link vynechán.
<ItemGroup>
<Content Include="..\Extras\**\*.cs" LinkBase="Shared"/>
</ItemGroup>
Následující obrázek ukazuje, jak se soubor zahrnutý prostřednictvím globu předchozí položky zobrazí Include v Průzkumník řešení.