MSBuild-referens för .NET SDK-projekt

Den här sidan är en referens för de MSBuild-egenskaper och objekt som du kan använda för att konfigurera .NET-projekt.

Anteckning

Den här sidan är ett pågående arbete och visar inte alla användbara MSBuild-egenskaper för .NET SDK. En lista över vanliga MSBuild-egenskaper finns i Vanliga MSBuild-egenskaper.

Ramverksegenskaper

Följande MSBuild-egenskaper dokumenteras i det här avsnittet:

TargetFramework

Egenskapen TargetFramework anger målramverksversionen för appen. En lista över giltiga målramverksmonikers finns i Målramverk i SDK-liknande projekt.

<PropertyGroup>
  <TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>

Mer information finns i Målramverk i SDK-liknande projekt.

TargetFrameworks

Använd egenskapen TargetFrameworks när du vill att din app ska rikta in sig på flera plattformar. En lista över giltiga målramverksmonikers finns i Målramverk i SDK-liknande projekt.

Anteckning

Den här egenskapen ignoreras om TargetFramework (singular) anges.

<PropertyGroup>
  <TargetFrameworks>netcoreapp3.1;net462</TargetFrameworks>
</PropertyGroup>

Mer information finns i Målramverk i SDK-liknande projekt.

NetStandardImplicitPackageVersion

Anteckning

Den här egenskapen gäller endast för projekt som använder netstandard1.x. Den gäller inte för projekt som använder netstandard2.x.

Använd egenskapen NetStandardImplicitPackageVersion när du vill ange en ramverksversion som är lägre än metapackageversionen. Projektfilen i följande exempel mål netstandard1.3 men använder 1.6.0-versionen av NETStandard.Library.

<PropertyGroup>
  <TargetFramework>netstandard1.3</TargetFramework>
  <NetStandardImplicitPackageVersion>1.6.0</NetStandardImplicitPackageVersion>
</PropertyGroup>

Egenskaper för sammansättningsattribut

GenerateAssemblyInfo

Egenskapen GenerateAssemblyInfo styr AssemblyInfo attributgenereringen för projektet. Standardvärdet är true. Använd false för att inaktivera generering av filen:

<PropertyGroup>
  <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>

Inställningen GeneratedAssemblyInfoFile styr namnet på den genererade filen.

När värdet GenerateAssemblyInfo är trueomvandlas paketrelaterade projektegenskaper till sammansättningsattribut. I följande tabell visas de projektegenskaper som genererar attributen. Den visar även de egenskaper som du kan använda för att inaktivera den generationen per attribut, till exempel:

<PropertyGroup>
  <GenerateNeutralResourcesLanguageAttribute>false</GenerateNeutralResourcesLanguageAttribute>
</PropertyGroup>
EGENSKAPEN MSBuild Sammansättningsattribut Egenskap för att inaktivera attributgenerering
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

Anmärkningar om dessa inställningar:

  • AssemblyVersion och FileVersion standardvärdet $(Version) för utan suffixet. Om är är 1.2.3-beta.4till exempel $(Version) värdet 1.2.3.
  • InformationalVersion standardvärdet för $(Version).
  • Om egenskapen $(SourceRevisionId) finns läggs den till InformationalVersioni . Du kan inaktivera det här beteendet med hjälp av IncludeSourceRevisionInInformationalVersion.
  • Copyright och Description egenskaper används också för NuGet-metadata.
  • Configuration, som standard är Debug, delas med alla MSBuild-mål. Du kan ange det via --configuration alternativet dotnet kommandon, till exempel dotnet pack.
  • Vissa av egenskaperna används när du skapar ett NuGet-paket. Mer information finns i Paketegenskaper.

Migrera från .NET Framework

.NET Framework projektmallar skapar en kodfil med dessa sammansättningsinformationsattribut inställda. Filen finns vanligtvis i .\Properties\AssemblyInfo.cs eller .\Properties\AssemblyInfo.vb. SDK-liknande projekt genererar den här filen åt dig baserat på projektinställningarna. Du kan inte ha båda. När du porterar koden till .NET 5 (eller .NET Core 3.1) eller senare gör du något av följande:

  • Inaktivera genereringen av den tillfälliga kodfilen som innehåller attributen för sammansättningsinformation genom att ange GenerateAssemblyInfo i false projektfilen. På så sätt kan du behålla filen AssemblyInfo .
  • Migrera inställningarna i AssemblyInfo filen till projektfilen och ta sedan bort AssemblyInfo filen.

GeneratedAssemblyInfoFile

Egenskapen GeneratedAssemblyInfoFile definierar den relativa eller absoluta sökvägen för den genererade sammansättningsinformationsfilen. Standardvärdet är en fil med namnet [project-name]. AssemblyInfo. [cs|vb]$(IntermediateOutputPath) i katalogen (vanligtvis obj).

<PropertyGroup>
  <GeneratedAssemblyInfoFile>assemblyinfo.cs</GeneratedAssemblyInfoFile>
</PropertyGroup>

Paketegenskaper

Du kan ange egenskaper som PackageId, PackageVersion, PackageIcon, Titleoch Description för att beskriva paketet som skapas från projektet. Information om dessa och andra egenskaper finns i paketmålet.

<PropertyGroup>
  ...
  <PackageId>ClassLibDotNetStandard</PackageId>
  <Version>1.0.0</Version>
  <Authors>John Doe</Authors>
  <Company>Contoso</Company>
</PropertyGroup>

PackRelease

Egenskapen PackRelease liknar egenskapen PublishRelease , förutom att den ändrar standardbeteendet dotnet packför .

<PropertyGroup>
  <PackRelease>true</PackRelease>
</PropertyGroup>

Följande MSBuild-egenskaper dokumenteras i det här avsnittet:

AppendTargetFrameworkToOutputPath

Egenskapen AppendTargetFrameworkToOutputPath styr om målramverkets moniker (TFM) läggs till i utdatasökvägen (som definieras av OutputPath). .NET SDK lägger automatiskt till målramverket och, om det finns, körningsidentifieraren till utdatasökvägen. Inställning AppendTargetFrameworkToOutputPath för att förhindra att false TFM läggs till i utdatasökvägen. Men utan TFM i utdatasökvägen kan flera byggartefakter skriva över varandra.

För en .NET 5-app ändras till exempel utdatasökvägen från bin\Debug\net5.0 till bin\Debug med följande inställning:

<PropertyGroup>
  <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
</PropertyGroup>

AppendRuntimeIdentifierToOutputPath

Egenskapen AppendRuntimeIdentifierToOutputPath styr om körningsidentifieraren (RID) läggs till i utdatasökvägen. .NET SDK lägger automatiskt till målramverket och, om det finns, körningsidentifieraren till utdatasökvägen. Inställning AppendRuntimeIdentifierToOutputPath för att förhindra att false RID läggs till i utdatasökvägen.

För en .NET 5-app och ett RID för win10-x64ändras till exempel utdatasökvägen från bin\Debug\net5.0\win10-x64 till bin\Debug\net5.0 med följande inställning:

<PropertyGroup>
  <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
