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 generování informací o sestavení

GenerateAssemblyCompanyAttribute

Tato vlastnost určuje, zda Company vlastnost generuje AssemblyCompanyAttribute pro sestavení. Výchozí hodnota je true.

<PropertyGroup>
  <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
</PropertyGroup>

GenerateAssemblyConfigurationAttribute

Tato vlastnost určuje, zda Configuration vlastnost generuje AssemblyConfigurationAttribute pro sestavení. Výchozí hodnota je true.

<PropertyGroup>
  <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
</PropertyGroup>

GenerateAssemblyCopyrightAttribute

Tato vlastnost určuje, zda Copyright vlastnost generuje AssemblyCopyrightAttribute pro sestavení. Výchozí hodnota je true.

<PropertyGroup>
  <GenerateAssemblyCopyrightAttribute>false</GenerateAssemblyCopyrightAttribute>
</PropertyGroup>

GenerateAssemblyDescriptionAttribute

Tato vlastnost určuje, zda Description vlastnost generuje AssemblyDescriptionAttribute pro sestavení. Výchozí hodnota je true.

<PropertyGroup>
  <GenerateAssemblyDescriptionAttribute>false</GenerateAssemblyDescriptionAttribute>
</PropertyGroup>

GenerateAssemblyFileVersionAttribute

Tato vlastnost určuje, zda FileVersion vlastnost generuje AssemblyFileVersionAttribute pro sestavení. Výchozí hodnota je true.

<PropertyGroup>
  <GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>
</PropertyGroup>

GenerateAssemblyInfo

Řídí AssemblyInfo generování atributu pro projekt. 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.

Když GenerateAssemblyInfo je hodnota true , vlastnosti projektu se transformují na AssemblyInfo atributy. V následující tabulce jsou uvedeny vlastnosti projektu, které generují atributy, a vlastnosti, které mohou tuto generaci zakázat:

Vlastnost Atribut Vlastnost, která se má zakázat
Company AssemblyCompanyAttribute GenerateAssemblyCompanyAttribute
Configuration AssemblyConfigurationAttribute GenerateAssemblyConfigurationAttribute
Copyright AssemblyCopyrightAttribute GenerateAssemblyCopyrightAttribute
Description AssemblyDescriptionAttribute GenerateAssemblyDescriptionAttribute
FileVersion AssemblyFileVersionAttribute GenerateAssemblyFileVersionAttribute
InformationalVersion AssemblyInformationalVersionAttribute GenerateAssemblyInformationalVersionAttribute
Product AssemblyProductAttribute GenerateAssemblyProductAttribute
AssemblyTitle AssemblyTitleAttribute GenerateAssemblyTitleAttribute
AssemblyVersion AssemblyVersionAttribute GenerateAssemblyVersionAttribute
NeutralLanguage NeutralResourcesLanguageAttribute GenerateNeutralResourcesLanguageAttribute