</PropertyGroup>

CopyLocalLockFileAssemblies

Egenskapen CopyLocalLockFileAssemblies är användbar för plugin-projekt som har beroenden till andra bibliotek. Om du ställer in den här egenskapen på truekopieras alla NuGet-paketberoenden till utdatakatalogen. Det innebär att du kan använda utdata dotnet build från för att köra plugin-programmet på valfri dator.

<PropertyGroup>
  <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>

Tips

Du kan också använda dotnet publish för att publicera klassbiblioteket. Mer information finns i dotnet publish.

ErrorOnDuplicatePublishOutputFiles

Egenskapen ErrorOnDuplicatePublishOutputFiles relaterar till om SDK genererar felet NETSDK1148 när MSBuild identifierar dubblettfiler i publiceringsutdata, men kan inte avgöra vilka filer som ska tas bort. Ange egenskapen ErrorOnDuplicatePublishOutputFiles till false om du inte vill att felet ska genereras.

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

Den här egenskapen introducerades i .NET 6.

EnablePackageValidation

Egenskapen EnablePackageValidation aktiverar en serie valideringar för paketet efter uppgiften pack . Mer information finns i paketverifiering.

<PropertyGroup>
  <EnablePackageValidation>true</EnablePackageValidation>
</PropertyGroup>

Den här egenskapen introducerades i .NET 6.

GenerateRuntimeConfigDevFile

Från och med .NET 6 SDK genereras inte längre filen [Appname].runtimesettings.dev.json som standard vid kompileringen. Om du fortfarande vill att den här filen ska genereras anger du GenerateRuntimeConfigDevFile egenskapen till true.

<PropertyGroup>
  <GenerateRuntimeConfigDevFile>true</GenerateRuntimeConfigDevFile>
</PropertyGroup>

GenerateRuntimeConfigurationFiles

Egenskapen GenerateRuntimeConfigurationFiles styr om körningskonfigurationsalternativ kopieras från filen runtimeconfig.template.json till filen [appname].runtimeconfig.json . För appar som kräver en runtimeconfig.json-fil, d.v.s . de vars OutputType är Exe, är den här egenskapen som standard true.

<PropertyGroup>
  <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
</PropertyGroup>

GenerateSatelliteAssembliesForCore

Egenskapen GenerateSatelliteAssembliesForCore styr om satellitsammansättningar genereras med hjälp avcsc.exe eller Al.exe (Assembly Linker) i .NET Framework projekt. (.NET Core- och .NET 5+-projekt använder alltid csc.exe för att generera satellitsammansättningar.) För .NET Framework projekt skapas satellitsammansättningar av al.exesom standard. Genom att ställa in GenerateSatelliteAssembliesForCore egenskapen på trueskapas satellitsammansättningar av csc.exe i stället. Det kan vara fördelaktigt att använda csc.exe i följande situationer:

<PropertyGroup>
  <GenerateSatelliteAssembliesForCore>true</GenerateSatelliteAssembliesForCore>
</PropertyGroup>

IsPublishable

Med IsPublishable egenskapen kan Publish målet köras. Den här egenskapen påverkar endast processer som använder .*proj-filer och Publish målet, till exempel kommandot dotnet publish . Det påverkar inte publiceringen i Visual Studio, som använder målet PublishOnly . Standardvärdet är true.

Den här egenskapen är användbar om du kör dotnet publish en lösningsfil eftersom den tillåter automatiskt val av projekt som ska publiceras.

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

PreserveCompilationContext

Egenskapen PreserveCompilationContext gör att ett byggt eller publicerat program kan kompilera mer kod vid körning med samma inställningar som användes vid byggtiden. Sammansättningarna som refereras vid byggtiden kopieras till ref-underkatalogen för utdatakatalogen. Namnen på referenssammansättningarna lagras i programmets .deps.json-fil tillsammans med de alternativ som skickas till kompilatorn. Du kan hämta den här informationen med egenskaperna DependencyContext.CompileLibraries och DependencyContext.CompilationOptions .

Den här funktionen används främst internt av ASP.NET Core MVC- och Razor-sidor för att stödja körningskompilering av Razor-filer.

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

PreserveCompilationReferences

Egenskapen PreserveCompilationReferences liknar egenskapen PreserveCompilationContext , förutom att den endast kopierar de refererade sammansättningarna till publiceringskatalogen och inte .deps.json-filen .

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

Mer information finns i Egenskaper för Razor SDK.

ProduceReferenceAssemblyInOutDir

I .NET 5 och tidigare versioner skrivs referenssammansättningar alltid till OutDir katalogen. I .NET 6 och senare versioner kan du använda ProduceReferenceAssemblyInOutDir egenskapen för att styra om referenssammansättningar skrivs till OutDir katalogen. Standardvärdet är false, och referenssammansättningar skrivs bara till IntermediateOutputPath katalogen. Ange värdet till true för att skriva referenssammansättningar till OutDir katalogen.

<PropertyGroup>
  <ProduceReferenceAssemblyInOutDir>true</ProduceReferenceAssemblyInOutDir>
</PropertyGroup>

Mer information finns i Skriva referenssammansättningar till mellanliggande utdata.

PublishRelease

Egenskapen PublishRelease informerar om dotnet publish att använda konfigurationen Release i stället för konfigurationen Debug . Vi rekommenderar att du lägger till den här egenskapen i en Directory.Build.props fil i stället för en projektfil så att den utvärderas tillräckligt tidigt för att konfigurationsändringen ska spridas.

<PropertyGroup>
  <PublishRelease>true</PublishRelease>
</PropertyGroup>

Anteckning

Den här egenskapen påverkar inte beteendet dotnet build /t:Publishför .

RollForward

Egenskapen RollForward styr hur programmet väljer en körningsmiljö när flera körningsversioner är tillgängliga. Det här värdet matas ut till .runtimeconfig.json som rollForward inställning.

<PropertyGroup>
  <RollForward>LatestMinor</RollForward>
</PropertyGroup>

Ange RollForward till något av följande värden:

Värde Beskrivning
Minor Standard om inget anges.
Återställ till den lägsta högre delversionen om den begärda delversionen saknas. Om den begärda delversionen finns LatestPatch används principen.
Major Gå vidare till nästa tillgängliga högre huvudversion och lägsta delversion om den begärda huvudversionen saknas. Om den begärda huvudversionen finns Minor används principen.
LatestPatch Återställ till den högsta korrigeringsversionen. Det här värdet inaktiverar delversionsdistribution.
LatestMinor Återställ till den högsta delversionen, även om den begärda delversionen finns.
LatestMajor Rulla vidare till högsta högre och högsta delversion, även om den begärda huvudversionen finns.
Disable Återställ inte, bind bara till den angivna versionen. Den här principen rekommenderas inte för allmän användning eftersom den inaktiverar möjligheten att vidarebefordra till de senaste korrigeringarna. Det här värdet rekommenderas endast för testning.

Mer information finns i Kontrollera beteende för vidarebefordran av roll-forward.

RuntimeFrameworkVersion

Egenskapen RuntimeFrameworkVersion anger vilken version av körningen som ska användas vid publicering. Ange en körningsversion:

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

När du publicerar ett ramverksberoende program anger det här värdet den lägsta version som krävs. När du publicerar ett fristående program anger det här värdet den exakta version som krävs.

RuntimeIdentifier

Med RuntimeIdentifier egenskapen kan du ange en enda körningsidentifierare (RID) för projektet. RID gör det möjligt att publicera en fristående distribution.

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

RuntimeIdentifiers

Med RuntimeIdentifiers egenskapen kan du ange en semikolonavgränsad lista över körningsidentifierare (RID) för projektet. Använd den här egenskapen om du behöver publicera för flera körningar. RuntimeIdentifiers används vid återställningen för att säkerställa att rätt tillgångar finns i diagrammet.

Tips

RuntimeIdentifier (singular) kan ge snabbare versioner när endast en enda körning krävs.

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

SatelliteResourceLanguages

Med SatelliteResourceLanguages egenskapen kan du ange vilka språk du vill bevara satellitresurssammansättningar för under kompilering och publicering. Många NuGet-paket innehåller lokaliserade resurssatellitsammansättningar i huvudpaketet. För projekt som refererar till dessa NuGet-paket som inte kräver lokaliserade resurser kan de lokaliserade sammansättningarna i onödan blåsa upp bygg- och publiceringsutdatastorleken. Genom att lägga till egenskapen i SatelliteResourceLanguages projektfilen inkluderas endast lokaliserade sammansättningar för de språk som du anger i bygg- och publiceringsutdata. I följande projektfil behålls till exempel endast engelska (US) resurssatellitsammansättningar.

<PropertyGroup>
  <SatelliteResourceLanguages>en-US</SatelliteResourceLanguages>
</PropertyGroup>

Anteckning

Du måste ange den här egenskapen i projektet som refererar till NuGet-paketet med lokaliserade resurssatellitsammansättningar.

UseAppHost

Egenskapen UseAppHost styr om en intern körbar fil skapas för en distribution eller inte. En intern körbar fil krävs för fristående distributioner.

I .NET Core 3.0 och senare versioner skapas en ramverksberoende körbar fil som standard. Ange egenskapen UseAppHost till false för att inaktivera generering av den körbara filen.

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

Mer information om distribution finns i .NET-programdistribution.

Många MSBuild-egenskaper är tillgängliga för finjustering av trimning, vilket är en funktion som rensar oanvänd kod från fristående distributioner. De här alternativen beskrivs i detalj i Trimningsalternativ. Följande tabell innehåller en snabbreferens.

Egenskap Värden Beskrivning
PublishTrimmed true eller false Styr om trimning är aktiverat under publiceringen.
TrimMode full eller partial Standardvärdet är full. Styr trimningskornigheten.
SuppressTrimAnalysisWarnings true eller false Styr om trimningsanalysvarningar skapas.
EnableTrimAnalyzer true eller false Styr om en delmängd av trimningsanalysvarningar skapas. Du kan aktivera analys även om PublishTrimmed är inställt på false.
ILLinkTreatWarningsAsErrors true eller false Styr om trimvarningar behandlas som fel. Du kanske till exempel vill ange den här egenskapen till false när TreatWarningsAsErrors är inställd på true.
TrimmerSingleWarn true eller false Styr om en enskild varning per sammansättning visas eller alla varningar.
TrimmerRemoveSymbols true eller false Styr om alla symboler tas bort från ett trimmat program.

Följande MSBuild-egenskaper dokumenteras i det här avsnittet:

C#-kompilatoralternativ, till exempel LangVersion och Nullable, kan också anges som MSBuild-egenskaper i projektfilen. Mer information finns i C#-kompilatoralternativ.

DisableImplicitFrameworkDefines

Egenskapen DisableImplicitFrameworkDefines styr om SDK:t genererar preprocessorsymboler för målramverket och plattformen för .NET-projektet. När den här egenskapen är inställd på false eller är oetat (vilket är standardvärdet) genereras preprocessorsymboler för:

  • Ramverk utan version (NETFRAMEWORK, NETSTANDARD, NET)
  • Ramverk med version (NET48, NETSTANDARD2_0, NET6_0)
  • Ramverk med lägsta versionsgräns (NET48_OR_GREATER, NETSTANDARD2_0_OR_GREATER, NET6_0_OR_GREATER)

Mer information om målramverksmonikers och dessa implicita preprocessorsymboler finns i Målramverk.

Om du dessutom anger ett operativsystemspecifikt målramverk i projektet (till exempel net6.0-android) genereras följande preprocessorsymboler:

  • Plattform utan version (ANDROID, IOS, WINDOWS)
  • Plattform med version (IOS15_1)
  • Plattform med lägsta gräns för version (IOS15_1_OR_GREATER)

Mer information om monikers för operativsystemspecifika målramverk finns i OS-specifika TFM:er.

Slutligen, om ditt målramverk innebär stöd för äldre målramverk genereras preprocessorsymboler för dessa äldre ramverk. Till exempel net6.0innebär stöd för net5.0 och så vidare hela vägen tillbaka till .netcoreapp1.0. För vart och ett av dessa målramverk definieras alltså ramverket med minsta gränssymbol för version .

DocumentationFile

Med DocumentationFile egenskapen kan du ange ett filnamn för XML-filen som innehåller dokumentationen för ditt bibliotek. För att IntelliSense ska fungera korrekt med din dokumentation måste filnamnet vara samma som sammansättningsnamnet och måste finnas i samma katalog som sammansättningen. Om du inte anger den här egenskapen men du anger GenerateDocumentationFile till true, är namnet på dokumentationsfilen som standard namnet på sammansättningen men med ett .xml filnamnstillägg. Därför är det ofta enklare att utelämna den här egenskapen och använda egenskapen GenerateDocumentationFile i stället.

Om du anger den här egenskapen men anger GenerateDocumentationFile till falsegenererar kompilatorn inte någon dokumentationsfil. Om du anger den här egenskapen och utelämnar egenskapen GenerateDocumentationFilegenererar kompilatorn en dokumentationsfil.

<PropertyGroup>
  <DocumentationFile>path/to/file.xml</DocumentationFile>
</PropertyGroup>

EmbeddedResourceUseDependentUponConvention

Egenskapen EmbeddedResourceUseDependentUponConvention definierar om resursmanifestets filnamn genereras från typinformation i källfiler som finns tillsammans med resursfiler. Om Form1.resx till exempel finns i samma mapp som Form1.cs och EmbeddedResourceUseDependentUponConvention är inställd truepå , tar den genererade .resources-filen sitt namn från den första typen som definieras i Form1.cs. Om MyNamespace.Form1 till exempel är den första typen som definierats i Form1.cs är det genererade filnamnet MyNamespace.Form1.resources.

Anteckning

Om LogicalName, ManifestResourceNameeller DependentUpon metadata anges för ett EmbeddedResource objekt baseras det genererade manifestfilnamnet för resursfilen på dessa metadata i stället.