Poznámky k těmto nastavením:

  • AssemblyVersion a FileVersion Výchozí hodnota $(Version) bez přípony. Například pokud $(Version) je 1.2.3-beta.4 , pak hodnota by byla 1.2.3 .
  • InformationalVersion Výchozí hodnota je $(Version) .
  • Pokud $(SourceRevisionId) je vlastnost přítomna, je připojena k InformationalVersion . Toto chování můžete zakázat pomocí IncludeSourceRevisionInInformationalVersion .
  • Copyrighta Description vlastnosti 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 --configuration možnosti dotnet pří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 .NET 5 (a .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 GenerateAssemblyInfo na false . To vám umožní zachovat soubor AssemblyInfo .
  • Migrujte nastavení v AssemblyInfo souboru do souboru projektu a odstraňte AssemblyInfo soubor.

GenerateAssemblyInformationalVersionAttribute

Tato vlastnost určuje, zda InformationalVersion vlastnost generuje AssemblyInformationalVersionAttribute pro sestavení. Výchozí hodnota je true.

<PropertyGroup>
  <GenerateAssemblyInformationalVersionAttribute>false</GenerateAssemblyInformationalVersionAttribute>
</PropertyGroup>

GenerateAssemblyProductAttribute

Tato vlastnost určuje, zda Product vlastnost generuje AssemblyProductAttribute pro sestavení. Výchozí hodnota je true.

<PropertyGroup>
  <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
</PropertyGroup>

GenerateAssemblyTitleAttribute

Tato vlastnost určuje, zda AssemblyTitle vlastnost generuje AssemblyTitleAttribute pro sestavení. Výchozí hodnota je true.

<PropertyGroup>
  <GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
</PropertyGroup>

GenerateAssemblyVersionAttribute

Tato vlastnost určuje, zda AssemblyVersion vlastnost generuje AssemblyVersionAttribute pro sestavení. Výchozí hodnota je true.

<PropertyGroup>
  <GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
</PropertyGroup>

GeneratedAssemblyInfoFile

Vlastnost 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>

GenerateNeutralResourcesLanguageAttribute

Tato vlastnost určuje, zda NeutralLanguage vlastnost generuje NeutralResourcesLanguageAttribute pro sestavení. Výchozí hodnota je true.

<PropertyGroup>
  <GenerateNeutralResourcesLanguageAttribute>false</GenerateNeutralResourcesLanguageAttribute>
</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>

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

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,0 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,0 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

ErrorOnDuplicatePublishOutputFilesvlastnost má vztah k tomu, zda sada SDK generuje chybu NETSDK1148, když MSBuild detekuje duplicitní soubory v výstupu publikování, ale nemůže určit, které soubory se mají odebrat. Nastavte ErrorOnDuplicatePublishOutputFiles vlastnost na hodnotu, false Pokud nechcete, aby se vygenerovala chyba.

<PropertyGroup>
  <ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>
</PropertyGroup>

Tato vlastnost byla představena v rozhraní .NET 6.

Publikovatelné

IsPublishableVlastnost umožňuje Publish spuštění cíle. Tato vlastnost má vliv pouze na procesy, které používají . * soubory proj a Publish cíl, jako je například příkaz dotnet Publish . neovlivňuje publikování v Visual Studio, které používá PublishOnly cíl. Výchozí hodnota je true.

Tato vlastnost je užitečná, pokud spouštíte dotnet publish v souboru řešení, protože umožňuje automatický výběr projektů, které by měly být publikovány.

<PropertyGroup>
  <IsPublishable>false</IsPublishable>
</PropertyGroup>

PreserveCompilationContext

PreserveCompilationContextVlastnost umožňuje sestavené nebo publikované aplikaci zkompilovat více kódu za běhu pomocí stejných nastavení, která byla použita v době sestavování. Sestavení, na která se odkazuje v čase sestavení, se zkopírují do podadresáře ref adresáře output. Názvy referenčních sestavení jsou uloženy v .deps.jsaplikace v souboru spolu s možnostmi předaných kompilátoru. Tyto informace můžete načíst pomocí DependencyContext.CompileLibraries DependencyContext.CompilationOptions vlastností a.

tato funkce se většinou používá interně ASP.NET Core MVC a stránky razor k podpoře kompilace souborů Razor v době běhu.

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

PreserveCompilationReferences

PreserveCompilationReferencesVlastnost je podobná vlastnosti PreserveCompilationContext , s tím rozdílem, že zkopíruje pouze odkazovaná sestavení do adresáře pro publikování a nikoli .deps.jsv souboru.

<PropertyGroup>
  <PreserveCompilationReferences>true</PreserveCompilationReferences>
</PropertyGroup>

Další informace najdete v tématu Vlastnosti sady Razor SDK.

Dopředné obnovení

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

<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

RuntimeFrameworkVersionVlastnost určuje verzi modulu runtime, která má být použita při publikování. Zadejte verzi modulu runtime:

<PropertyGroup>
  <RuntimeFrameworkVersion>5.0.7</RuntimeFrameworkVersion>
</PropertyGroup>

Při publikování aplikace závislé na rozhraní tato hodnota určuje minimální požadovanou verzi. Při publikování samostatné aplikace Tato hodnota určuje přesně požadovanou verzi.

RuntimeIdentifier

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

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

RuntimeIdentifiers

RuntimeIdentifiersVlastnost umožňuje určit seznam identifikátorů modulu runtime (identifikátorů RID) oddělených středníky pro projekt. Tuto vlastnost použijte v případě, že potřebujete publikovat více modulů runtime. RuntimeIdentifiers se používá v čase obnovení, aby se zajistilo, že jsou správné prostředky v grafu.

Tip

RuntimeIdentifier (jednotné) může poskytovat rychlejší sestavení, pokud je potřeba jenom jeden modul runtime.

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

UseAppHost

UseAppHostVlastnost určuje, zda je pro nasazení vytvořen nativní spustitelný soubor. Pro samostatně obsažená nasazení je vyžadován nativní spustitelný soubor.

V rozhraní .NET Core 3,0 a novějších verzích je ve výchozím nastavení vytvořen spustitelný soubor závislý na rozhraní. Nastavte UseAppHost vlastnost na hodnotu false pro zakázání generování spustitelného souboru.

<PropertyGroup>
  <UseAppHost>false</UseAppHost>
</PropertyGroup>

Další informace o nasazení naleznete v tématu nasazení aplikace .NET.

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

možnosti kompilátoru C# lze také zadat jako MSBuild vlastnosti v souboru projektu. Další informace naleznete v tématu Možnosti kompilátoru C#.

EmbeddedResourceUseDependentUponConvention

EmbeddedResourceUseDependentUponConventionVlastnost určuje, zda jsou názvy souborů manifestu prostředku generovány z informací o typu ve zdrojových souborech, které jsou umístěny společně se soubory prostředků. Například pokud je Form1. resx ve stejné složce jako Form1. cs a EmbeddedResourceUseDependentUponConvention je nastaven na true , vygenerovaný soubor . Resources převezme svůj název od prvního typu, který je definován v souboru Form1. cs. Například pokud MyNamespace.Form1 je první typ definovaný v souboru Form1. cs, vygenerovaný název souboru je MyNamespace. Form1. Resources.

Poznámka

LogicalNameV případě, že ManifestResourceName DependentUpon jsou pro položku zadána metadata, EmbeddedResource vygenerovaný název souboru manifestu pro tento soubor prostředků je založen na těchto metadatech.

Ve výchozím nastavení je v novém projektu .NET Tato vlastnost nastavena na true . Pokud false LogicalName je pro položku v souboru projektu nastavena na, a ne, nebo, je ManifestResourceName DependentUpon EmbeddedResource název souboru manifestu prostředku založen na kořenovém oboru názvů pro projekt a relativní cestě k souboru souboru . resx . Další informace naleznete v tématu jak jsou pojmenovány soubory manifestu prostředků.

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

Vlastnosti zahrnutí výchozích položek

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

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

AnalysisLevelVlastnost umožňuje určit úroveň analýzy kódu. Například pokud chcete mít přístup k analyzátorům kódu ve verzi Preview, nastavte AnalysisLevel na preview .

Výchozí hodnota:

  • Pokud je projekt cílen na rozhraní .NET 5,0 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.
<PropertyGroup>
  <AnalysisLevel>preview</AnalysisLevel>
</PropertyGroup>

V následující tabulce jsou uvedeny dostupné možnosti.

Hodnota Význam
latest Použijí se nejnovější analyzátory kódu, které byly vydány. Tato možnost je výchozí.
preview Používají se nejnovější analyzátory kódu, a to i v případě, že jsou ve verzi Preview.
5.0 Použije se sada pravidel, která byla povolena pro vydání .NET 5,0, i v případě, že jsou k dispozici novější pravidla.
5 Použije se sada pravidel, která byla povolena pro vydání .NET 5,0, i v případě, že jsou k dispozici novější pravidla.

Poznámka

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

Počínaje rozhraním .NET 5,0 je sada .NET SDK dodávána se všemi pravidly kvality kódu "CA". Ve výchozím nastavení jsou pro upozornění sestavení povolena pouze některá pravidla . AnalysisModeVlastnost umožňuje přizpůsobit sadu pravidel, která jsou ve výchozím nastavení povolená. Můžete buď přepnout do výkonnějšího (odsouhlasení) režimu analýzy nebo přizpůsobování příkonzervativního (výslovného)ho režimu analýzy. Například pokud chcete povolit všechna pravidla ve výchozím nastavení jako upozornění sestavení, nastavte hodnotu na AllEnabledByDefault .

<PropertyGroup>
  <AnalysisMode>AllEnabledByDefault</AnalysisMode>
</PropertyGroup>

V následující tabulce jsou uvedeny dostupné možnosti.

Hodnota Význam
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á.
AllEnabledByDefault Agresivní nebo výslovný režim, ve kterém jsou všechna pravidla ve výchozím nastavení povolená, když jsou upozornění buildu. Můžete selektivně odsouhlasit jednotlivá pravidla, abyste je zakázali.
AllDisabledByDefault Konzervativní nebo výslovný režim, kde všechna pravidla jsou ve výchozím nastavení zakázaná. Pokud je chcete povolit, můžete si selektivně odhlásit na jednotlivá pravidla.

Poznámka

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.

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,0 nebo novější. 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

Poznámka

Tato funkce je v současné době experimentální a může se měnit mezi verzemi rozhraní .NET 5 a .NET 6.

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

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 , aby bylo možné vytvořit novou jazykovou verzi v false režimu invariantní globalizace.

<PropertyGroup>
  <PredefinedCulturesOnly>false</PredefinedCulturesOnly>
</PropertyGroup>

Další informace najdete v tématu Vytvoření jazykové verze a mapování případů v režimu invariantní globalizace.

RetainVMGarbageCollection

Vlastnost konfiguruje systém uvolňování paměti tak, aby se odstraněné segmenty paměti daly na pohotovostní seznam pro RetainVMGarbageCollection budoucí použití nebo je uvolnit. Nastavení hodnoty na říká systému uvolňování paměti, aby true segmenty přepsaly na pohotovostní seznam. Další informace najdete v tématu Zachování virtuálního počítače.

<PropertyGroup>
  <RetainVMGarbageCollection>true</RetainVMGarbageCollection>
</PropertyGroup>

ServerGarbageCollection

Vlastnost ServerGarbageCollection konfiguruje, jestli aplikace používá uvolňování paměti pracovní stanice nebo uvolňování paměti serveru. Nastavte hodnotu na true pro použití uvolňování paměti serveru. Další informace najdete v tématu Pracovní stanice a server.

<PropertyGroup>
  <ServerGarbageCollection>true</ServerGarbageCollection>
</PropertyGroup>

ThreadPoolMaxThreads

Vlastnost ThreadPoolMaxThreads 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

Vlastnost ThreadPoolMinThreads 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

Vlastnost TieredCompilation konfiguruje, jestli kompilátor za běhu (JIT) používá vrstvené kompilace. Pokud chcete zakázat false vrstvenou kompilaci, nastavte hodnotu na . Další informace najdete v tématu o vrstvené kompilaci.

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

TieredCompilationQuickJit

Vlastnost TieredCompilationQuickJit konfiguruje, jestli kompilátor JIT používá rychlý JIT. Pokud chcete zakázat rychlý false JIT, nastavte hodnotu na . Další informace najdete v tématu Rychlý JIT.

<PropertyGroup>
  <TieredCompilationQuickJit>false</TieredCompilationQuickJit>
</PropertyGroup>

TieredCompilationQuickJitForLoops

Vlastnost TieredCompilationQuickJitForLoops konfiguruje, jestli kompilátor JIT používá rychlý JIT u metod, které obsahují smyčky. Nastavte hodnotu na , true pokud chcete povolit rychlý JIT u metod, které obsahují smyčky. Další informace najdete v tématu Rychlé JIT pro smyčky.

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

Referenční vlastnosti

Následující MSBuild jsou uvedená v této části:

AssetTargetFallback

Vlastnost umožňuje určit další kompatibilní verze rozhraní pro odkazy na projekty a AssetTargetFallback NuGet balíčky. Pokud například zadáte závislost balíčku pomocí , ale tento balíček neobsahuje prostředky, které jsou kompatibilní s projektem , vlastnost PackageReference TargetFramework se AssetTargetFallback zobrazí. Kompatibilita odkazovaného balíčku se znovu prověří 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 verzí cílové architektury.

<PropertyGroup>
  <AssetTargetFallback>net461</AssetTargetFallback>
</PropertyGroup>

DisableImplicitFrameworkReferences

Vlastnost DisableImplicitFrameworkReferences řídí implicitní položky při FrameworkReference cílení na .NET Core 3.0 a novější verze. Při cílení na .NET Core 2.1 nebo .NET Standard 2.0 a starší verze řídí implicitní položky PackageReference pro balíčky v metabalíku. (Metabalíček 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, jako jsou a System System.Core při cílení na .NET Framework.

Pokud chcete zakázat implicitní položky true nebo položky FrameworkReference PackageReference, nastavte tuto vlastnost na . Pokud tuto vlastnost nastavíte na , můžete přidat explicitní odkazy pouze na architektury true nebo balíčky, které potřebujete.

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

Obnovením odkazovaného balíčku se nainstalují všechny jeho přímé závislosti a všechny závislosti těchto závislostí. Obnovení balíčků můžete přizpůsobit zadáním vlastností, jako jsou a RestorePackagesPath RestoreIgnoreFailedSources . Další informace o těchto a dalších vlastnostech najdete v tématu restore target.

<PropertyGroup>
  <RestoreIgnoreFailedSource>true</RestoreIgnoreFailedSource>
</PropertyGroup>

ValidateExecutableReferencesMatchSelfContained

Vlastnost lze použít k zakázání chyb souvisejících s odkazy na spustitelný ValidateExecutableReferencesMatchSelfContained projekt. Pokud .NET zjistí, že samostatný spustitelný projekt odkazuje na spustitelný projekt závislý na rozhraní nebo naopak, vygeneruje chyby NETSDK1150 a NETSDK1151. Pokud se chcete těmto chybám vyhnout, pokud je odkaz úmyslný, ValidateExecutableReferencesMatchSelfContained nastavte vlastnost na false .

<PropertyGroup>
  <ValidateExecutableReferencesMatchSelfContained>false</ValidateExecutableReferencesMatchSelfContained>
</PropertyGroup>

WindowsSdkPackageVersion

Vlastnost lze použít k přepsání verze cílového balíčku WindowsSdkPackageVersion Windows SDK. Tato vlastnost byla zavedena 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 sady Windows SDK, protože balíčky pro cílení na sadu Windows SDK jsou součástí sady .NET SDK verze 5 nebo novější. Pokud chcete odkazovat na nejnovější verzi Windows SDK, aktualizujte verzi sady .NET SDK. Tato vlastnost by se měla používat jenom ve výjimečných případech, jako je použití balíčků preview nebo potřeba přepsat verzi C#/WinRT.

Ke spuštění aplikace pomocí příkazu se používají následující dotnet run vlastnosti:

RunArguments

Vlastnost RunArguments definuje argumenty, které se předá aplikaci při spuštění.

<PropertyGroup>
  <RunArguments>-mode dryrun</RunArguments>
</PropertyGroup>

Tip

Pomocí možnosti pro můžete zadat další argumenty, které se předá -- aplikaci. dotnet run

Adresář RunWorkingDirectory

Vlastnost RunWorkingDirectory definuje pracovní adresář pro proces aplikace, ve které se má spustit. Může to být absolutní cesta nebo cesta, která je relativní vzhledem k adresáři projektu. Pokud nezadáte adresář, OutDir použije se jako pracovní adresář.

<PropertyGroup>
  <RunWorkingDirectory>c:\temp</RunWorkingDirectory>
</PropertyGroup>

Následující MSBuild jsou uvedená v této části:

EnableComHosting

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

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

Další informace najdete v tématu Vystavení 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 knihovna bez modelu 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í účinky:

  • Vygeneruje se.runtimeconfig.js soubor s příponou .
  • RollForward je nastavený na LatestMinor .
  • NuGet odkazy se kopírují místně.
<PropertyGroup>
  <EnableDynamicLoading>true</EnableDynamicLoading>
</PropertyGroup>

Vygenerované vlastnosti souboru

Následující vlastnosti se týkají kódu ve vygenerované soubory:

DisableImplicitNamespaceImports

Vlastnost DisableImplicitNamespaceImports lze použít k zakázání implicitního importu oboru názvů v Visual Basic, které cílí na .NET 6 nebo novější verzi. Implicitní obory názvů jsou výchozí obory názvů, které se importuje globálně do Visual Basic projektu. Pokud chcete zakázat implicitní true importy oborů názvů, nastavte tuto vlastnost na .

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

Implicitní použití

Vlastnost lze použít k povolení a zakázání implicitních direktiv v projektech jazyka C#, které cílí na .NET 6 nebo novější ImplicitUsings global using verzi a C# 10.0 nebo novější. Když je tato funkce povolená, sada .NET SDK přidá direktivy pro sadu výchozích oborů názvů na základě global using typu sady SDK projektu. Pokud chcete povolit implicitní true direktivy, enable nastavte tuto vlastnost na global using nebo . Pokud chcete zakázat implicitní global using direktivy, odeberte vlastnost nebo ji nastavte na false .

<PropertyGroup>
  <ImplicitUsings>true</ImplicitUsings>
</PropertyGroup>

Poznámka

Pro nové projekty C#, které cílí na .NET 6 nebo novější, je ve ImplicitUsings true výchozím nastavení nastavená hodnota .

Položky

MSBuild jsou vstupy do systému sestavení. Položky jsou určeny podle jejich typu, což je název prvku. Například a jsou Compile Reference dva běžné typy položek. Následující další typy položek jsou k dispozici sadou .NET SDK:

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.

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 using <alias> a using static <type> .

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

Příklad:

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

Další informace o direktivách a 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 v 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ý, v cestě LinkBase je 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í.

Průzkumník řešení se položka s metadaty LinkBase.

Viz také