I ett nytt .NET-projekt är den här egenskapen som standard inställd på true. Om värdet falseär , och inga LogicalName, ManifestResourceNameeller DependentUpon metadata har angetts för EmbeddedResource objektet i projektfilen baseras resursmanifestets filnamn på rotnamnområdet för projektet och den relativa filsökvägen till .resx-filen . Mer information finns i Hur resursmanifestfiler namnges.

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

EnablePreviewFeatures

Egenskapen EnablePreviewFeatures definierar om projektet är beroende av api:er eller sammansättningar som är dekorerade med RequiresPreviewFeaturesAttribute attributet . Det här attributet används för att ange att ett API eller en sammansättning använder funktioner som anses vara i förhandsversion för den SDK-version som du använder. Förhandsgranskningsfunktioner stöds inte och kan tas bort i en framtida version. Om du vill aktivera användningen av förhandsgranskningsfunktioner anger du egenskapen till True.

<PropertyGroup>
  <EnablePreviewFeatures>True</EnablePreviewFeatures>
</PropertyGroup>

När ett projekt innehåller den här egenskapen har angetts till Trueläggs följande attribut på sammansättningsnivå till i filen AssemblyInfo.cs :

[assembly: RequiresPreviewFeatures]

En analysator varnar om det här attributet finns på beroenden för projekt där EnablePreviewFeatures inte är inställt på True.

Biblioteksförfattare som tänker skicka förhandsgranskningssammansättningar bör ange den här egenskapen till True. Om en sammansättning behöver levereras med en blandning av förhandsversions- och icke-förhandsversions-API:er läser du avsnittet GenerateRequiresPreviewFeaturesAttribute nedan.

GenerateDocumentationFile

Egenskapen GenerateDocumentationFile styr om kompilatorn genererar en XML-dokumentationsfil för biblioteket. Om du anger den här egenskapen till true och du inte anger ett filnamn via egenskapen DocumentationFile placeras den genererade XML-filen i samma utdatakatalog som sammansättningen och har samma filnamn (men med ett .xml filnamnstillägg).

<PropertyGroup>
  <GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>

Mer information om hur du genererar dokumentation från kodkommentare finns i KOMMENTARER till XML-dokumentation (C#),Dokumentera din kod med XML (Visual Basic)eller Dokumentera din kod med XML (F#).

GenerateRequiresPreviewFeaturesAttribute

Egenskapen GenerateRequiresPreviewFeaturesAttribute är nära relaterad till egenskapen EnablePreviewFeatures . Om biblioteket använder förhandsgranskningsfunktioner men du inte vill att hela sammansättningen ska markeras med RequiresPreviewFeaturesAttribute attributet , vilket skulle kräva att alla konsumenter aktiverar förhandsgranskningsfunktioner, anger du den här egenskapen till False.

<PropertyGroup>
    <EnablePreviewFeatures>True</EnablePreviewFeatures>
    <GenerateRequiresPreviewFeaturesAttribute>False</GenerateRequiresPreviewFeaturesAttribute>
</PropertyGroup>

Viktigt

Om du ställer in egenskapen på GenerateRequiresPreviewFeaturesAttributeFalsemåste du vara säker på att dekorera alla offentliga API:er som förlitar sig på förhandsgranskningsfunktioner med RequiresPreviewFeaturesAttribute.

OptimizeImplicitlyTriggeredBuild

För att påskynda byggtiden hoppar versioner som utlöses implicit av Visual Studio över kodanalys, inklusive nullbar analys. Visual Studio utlöser till exempel en implicit version när du kör tester. Implicita versioner optimeras dock bara när TreatWarningsAsErrors inte trueär . Om du har TreatWarningsAsErrors angett till true men fortfarande vill att implicit utlösta byggen ska optimeras kan du ange OptimizeImplicitlyTriggeredBuild till True. Om du vill inaktivera byggoptimering för implicit utlösta versioner anger du OptimizeImplicitlyTriggeredBuild till False.

<PropertyGroup>
    <OptimizeImplicitlyTriggeredBuild>True</OptimizeImplicitlyTriggeredBuild>
</PropertyGroup>

Standardegenskaper för objektinkludering

Följande MSBuild-egenskaper dokumenteras i det här avsnittet:

Mer information finns i Standard inkluderar och exkluderar.

DefaultItemExcludes

Använd egenskapen DefaultItemExcludes för att definiera globmönster för filer och mappar som ska undantas från inkludera, exkludera och ta bort globs. Som standard undantas mapparna ./bin och ./obj från globmönstren.

<PropertyGroup>
  <DefaultItemExcludes>$(DefaultItemExcludes);**/*.myextension</DefaultItemExcludes>
</PropertyGroup>

DefaultItemExcludesInProjectFolder

DefaultItemExcludesInProjectFolder Använd egenskapen för att definiera globmönster för filer och mappar i projektmappen som ska undantas från inkludera, exkludera och ta bort globs. Som standard undantas mappar som börjar med en punkt (.), till exempel .git och .vs, från globmönstren.

Den här egenskapen liknar egenskapen, förutom att den endast tar hänsyn till DefaultItemExcludes filer och mappar i projektmappen. När ett globmönster oavsiktligt matchar objekt utanför projektmappen med en relativ sökväg använder du DefaultItemExcludesInProjectFolder egenskapen i stället för DefaultItemExcludes egenskapen .

<PropertyGroup>
  <DefaultItemExcludesInProjectFolder>$(DefaultItemExcludesInProjectFolder);**/myprefix*/**</DefaultItemExcludesInProjectFolder>
</PropertyGroup>

EnableDefaultItems

Egenskapen EnableDefaultItems styr om kompileringsobjekt, inbäddade resursobjekt och None objekt implicit ingår i projektet. Standardvärdet är true. EnableDefaultItems Ange egenskapen till false för att inaktivera all implicit filinkludering.

<PropertyGroup>
  <EnableDefaultItems>false</EnableDefaultItems>
</PropertyGroup>

EnableDefaultCompileItems

Egenskapen EnableDefaultCompileItems styr om kompileringsobjekt ingår implicit i projektet. Standardvärdet är true. EnableDefaultCompileItems Ange egenskapen till för false att inaktivera implicit inkludering av *.cs och andra språktilläggsfiler.

<PropertyGroup>
  <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
</PropertyGroup>

EnableDefaultEmbeddedResourceItems

Egenskapen EnableDefaultEmbeddedResourceItems styr om inbäddade resursobjekt implicit ingår i projektet. Standardvärdet är true. EnableDefaultEmbeddedResourceItems Ange egenskapen till för false att inaktivera implicit inkludering av inbäddade resursfiler.

<PropertyGroup>
  <EnableDefaultEmbeddedResourceItems>false</EnableDefaultEmbeddedResourceItems>
</PropertyGroup>

EnableDefaultNoneItems

Egenskapen EnableDefaultNoneItems styr om None objekt (filer som inte har någon roll i byggprocessen) implicit inkluderas i projektet. Standardvärdet är true. Ange egenskapen EnableDefaultNoneItems till false för att inaktivera implicit inkludering av None objekt.

<PropertyGroup>
  <EnableDefaultNoneItems>false</EnableDefaultNoneItems>
</PropertyGroup>

Egenskaper för kodanalys

Följande MSBuild-egenskaper dokumenteras i det här avsnittet:

AnalysisLevel

Med AnalysisLevel egenskapen kan du ange en uppsättning kodanalysverktyg som ska köras enligt en .NET-version. Varje .NET-version, med början i .NET 5, har en uppsättning kodanalysregler. Av den uppsättningen analyserar de regler som är aktiverade som standard för den versionen koden. Om du till exempel uppgraderar till .NET 6 men inte vill att standarduppsättningen med kodanalysregler ska ändras anger du AnalysisLevel till 5.

<PropertyGroup>
  <AnalysisLevel>preview</AnalysisLevel>
</PropertyGroup>

Om du vill kan du från och med .NET 6 ange ett sammansatt värde för den här egenskapen som också anger hur aggressivt regler ska aktiveras. Sammansatta värden har formatet <version>-<mode>, där <mode> värdet är ett av AnalysisMode-värdena . I följande exempel används förhandsversionen av kodanalysverktygen och den rekommenderade uppsättningen regler aktiveras.

<PropertyGroup>
  <AnalysisLevel>preview-recommended</AnalysisLevel>
</PropertyGroup>

Anteckning

Om du anger AnalysisLevel eller 5-<mode>5.0-<mode> och sedan installerar .NET 6 SDK och kompilera om projektet kan du se oväntade nya build-varningar. Mer information finns i dotnet/roslyn-analyzeers#5679.

Standardvärde:

  • Om projektet är avsett för .NET 5 eller senare, eller om du har lagt till egenskapen AnalysisMode , är lateststandardvärdet .
  • Annars utelämnas den här egenskapen om du inte uttryckligen lägger till den i projektfilen.

I följande tabell visas de värden som du kan ange.

Värde Innebörd
latest De senaste kodanalysverktygen som har släppts används. Det här är standardinställningen.
latest-<mode> De senaste kodanalysverktygen som har släppts används. Värdet <mode> avgör vilka regler som är aktiverade.
preview De senaste kodanalysverktygen används, även om de är i förhandsversion.
preview-<mode> De senaste kodanalysverktygen används, även om de är i förhandsversion. Värdet <mode> avgör vilka regler som är aktiverade.
6.0 Den uppsättning regler som var tillgängliga för .NET 6-versionen används, även om nyare regler är tillgängliga.
6.0-<mode> Den uppsättning regler som var tillgängliga för .NET 6-versionen används, även om nyare regler är tillgängliga. Värdet <mode> avgör vilka regler som är aktiverade.
6 Den uppsättning regler som var tillgängliga för .NET 6-versionen används, även om nyare regler är tillgängliga.
6-<mode> Den uppsättning regler som var tillgängliga för .NET 6-versionen används, även om nyare regler är tillgängliga. Värdet <mode> avgör vilka regler som är aktiverade.
5.0 Den uppsättning regler som var tillgängliga för .NET 5-versionen används, även om nyare regler är tillgängliga.
5.0-<mode> Den uppsättning regler som var tillgängliga för .NET 5-versionen används, även om nyare regler är tillgängliga. Värdet <mode> avgör vilka regler som är aktiverade.
5 Den uppsättning regler som var tillgängliga för .NET 5-versionen används, även om nyare regler är tillgängliga.
5-<mode> Den uppsättning regler som var tillgängliga för .NET 5-versionen används, även om nyare regler är tillgängliga. Värdet <mode> avgör vilka regler som är aktiverade.

Anteckning

  • I .NET 5 och tidigare versioner påverkar den här egenskapen endast regler för kodkvalitet (CAXXXX). Från och med .NET 6, om du ställer in EnforceCodeStyleInBuildtrue, påverkar den här egenskapen även regler för kodstil (IDEXXXX ).
  • Om du anger ett sammansatt värde för AnalysisLevelbehöver du inte ange en AnalysisMode. Om du gör det AnalysisLevel har du företräde framför AnalysisMode.
  • Den här egenskapen påverkar inte kodanalys i projekt som inte refererar till ett projekt-SDK, till exempel äldre .NET Framework projekt som refererar till NuGet-paketet Microsoft.CodeAnalysis.NetAnalyzers.

AnalysisLevel-kategori<>

Den här egenskapen introducerades i .NET 6 och är samma som AnalysisLevel, förutom att den endast gäller för en specifik kategori av kodanalysregler. Med den här egenskapen kan du använda en annan version av kodanalysverktyg för en viss kategori, eller aktivera eller inaktivera regler på en annan nivå än de andra regelkategorierna. Om du utelämnar den här egenskapen för en viss regelkategori används värdet AnalysisLevel som standard. De tillgängliga värdena är samma som för AnalysisLevel.

<PropertyGroup>
  <AnalysisLevelSecurity>preview</AnalysisLevelSecurity>
</PropertyGroup>
<PropertyGroup>
  <AnalysisLevelSecurity>preview-recommended</AnalysisLevelSecurity>
</PropertyGroup>

I följande tabell visas egenskapsnamnet för varje regelkategori.

Egenskapsnamn Regelkategori
<AnalysisLevelDesign> Designregler
<AnalysisLevelDocumentation> Dokumentationsregler
<AnalysisLevelGlobalization> Globaliseringsregler
<AnalysisLevelInteroperability> Regler för portabilitet och samverkan
<AnalysisLevelMaintainability> Regler för underhåll
<AnalysisLevelNaming> Namngivningsregler
<AnalysisLevelPerformance> Prestandaregler
<AnalysisLevelSingleFile> Regler för en enda fil
<AnalysisLevelReliability> Tillförlitlighetsregler
<AnalysisLevelSecurity> Säkerhetsregler
<AnalysisLevelStyle> Regler för kodstil (IDEXXXX)
<AnalysisLevelUsage> Användningsregler

AnalysisMode

Från och med .NET 5 levereras .NET SDK med alla "CA"-kodkvalitetsregler. Som standard är endast vissa regler aktiverade som build-varningar i varje .NET-version. Med AnalysisMode egenskapen kan du anpassa den uppsättning regler som är aktiverade som standard. Du kan antingen växla till ett mer aggressivt analysläge där du kan välja bort regler individuellt eller ett mer konservativt analysläge där du kan välja specifika regler. Om du till exempel vill aktivera alla regler som build-varningar anger du värdet till All.

<PropertyGroup>
  <AnalysisMode>All</AnalysisMode>
</PropertyGroup>

I följande tabell visas tillgängliga alternativvärden i .NET 5 och .NET 6. De visas i stigande ordning efter det antal regler som de aktiverar.

.NET 6+-värde .NET 5-värde Innebörd
None AllDisabledByDefault Alla regler är inaktiverade. Du kan välja att använda enskilda regler selektivt för att aktivera dem.
Default Default Standardläge, där vissa regler är aktiverade som byggvarningar, vissa regler aktiveras som Visual Studio IDE-förslag och resten inaktiveras.
Minimum Ej tillämpligt Mer aggressivt läge än Default läget. Vissa förslag som rekommenderas starkt för byggframtvingande aktiveras som byggvarningar.
Recommended Ej tillämpligt Mer aggressivt läge än Minimum läget, där fler regler aktiveras som byggvarningar.
All AllEnabledByDefault Alla regler är aktiverade som byggvarningar. Du kan selektivt välja bort enskilda regler för att inaktivera dem.

Anteckning

  • I .NET 5 påverkar den här egenskapen endast regler för kodkvalitet (CAXXXX). Från och med .NET 6, om du ställer in EnforceCodeStyleInBuildtrue, påverkar den här egenskapen även regler för kodstil (IDEXXXX ).
  • Om du använder ett sammansatt värde för AnalysisLevel, <AnalysisLevel>5-recommended</AnalysisLevel>till exempel , kan du utelämna den här egenskapen helt. Men om du anger båda egenskaperna AnalysisLevel har företräde framför AnalysisMode.
  • Om AnalysisMode är inställt på AllEnabledByDefault och AnalysisLevel är inställt på 5 eller 5.0, och sedan installerar .NET 6 SDK och kompilera om projektet, kan du se oväntade nya build-varningar. Mer information finns i dotnet/roslyn-analyzeers#5679.
  • Den här egenskapen påverkar inte kodanalys i projekt som inte refererar till ett projekt-SDK, till exempel äldre .NET Framework projekt som refererar till NuGet-paketet Microsoft.CodeAnalysis.NetAnalyzers.

AnalysisMode-kategori<>

Den här egenskapen introducerades i .NET 6 och är samma som AnalysisMode, förutom att den endast gäller för en specifik kategori av kodanalysregler. Med den här egenskapen kan du aktivera eller inaktivera regler på en annan nivå än de andra regelkategorierna. Om du utelämnar den här egenskapen för en viss regelkategori används värdet AnalysisMode som standard. De tillgängliga värdena är samma som för AnalysisMode.

<PropertyGroup>
  <AnalysisModeSecurity>All</AnalysisModeSecurity>
</PropertyGroup>

I följande tabell visas egenskapsnamnet för varje regelkategori.

Egenskapsnamn Regelkategori
<AnalysisModeDesign> Designregler
<AnalysisModeDocumentation> Dokumentationsregler
<AnalysisModeGlobalization> Globaliseringsregler
<AnalysisModeInteroperability> Regler för portabilitet och samverkan
<AnalysisModeMaintainability> Regler för underhåll
<AnalysisModeNaming> Namngivningsregler
<AnalysisModePerformance> Prestandaregler
<AnalysisModeSingleFile> Regler för en enda fil
<AnalysisModeReliability> Tillförlitlighetsregler
<AnalysisModeSecurity> Säkerhetsregler
<AnalysisModeStyle> Regler för kodstil (IDEXXXX)
<AnalysisModeUsage> Användningsregler

CodeAnalysisTreatWarningsAsErrors

Med CodeAnalysisTreatWarningsAsErrors egenskapen kan du konfigurera om kodkvalitetsanalysvarningar (CAxxxx) ska behandlas som varningar och bryta versionen. Om du använder -warnaserror flaggan när du skapar dina projekt behandlas även .NET-kodkvalitetsanalysvarningar som fel. Om du inte vill att varningar om kodkvalitetsanalys ska behandlas som fel kan du ange CodeAnalysisTreatWarningsAsErrors egenskapen MSBuild till false i projektfilen.

<PropertyGroup>
  <CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors>
</PropertyGroup>

EnableNETAnalyzers

.NET-kodkvalitetsanalys är aktiverat som standard för projekt som riktar in sig på .NET 5 eller en senare version. Om du utvecklar med hjälp av .NET 5+ SDK kan du aktivera .NET-kodanalys för SDK-projekt som riktar sig mot tidigare versioner av .NET genom att ange EnableNETAnalyzers egenskapen till true. Om du vill inaktivera kodanalys i ett projekt anger du den här egenskapen till false.

<PropertyGroup>
  <EnableNETAnalyzers>true</EnableNETAnalyzers>
</PropertyGroup>

Anteckning

Den här egenskapen gäller specifikt för de inbyggda analysverktygen i .NET 5+ SDK. Den bör inte användas när du installerar ett NuGet-kodanalyspaket.

EnforceCodeStyleInBuild

.NET-kodstilsanalys är som standard inaktiverad vid kompilering för alla .NET-projekt. Du kan aktivera kodstilsanalys för .NET-projekt genom att ange EnforceCodeStyleInBuild egenskapen till true.

<PropertyGroup>
  <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
</PropertyGroup>

Alla regler för kodstilar som är konfigurerade för att vara varningar eller fel körs vid bygg- och rapportöverträdelser.

Anteckning

Om du installerar .NET 6 (eller Visual Studio 2022, som innehåller .NET 6) men vill skapa projektet med Visual Studio 2019, kan du se nya CS8032-varningar om du har EnforceCodeStyleInBuild egenskapen inställd på true. För att lösa varningarna kan du ange vilken version av .NET SDK du vill skapa projektet med (i det här fallet något i stil 5.0.404med ) genom att lägga till en global.json-post.

_SkipUpgradeNetAnalyzersNuGetWarning

Med _SkipUpgradeNetAnalyzersNuGetWarning egenskapen kan du konfigurera om du får en varning om du använder kodanalysverktyg från ett NuGet-paket som är inaktuellt jämfört med kodanalysverktygen i den senaste .NET SDK:n. Varningen ser ut ungefär så här:

.NET SDK har nyare analysverktyg med version 6.0.0 än vilken version "5.0.3" av paketet Microsoft.CodeAnalysis.NetAnalyzers tillhandahåller. Uppdatera eller ta bort den här paketreferensen.

Om du vill ta bort den här varningen och fortsätta att använda versionen av kodanalysverktygen i NuGet-paketet anger du _SkipUpgradeNetAnalyzersNuGetWarning till true i projektfilen.

<PropertyGroup>
  <_SkipUpgradeNetAnalyzersNuGetWarning>true</_SkipUpgradeNetAnalyzersNuGetWarning>
</PropertyGroup>

Konfigurationsegenskaper för körning

Du kan konfigurera vissa körningsbeteenden genom att ange MSBuild-egenskaper i appens projektfil. Information om andra sätt att konfigurera körningsbeteende finns i Konfigurationsinställningar för körning.

ConcurrentGarbageCollection

Egenskapen ConcurrentGarbageCollection konfigurerar om skräpinsamling i bakgrunden (samtidig) är aktiverad. Ange värdet till false för att inaktivera skräpinsamling i bakgrunden. Mer information finns i Bakgrunds-GC.

<PropertyGroup>
  <ConcurrentGarbageCollection>false</ConcurrentGarbageCollection>
</PropertyGroup>

InvariantGlobalization

Egenskapen InvariantGlobalization konfigurerar om appen körs i globaliseringsvariant läge, vilket innebär att den inte har åtkomst till kulturspecifika data. Ange värdet till true för att köras i globaliserings-ivariant läge. Mer information finns i Invariant-läge.

<PropertyGroup>
  <InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>

FördefinieradeKulturerOnly

I .NET 6 och senare versioner PredefinedCulturesOnly konfigurerar egenskapen om appar kan skapa andra kulturer än den invarianta kulturen när globaliseringsvariant läge är aktiverat. Standardvärdet är true. Ange värdet till false för att tillåta skapandet av en ny kultur i globaliseringsvariant läge.

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

Mer information finns i Skapa kultur och ärendemappning i globaliserings-invariant läge.

RetainVMGarbageCollection

Egenskapen RetainVMGarbageCollection konfigurerar skräpinsamlaren för att placera borttagna minnessegment i en väntelägeslista för framtida användning eller släppa dem. Om värdet anges till true instrueras skräpinsamlaren att placera segmenten i en väntelägeslista. Mer information finns i Behåll virtuell dator.

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

ServerGarbageCollection

Egenskapen ServerGarbageCollection konfigurerar om programmet använder skräpinsamling för arbetsstation eller serverskräpinsamling. Ange värdet till för true att använda skräpinsamling för servern. Mer information finns i Arbetsstation kontra server.

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

ThreadPoolMaxThreads

Egenskapen ThreadPoolMaxThreads konfigurerar det maximala antalet trådar för arbetstrådspoolen. Mer information finns i Maximalt antal trådar.

<PropertyGroup>
  <ThreadPoolMaxThreads>20</ThreadPoolMaxThreads>
</PropertyGroup>

ThreadPoolMinThreads

Egenskapen ThreadPoolMinThreads konfigurerar det minsta antalet trådar för arbetstrådspoolen. Mer information finns i Minsta antal trådar.

<PropertyGroup>
  <ThreadPoolMinThreads>4</ThreadPoolMinThreads>
</PropertyGroup>

TieredCompilation

Egenskapen TieredCompilation konfigurerar om JIT-kompilatorn (just-in-time) använder nivåindelad kompilering. Ange värdet till false för att inaktivera nivåindelad kompilering. Mer information finns i Nivåindelad kompilering.

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

TieredCompilationQuickJit

Egenskapen TieredCompilationQuickJit konfigurerar om JIT-kompilatorn använder snabb JIT. Ange värdet till false för att inaktivera snabb-JIT. Mer information finns i Snabb-JIT.

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

TieredCompilationQuickJitForLoops

Egenskapen TieredCompilationQuickJitForLoops konfigurerar om JIT-kompilatorn använder snabb JIT på metoder som innehåller loopar. Ange värdet till true för att aktivera snabb JIT för metoder som innehåller loopar. Mer information finns i Snabb-JIT för loopar.

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

Referensegenskaper

Följande MSBuild-egenskaper dokumenteras i det här avsnittet:

AssetTargetFallback

Med AssetTargetFallback egenskapen kan du ange ytterligare kompatibla ramverksversioner för projektreferenser och NuGet-paket. Om du till exempel anger ett paketberoende som använder PackageReference men paketet inte innehåller tillgångar som är kompatibla med dina projekts TargetFramework, AssetTargetFallback kommer egenskapen att spela in. Kompatibiliteten för det refererade paketet kontrolleras igen med varje målramverk som anges i AssetTargetFallback. Den här egenskapen ersätter den inaktuella egenskapen PackageTargetFallback.

Du kan ange AssetTargetFallback egenskapen till en eller flera målramverksversioner.

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

DisableImplicitFrameworkReferences

Egenskapen DisableImplicitFrameworkReferences styr implicita FrameworkReference objekt när du riktar in dig på .NET Core 3.0 och senare versioner. När du riktar in dig på .NET Core 2.1 eller .NET Standard 2.0 och tidigare versioner styr den implicita PackageReference-objekt till paket i ett metapaket. (Ett metapaket är ett ramverksbaserat paket som endast består av beroenden för andra paket.) Den här egenskapen styr även implicita referenser som System och System.Core när .NET Framework riktas.

Ställ in den här egenskapen på true för att inaktivera implicita FrameworkReference objekt eller PackageReference-objekt . Om du ställer in den här egenskapen på truekan du lägga till explicita referenser till bara de ramverk eller paket som du behöver.

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

DisableTransitiveProjectReferences

Egenskapen DisableTransitiveProjectReferences styr implicita projektreferenser. Ställ in den här egenskapen på true för att inaktivera implicita ProjectReference objekt. Om du inaktiverar implicita projektreferenser resulterar det i ett icke-transitivt beteende som liknar det äldre projektsystemet.

När den här egenskapen är truehar den en liknande effekt som PrivateAssets="All" inställningen för alla beroenden för det beroende projektet.

Om du ställer in den här egenskapen på truekan du lägga till explicita referenser till bara de projekt du behöver.

<PropertyGroup>
  <DisableTransitiveProjectReferences>true</DisableTransitiveProjectReferences>
</PropertyGroup>

När du återställer ett refererat paket installeras alla dess direkta beroenden och alla beroenden för dessa beroenden. Du kan anpassa paketåterställning genom att ange egenskaper som RestorePackagesPath och RestoreIgnoreFailedSources. Mer information om dessa och andra egenskaper finns i Återställa mål.

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

ValidateExecutableReferencesMatchSelfContained

Egenskapen ValidateExecutableReferencesMatchSelfContained kan användas för att inaktivera fel som rör körbara projektreferenser. Om .NET upptäcker att ett fristående körbart projekt refererar till ett ramverksberoende körbart projekt, eller tvärtom, genererar det felen NETSDK1150 respektive NETSDK1151. Om du vill undvika dessa fel när referensen är avsiktlig anger du ValidateExecutableReferencesMatchSelfContained egenskapen till false.

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

WindowsSdkPackageVersion

Egenskapen WindowsSdkPackageVersion kan användas för att åsidosätta versionen av Windows SDK-målpaketet. Den här egenskapen introducerades i .NET 5 och ersätter användningen av FrameworkReference objektet för detta ändamål.

<PropertyGroup>
  <WindowsSdkPackageVersion>10.0.19041.18</WindowsSdkPackageVersion>
</PropertyGroup>

Anteckning

Vi rekommenderar inte att du åsidosätter Windows SDK-versionen eftersom Windows SDK-målpaketen ingår i .NET 5+ SDK. Om du i stället vill referera till det senaste Windows SDK-paketet uppdaterar du din version av .NET SDK. Den här egenskapen bör endast användas i sällsynta fall som att använda förhandsgranskningspaket eller behöva åsidosätta versionen av C#/WinRT.

Följande egenskaper används för att starta en app med dotnet run kommandot :

RunArguments

Egenskapen RunArguments definierar de argument som skickas till appen när den körs.

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

Tips

Du kan ange ytterligare argument som ska skickas till appen med hjälp -- av alternativet för dotnet run.

RunWorkingDirectory

Egenskapen RunWorkingDirectory definierar arbetskatalogen för programprocessen som ska startas i. Det kan vara en absolut sökväg eller en sökväg som är relativ till projektkatalogen. Om du inte anger en katalog OutDir används som arbetskatalog.

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

Följande MSBuild-egenskaper dokumenteras i det här avsnittet:

EnableComHosting

Egenskapen EnableComHosting anger att en sammansättning tillhandahåller en COM-server. EnableComHosting Om du anger till true innebär det också att EnableDynamicLoading är true.

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

Mer information finns i Exponera .NET-komponenter för COM.

EnableDynamicLoading

Egenskapen EnableDynamicLoading anger att en sammansättning är en dynamiskt inläst komponent. Komponenten kan vara ett COM-bibliotek eller ett icke-COM-bibliotek som kan användas från en intern värd eller användas som ett plugin-program. Om du anger den här egenskapen till true får du följande effekter:

  • En .runtimeconfig.json-fil genereras.
  • RollForward är inställt på LatestMinor.
  • NuGet-referenser kopieras lokalt.
<PropertyGroup>
  <EnableDynamicLoading>true</EnableDynamicLoading>
</PropertyGroup>

Genererade filegenskaper

Följande egenskaper gäller kod i genererade filer:

DisableImplicitNamespaceImports

Egenskapen DisableImplicitNamespaceImports kan användas för att inaktivera implicita namnområdesimporter i Visual Basic-projekt som riktar in sig på .NET 6 eller en senare version. Implicita namnrymder är standardnamnrymder som importeras globalt i ett Visual Basic-projekt. Ställ in den här egenskapen på true för att inaktivera implicita namnområdesimporter.

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

Implicita anspelningar

Egenskapen ImplicitUsings kan användas för att aktivera och inaktivera implicita global using direktiv i C#-projekt som riktar sig till .NET 6 eller en senare version och C# 10 eller senare. När funktionen är aktiverad lägger .NET SDK till global using direktiv för en uppsättning standardnamnområden baserat på typen av projekt-SDK. Ange den här egenskapen till true eller enable för att aktivera implicita global using direktiv. Om du vill inaktivera implicita global using direktiv tar du bort egenskapen eller anger den till false eller disable.

<PropertyGroup>
  <ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>

Anteckning

Mallarna för nya C#-projekt som är mål för .NET 6 eller senare har ImplicitUsings angetts som enable standard.

Om du vill definiera ett explicit global using direktiv lägger du till ett Användningsobjekt .

Poster

MSBuild-objekt är indata i byggsystemet. Objekt anges enligt deras typ, vilket är elementnamnet. Och är till exempel CompileReference två vanliga objekttyper. Följande ytterligare objekttyper görs tillgängliga av .NET SDK:

Du kan använda något av standardobjektattributen, Include till exempel och Update, för dessa objekt. Använd Include för att lägga till ett nytt objekt och använd Update för att ändra ett befintligt objekt. Används till exempel Update ofta för att ändra ett objekt som implicit har lagts till av .NET SDK.

AssemblyMetadata

Objektet AssemblyMetadata anger ett sammansättningsattribut för nyckel/värde-par AssemblyMetadataAttribute . Metadata Include blir nyckeln och Value metadata blir värdet.

<ItemGroup>
  <AssemblyMetadata Include="Serviceable" Value="True" />
</ItemGroup>

InternalsVisibleTo

Objektet InternalsVisibleTo genererar ett InternalsVisibleToAttribute sammansättningsattribut för den angivna vänsammansättningen.

<ItemGroup>
  <InternalsVisibleTo Include="MyProject.Tests" />
</ItemGroup>

Om vänsammansättningen är signerad kan du ange en valfri Key metadata för att ange dess fullständiga offentliga nyckel. Om du inte anger Key metadata och en $(PublicKey) är tillgänglig används den nyckeln. Annars läggs ingen offentlig nyckel till i attributet.

PackageReference

Objektet PackageReference definierar en referens till ett NuGet-paket.

Attributet Include anger paket-ID: t. Attributet Version anger version eller versionsintervall. Information om hur du anger en lägsta version, högsta version, intervall eller exakt matchning finns i Versionsintervall.

Projektfilfragmentet i följande exempel refererar till System.Runtime-paketet .

<ItemGroup>
  <PackageReference Include="System.Runtime" Version="4.3.0" />
</ItemGroup>

Du kan också styra beroendetillgångar med hjälp av metadata som PrivateAssets.

<ItemGroup>
  <PackageReference Include="Contoso.Utility.UsefulStuff" Version="3.6.0">
    <PrivateAssets>all</PrivateAssets>
  </PackageReference>
</ItemGroup>

Mer information finns i Paketreferenser i projektfiler.

TrimmerRootAssembly

Med TrimmerRootAssembly objektet kan du undanta en sammansättning från trimning. Trimning är processen för att ta bort oanvända delar av körningen från ett paketerat program. I vissa fall kan trimning ta bort nödvändiga referenser felaktigt.

Följande XML undantar System.Security sammansättningen från trimning.

<ItemGroup>
  <TrimmerRootAssembly Include="System.Security" />
</ItemGroup>

Mer information finns i Trimningsalternativ.

Använda

Med Using objektet kan du globalt inkludera ett namnområde i ditt C#-projekt, så att du inte behöver lägga till ett using direktiv för namnområdet överst i källfilerna. Det här objektet liknar det Import objekt som kan användas för samma ändamål i Visual Basic-projekt. Den här egenskapen är tillgänglig från och med .NET 6.

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

Du kan också använda objektet Using för att definiera globala using <alias> och using static <type> direktiv.

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

Exempel:

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

Mer information om aliasdirektiv using och using static <type> -direktiv finns i använda direktivet.

Objektmetadata

Förutom standardattributen för MSBuild-objekt görs följande objektmetadatataggar tillgängliga av .NET SDK:

CopyToPublishDirectory

Metadata CopyToPublishDirectory för ett MSBuild-objekt styr när objektet kopieras till publiceringskatalogen. Tillåtna värden är PreserveNewest, som endast kopierar objektet om det har ändrats, Always, som alltid kopierar objektet och Never, som aldrig kopierar objektet. Ur prestandasynpunkt PreserveNewest är det bättre eftersom det möjliggör en inkrementell version.

<ItemGroup>
  <None Update="appsettings.Development.json" CopyToOutputDirectory="PreserveNewest" CopyToPublishDirectory="PreserveNewest" />
</ItemGroup>

LinkBase

För ett objekt som är utanför projektkatalogen och dess underkataloger använder publiceringsmålet objektets Länkmetadata för att avgöra var objektet ska kopieras. Linkavgör också hur objekt utanför projektträdet visas i Solution Explorer fönstret i Visual Studio.

Om Link inte har angetts för ett objekt som ligger utanför projektkonen är standardvärdet %(LinkBase)\%(RecursiveDir)%(Filename)%(Extension). LinkBase låter dig ange en lämplig basmapp för objekt utanför projektkonen. Mapphierarkin under basmappen bevaras via RecursiveDir. Om LinkBase inte anges utelämnas den från Link sökvägen.

<ItemGroup>
  <Content Include="..\Extras\**\*.cs" LinkBase="Shared"/>
</ItemGroup>

Följande bild visar hur en fil som ingår via föregående objektglob Include visas i Solution Explorer.

Solution Explorer som visar objekt med LinkBase-metadata.

Se även