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.

Kommentar

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.

Egenskaper för sammansättningsverifiering

Dessa egenskaper och objekt skickas till ValidateAssemblies uppgiften. Mer information om sammansättningsverifiering finns i Sammansättningsverifiering.

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

Kommentar

Dessa egenskaper är inte en del av .NET SDK (ännu). Om du vill använda dem måste du också lägga till en PackageReference i Microsoft.DotNet.ApiCompat.Task.

Dessutom gäller följande egenskaper som dokumenteras i egenskaperna för paketverifiering även för sammansättningsverifiering:

ApiCompatStrictMode

När egenskapen är inställd truepå anger den ApiCompatStrictMode att API-kompatibilitetskontroller ska utföras i strikt läge.

<PropertyGroup>
  <ApiCompatStrictMode>true</ApiCompatStrictMode>
</PropertyGroup>

ApiCompatValidateAssemblies

Egenskapen ApiCompatValidateAssemblies aktiverar en serie valideringar på de angivna sammansättningarna. Mer information finns i Sammansättningsverifiering.

<PropertyGroup>
  <ApiCompatValidateAssemblies>true</ApiCompatValidateAssemblies>
</PropertyGroup>

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>net8.0</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.

Kommentar

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

<PropertyGroup>
  <TargetFrameworks>net8.0;net462</TargetFrameworks>
</PropertyGroup>

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

NetStandardImplicitPackageVersion

Kommentar

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.

Mer information om hur du genererar sammansättningsattribut med hjälp av en projektfil finns i Ange sammansättningsattribut i en projektfil.

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

Beskrivande egenskaper

Du kan ange egenskaper som PackageId, PackageVersion, PackageIcon, och TitleDescription 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 för dotnet pack. Den här egenskapen introducerades i .NET 7.

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

Kommentar

  • Från och med .NET 8 SDK är PackRelease standardvärdet true. Mer information finns i "dotnet pack" använder versionskonfiguration.
  • Endast .NET 7 SDK: Om du vill använda PackRelease i ett projekt som ingår i en Visual Studio-lösning måste du ange miljövariabeln DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS till true (eller något annat värde). För lösningar som har många projekt ökar inställningen av den här variabeln den tid som krävs för att packa.

Egenskaper för paketverifiering

Dessa egenskaper och objekt skickas till ValidatePackage uppgiften. Mer information om paketverifiering finns i Översikt över paketverifiering.

Egenskaper för uppgiften finns i ValidateAssemblies Egenskaper för sammansättningsverifiering.

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

ApiCompatEnableRuleAttributesMustMatch

När egenskapen är inställd truepå aktiverar den ApiCompatEnableRuleAttributesMustMatch verifieringsregel som kontrollerar om attributen matchar. Standardvärdet är false.

<PropertyGroup>
  <ApiCompatEnableRuleAttributesMustMatch>true</ApiCompatEnableRuleAttributesMustMatch>
</PropertyGroup>

ApiCompatEnableRuleCannotChangeParameterName

När egenskapen är inställd truepå aktiverar den ApiCompatEnableRuleCannotChangeParameterName verifieringsregel som kontrollerar om parameternamnen har ändrats i offentliga metoder. Standardvärdet är false.

<PropertyGroup>
  <ApiCompatEnableRuleCannotChangeParameterName>true</ApiCompatEnableRuleCannotChangeParameterName>
</PropertyGroup>

ApiCompatExcludeAttributesFile

Objektet ApiCompatExcludeAttributesFile anger sökvägen till en fil som innehåller attribut som ska undantas i DocId-format .

<ItemGroup>
  <ApiCompatExcludeAttributesFile Include="ApiCompatExcludedAttributes.txt" />
  <ApiCompatExcludeAttributesFile Include="ApiCompatBaselineExcludedAttributes.txt" />
</ItemGroup>

ApiCompatGenerateSuppressionFile

Egenskapen ApiCompatGenerateSuppressionFile anger om en kompatibilitetsundertryckningsfil ska genereras.

<PropertyGroup>
  <ApiCompatGenerateSuppressionFile>true</ApiCompatGenerateSuppressionFile>
</PropertyGroup>

ApiCompatPermitUnnecessarySuppressions

Egenskapen ApiCompatPermitUnnecessarySuppressions anger om du vill tillåta onödiga undertryckningar i undertryckningsfilen.

Standardvärdet är false.

<PropertyGroup>
  <ApiCompatPermitUnnecessarySuppressions>true</ApiCompatPermitUnnecessarySuppressions>
</PropertyGroup>

ApiCompatPreserveUnnecessarySuppressions

Egenskapen ApiCompatPreserveUnnecessarySuppressions anger om du vill bevara onödiga undertryckningar när du återskapar undertryckningsfilen. När en befintlig undertryckningsfil återskapas läses innehållet, deserialiseras till en uppsättning undertryckningar och lagras sedan i en lista. Vissa av undertryckningarna kanske inte längre är nödvändiga om inkompatibiliteten har åtgärdats. När undertryckningarna serialiseras tillbaka till disken kan du välja att behålla alla befintliga (deserialiserade) uttryck genom att ange den här egenskapen till true.

Standardvärdet är false.

<PropertyGroup>
  <ApiCompatPreserveUnnecessarySuppressions>true</ApiCompatPreserveUnnecessarySuppressions>
</PropertyGroup>

ApiCompatRespectInternals

Egenskapen ApiCompatRespectInternals anger om internal API:er ska kontrolleras för kompatibilitet utöver public API:er.

<PropertyGroup>
  <ApiCompatRespectInternals>true</ApiCompatRespectInternals>
</PropertyGroup>

ApiCompatSuppressionFile

Objektet ApiCompatSuppressionFile anger sökvägen till en eller flera undertryckningsfiler att läsa från. Om den är ospecificerad läses undertryckningsfilen <project-directory>/CompatibilitySuppressions.xml (om den finns).

<ItemGroup>
  <ApiCompatSuppressionFile Include="CompatibilitySuppressions.xml;CompatibilitySuppressions.WasmThreads.xml" />
</ItemGroup>

ApiCompatSuppressionOutputFile

Egenskapen ApiCompatSuppressionOutputFile anger sökvägen till en undertryckningsfil att skriva till när <ApiCompatGenerateSuppressionFile> är true. Om det är ospecificerat används det första ApiCompatSuppressionFile objektet.

EnablePackageValidation

Egenskapen EnablePackageValidation aktiverar en serie valideringar i paketet efter Pack uppgiften. Mer information finns i paketverifiering.

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

EnableStrictModeForBaselineValidation

När värdet är inställt truepå aktiverar egenskapen EnableStrictModeForBaselineValidation strikt läge för paketbaslinjekontroller. Standardvärdet är false.

EnableStrictModeForCompatibleFrameworksInPackage

När egenskapen är inställd truepå aktiverar den EnableStrictModeForCompatibleFrameworksInPackage strikt läge för sammansättningar som är kompatibla baserat på deras målramverk. Standardvärdet är false.

EnableStrictModeForCompatibleTfms

När egenskapen är inställd truepå aktiverar den EnableStrictModeForCompatibleTfms strikt läge för kontrakts- och implementeringssammansättningar för alla kompatibla målramverk. Standardvärdet är true.

NoWarn

Egenskapen NoWarn anger diagnostik-ID:t som ska utelämnas.

<PropertyGroup>
  <NoWarn>$(NoWarn);PKV0001</NoWarn>
</PropertyGroup>

PackageValidationBaselineFrameworkToIgnore

Objektet PackageValidationBaselineFrameworkToIgnore anger ett målramverk som ska ignoreras från baslinjepaketet. Ramverkssträngen måste exakt matcha mappnamnet i baslinjepaketet.

<ItemGroup>
  <PackageValidationBaselineFrameworkToIgnore Include="netcoreapp2.1" />
</ItemGroup>

PackageValidationBaselineName

Egenskapen PackageValidationBaselineName anger namnet på baslinjepaketet som det aktuella paketet ska verifieras mot. Om värdet är ospecificerat används det PackageId .

PackageValidationBaselineVersion

Egenskapen PackageValidationBaselineVersion anger vilken version av baslinjepaketet som det aktuella paketet ska verifieras mot.

PackageValidationReferencePath

Objektet PackageValidationReferencePath anger katalogsökvägen där referenssammansättningen kan hittas per TFM.

<ItemGroup>
  <PackageValidationReferencePath Include="path/to/reference-assembly" TargetFramework="net7.0" />
</ItemGroup>

RoslynAssembliesPath

Egenskapen RoslynAssembliesPath anger sökvägen till katalogen som innehåller de Microsoft.CodeAnalysis-sammansättningar som du vill använda. Du behöver bara ange den här egenskapen om du vill testa med en nyare kompilator än vad som finns i SDK:n.

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 en RID av win-x64ändrar följande inställning till exempel utdatasökvägen från bin\Debug\net5.0\win-x64 till bin\Debug\net5.0:

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

CopyLocalLockFileAssemblies

Egenskapen CopyLocalLockFileAssemblies är användbar för plugin-projekt som har beroenden för andra bibliotek. Om du anger den här egenskapen till truekopieras eventuella transitiva 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>

Standardvärdet CopyLocalLockFileAssemblies för kan variera beroende på utdatatyp. För klassbibliotek är falsetill exempel standardvärdet , medan standardvärdet för konsolprogram är true. Du kan ange den här egenskapen explicit för att åsidosätta standardvärdet om det behövs.

Dricks

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:t genererar fel NETSDK1148 när MSBuild identifierar duplicerade filer i publiceringsutdata, men inte kan 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.

GenerateRuntimeConfigDevFile

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

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

GenerateRuntimeConfigurationFiles

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

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

GenerateSatelliteAssembliesForCore

Egenskapen GenerateSatelliteAssembliesForCore styr om satellitsammansättningar genereras med hjälp av csc.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 som standard av al.exe. 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

Egenskapen IsPublishable tillåter Publish att målet körs. 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 PublishOnly målet. 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 bygget. De sammansättningar som refereras vid byggtiden kopieras till referensunderkatalogen 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 hjälp av DependencyContext.CompileLibraries egenskaperna 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 Razor SDK-egenskaper.

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 endast 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.

PublishDocumentationFile

När den här egenskapen är trueinkluderas XML-dokumentationsfilen för projektet, om en genereras, i publiceringsutdata för projektet. Den här egenskapen är truesom standard .

Dricks

Ange GenerateDocumentationFile till för true att generera en XML-dokumentationsfil vid kompileringstillfället.

PublishDocumentationFiles

Den här egenskapen är en aktiveringsflagga för flera andra egenskaper som styr om olika typer av XML-dokumentationsfiler kopieras till publiceringskatalogen som standard, nämligen PublishDocumentationFile och PublishReferencesDocumentationFiles. Om dessa egenskaper tas bort och den här egenskapen har angetts, kommer dessa egenskaper som standard att truevara . Den här egenskapen är truesom standard .

PublishReferencesDocumentationFiles

När den här egenskapen är truekopieras XML-dokumentationsfiler för projektets referenser till publiceringskatalogen, i stället för bara körningstillgångar som DLL-filer. Den här egenskapen är truesom standard .

PublishRelease

Egenskapen PublishRelease informerar om dotnet publish att använda konfigurationen Release som standard i stället för konfigurationen Debug . Den här egenskapen introducerades i .NET 7.

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

Kommentar

  • Från och med .NET 8 SDK är PublishRelease standardvärdet true för projekt som riktar in sig på .NET 8 eller senare. Mer information finns i "dotnet publish" använder versionskonfiguration.
  • Den här egenskapen påverkar inte beteendet dotnet build /t:Publishför och ändrar bara konfigurationen när du publicerar via .NET CLI.
  • Endast .NET 7 SDK: Om du vill använda PublishRelease i ett projekt som ingår i en Visual Studio-lösning måste du ange miljövariabeln DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS till true (eller något annat värde). När du publicerar en lösning med den här variabeln aktiverad prioriteras det körbara projektets PublishRelease värde och den nya standardkonfigurationen flödas till andra projekt i lösningen. Om en lösning innehåller flera körbara projekt eller toppnivåprojekt med olika värden för PublishReleasekommer lösningen inte att publiceras. För lösningar som har många projekt ökar användningen av den här inställningen den tid som krävs för att publicera.

PublishSelfContained

Egenskapen PublishSelfContained informerar dotnet publish om att publicera en app som en fristående app. Den här egenskapen är användbar när du inte kan använda --self-contained argumentet för dotnet-publiceringskommandot , till exempel när du publicerar på lösningsnivå. I så fall kan du lägga till PublishSelfContained egenskapen MSBuild i ett projekt eller filen Directory.Build.Props .

Den här egenskapen introducerades i .NET 7. Den liknar egenskapen SelfContained , förutom att den är specifik för verbet publish . Vi rekommenderar att du använder PublishSelfContained i stället för SelfContained.

<PropertyGroup>
  <PublishSelfContained>true</PublishSelfContained>
</PropertyGroup>

RollForward

Egenskapen RollForward styr hur programmet väljer en körning 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 det inte anges.
Rulla vidare till den lägsta högre delversionen om den begärda delversionen saknas. Om den begärda delversionen finns LatestPatch används principen.
Major Rulla 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 Rulla vidare till den högsta korrigeringsversionen. Det här värdet inaktiverar delversionsdistribution.
LatestMinor Rulla vidare till högsta delversion, ä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 Rulla inte vidare, bind bara till den angivna versionen. Den här principen rekommenderas inte för allmän användning eftersom den inaktiverar möjligheten att rulla vidare till de senaste korrigeringarna. Det här värdet rekommenderas endast för testning.

Mer information finns i Kontrollera roll-forward-beteende.

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>linux-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.

Dricks

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

<PropertyGroup>
  <RuntimeIdentifiers>win-x64;osx-x64;linux-x64</RuntimeIdentifiers>
</PropertyGroup>

SatellitResourceLanguages

Med SatelliteResourceLanguages egenskapen kan du ange vilka språk som 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 publiceringsstorleken. Genom att lägga till egenskapen i SatelliteResourceLanguages projektfilen inkluderas endast lokaliserade sammansättningar för de språk som du anger i kompilerings- och publiceringsutdata. I följande projektfil behålls till exempel endast engelska (USA) och tyska (Tyskland) resurssatellitsammansättningar.

<PropertyGroup>
  <SatelliteResourceLanguages>en-US;de-DE</SatelliteResourceLanguages>
</PropertyGroup>

Kommentar

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

  • Om du vill ange flera språk som ett argument till dotnet publishmåste du lägga till tre par citattecken runt språkidentifierarna. Till exempel:

    dotnet msbuild multi.msbuildproj -p:SatelliteResourceLanguages="""de;en"""

SelfContained

Egenskapen SelfContained informerar dotnet build och dotnet publish för att skapa eller publicera en app som en fristående app. Den här egenskapen är användbar när du inte kan använda --self-contained argumentet med dotnet-kommandot , till exempel när du publicerar på lösningsnivå. I så fall kan du lägga till SelfContained egenskapen MSBuild i ett projekt eller filen Directory.Build.Props .

Den här egenskapen liknar egenskapen PublishSelfContained . Vi rekommenderar att du använder PublishSelfContained i stället för SelfContained när det är möjligt.

<PropertyGroup>
  <SelfContained>true</SelfContained>
</PropertyGroup>

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. En ramverksberoende körbar fil skapas 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 trimmar 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 Standard ä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.

ContinuousIntegrationBuild

Egenskapen ContinuousIntegrationBuild anger om en version körs på en CI-server (continuous integration). När den här egenskapen är inställd truepå aktiverar den här egenskapen inställningar som endast gäller för officiella versioner i stället för lokala versioner på en utvecklardator. Till exempel normaliseras lagrade filsökvägar för officiella versioner. Men på en lokal utvecklingsdator kan felsökaren inte hitta lokala källfiler om filsökvägarna normaliseras.

Kommentar

För närvarande fungerar inställningen endast för true den här egenskapen om du lägger till en specifik SourceLink-providerpaketreferens eller ett <SourceRoot Include="$(MyDirectory)" /> objekt. Mer information finns i dotnet/roslyn issue 55860.

Du kan använda CI-systemets variabel för att villkorligt ange ContinuousIntegrationBuild egenskapen. Variabelnamnet för Azure Pipelines är TF_BUILDtill exempel :

<PropertyGroup Condition="'$(TF_BUILD)' == 'true'">
  <ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>

För GitHub Actions är GITHUB_ACTIONSvariabelnamnet :

<PropertyGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">
  <ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>

CopyDebugSymbolFilesFromPackages

När den här egenskapen är inställd truepå kopieras alla symbolfiler (även kallade PDB-filer) från PackageReference objekt i projektet till byggutdata. Dessa filer kan ge mer informativa stackspårningar för undantag och göra minnesdumpar och spårningar av det program som körs lättare att förstå. Men om du inkluderar de här filerna får du en ökad storlek på distributionspaketet.

Den här egenskapen introducerades i .NET SDK 7.0.100, men den anges som standard inte.

CopyDocumentationFilesFromPackages

När den här egenskapen är inställd truepå kopieras alla genererade XML-dokumentationsfiler från PackageReference objekt i projektet till byggutdata. Observera att om du aktiverar den här funktionen blir storleken på distributionspaketet större.

Den här egenskapen introducerades i .NET SDK 7.0.100, men den anges som standard inte.

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 oet (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 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 versionsgräns (IOS15_1_OR_GREATER)

Mer information om operativsystemspecifika målramverksmonikers 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.0 innebär stöd för net5.0 och så vidare hela vägen tillbaka till .netcoreapp1.0. Så för vart och ett av dessa målramverk definieras ramverket med en minsta gränssymbol för version.

DokumentationFil

Med DocumentationFile egenskapen kan du ange ett filnamn för XML-filen som innehåller dokumentationen för biblioteket. För att IntelliSense ska fungera korrekt med dokumentationen 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 standardnamnet 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 GenerateDocumentationFile genererar kompilatorn en dokumentationsfil.

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

EmbeddedResourceUseDependentUponConvention

Egenskapen EmbeddedResourceUseDependentUponConvention definierar om resursmanifestfilnamn 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 på true, tar den genererade .resources-filen sitt namn från den första typen som definieras i Form1.cs. Om MyNamespace.Form1 är den första typen som definieras i Form1.cs är det genererade filnamnet MyNamespace.Form1.resources.

Kommentar

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

I ett nytt .NET-projekt som är avsett för .NET Core 3.0 eller senare är den här egenskapen som standard inställd på true. Om värdet falseär , och ingen LogicalName, ManifestResourceNameeller DependentUpon metadata anges för EmbeddedResource objektet i projektfilen, baseras resursmanifestfilens namn på rotnamnområdet för projektet och den relativa filsökvägen till .resx-filen . Mer information finns i Så här namnges resursmanifestfiler.

<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örhandsversionsfunktioner ställer du in egenskapen på True.

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

När ett projekt innehåller den här egenskapen inställd Truepå lä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.

AktiveraWindowsTargeting

EnableWindowsTargeting Ange egenskapen till true för att skapa Windows-appar (till exempel Windows Forms eller Windows Presentation Foundation-appar) på en plattform som inte är Windows. Om du inte anger den här egenskapen till truefår du byggvarning NETSDK1100. Det här felet beror på att mål- och körningspaket inte laddas ned automatiskt på plattformar som inte stöds. Genom att ange den här egenskapen laddas dessa paket ned vid korsmål.

Kommentar

Den här egenskapen rekommenderas för närvarande för att tillåta utveckling på plattformar som inte är Windows. Men när programmet är redo att släppas bör det byggas på Windows. När du bygger på en icke-Windows-plattform kanske utdata inte är samma som när du bygger på Windows. I synnerhet är den körbara filen inte markerad som ett Windows-program (vilket innebär att det alltid startar ett konsolfönster) och inte har någon inbäddad ikon.

<PropertyGroup>
  <EnableWindowsTargeting>true</EnableWindowsTargeting>
</PropertyGroup>

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 något filnamn via egenskapen DocumentationFile placeras den genererade XML-filen i samma utdatakatalog som sammansättningen och har samma filnamn (men med ett .xml-tillägg ).

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

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

GenerateRequiresPreviewFeaturesAttribute

Egenskapen GenerateRequiresPreviewFeaturesAttribute är nära relaterad till egenskapen EnablePreviewFeatures . Om biblioteket använder förhandsgranskningsfunktioner men 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 anger GenerateRequiresPreviewFeaturesAttribute egenskapen till Falsemåste du vara säker på att dekorera alla offentliga API:er som förlitar sig på förhandsversionsfunktioner med RequiresPreviewFeaturesAttribute.

OptimizeImplicitlyTriggeredBuild

För att påskynda byggtiden hoppar versioner som implicit utlöses 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 endast när TreatWarningsAsErrors inte trueär . Om du har TreatWarningsAsErrors angett till true men fortfarande vill att implicit utlösta versioner 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>

DisableRuntimeMarshalling

Med DisableRuntimeMarshalling egenskapen kan du ange att du vill inaktivera stöd för runtime-marshalling för projektet. Om den här egenskapen är inställd på trueDisableRuntimeMarshallingAttribute läggs den till i sammansättningen och eventuella P/Invokes- eller delegate-baserade interop följer reglerna för inaktiverad runtime-marshalling.

<PropertyGroup>
    <DisableRuntimeMarshalling>True</DisableRuntimeMarshalling>
</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 skulle matcha objekt utanför projektmappen med en relativ sökväg använder du DefaultItemExcludesInProjectFolder egenskapen i stället för egenskapen DefaultItemExcludes .

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

EnableDefaultItems

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

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

EnableDefaultCompileItems

Egenskapen EnableDefaultCompileItems styr om kompileringsobjekt implicit ingår i projektet. Standardvärdet är true. Ange egenskapen EnableDefaultCompileItems till false för 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. Ange egenskapen EnableDefaultEmbeddedResourceItems till false för 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 ingår 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, som börjar 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 8 men inte vill att standarduppsättningen med kodanalysregler ska ändras anger du AnalysisLevel till 7.

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

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.
8.0 Den uppsättning regler som var tillgängliga för .NET 8-versionen används, även om nyare regler är tillgängliga.
8.0-<mode> Den uppsättning regler som var tillgängliga för .NET 8-versionen används, även om nyare regler är tillgängliga. Värdet <mode> avgör vilka regler som är aktiverade.
8 Den uppsättning regler som var tillgängliga för .NET 8-versionen används, även om nyare regler är tillgängliga.
8-<mode> Den uppsättning regler som var tillgängliga för .NET 8-versionen används, även om nyare regler är tillgängliga. Värdet <mode> avgör vilka regler som är aktiverade.
7.0 Den uppsättning regler som var tillgängliga för .NET 7-versionen används, även om nyare regler är tillgängliga.
7.0-<mode> Den uppsättning regler som var tillgängliga för .NET 7-versionen används, även om nyare regler är tillgängliga. Värdet <mode> avgör vilka regler som är aktiverade.
7 Den uppsättning regler som var tillgängliga för .NET 7-versionen används, även om nyare regler är tillgängliga.
7-<mode> Den uppsättning regler som var tillgängliga för .NET 7-versionen används, även om nyare regler är tillgängliga. 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.

Kommentar

  • Från och med .NET 6, om du anger EnforceCodeStyleInBuild till true, påverkar den här egenskapen regler i kodformat (IDEXXXX) (utöver regler för kodkvalitet).
  • Om du anger ett sammansatt värde för AnalysisLevelbehöver du inte ange en AnalysisMode. Men 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 ä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 specifik 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 är 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> Programregler med en fil
<AnalysisLevelReliability> Tillförlitlighetsregler
<AnalysisLevelSecurity> Säkerhetsregler
<AnalysisLevelStyle> Regler i kodformat (IDEXXXX)
<AnalysisLevelUsage> Användningsregler

AnalysisMode

.NET SDK levereras med alla "CA"-kodkvalitetsregler. Som standard är endast vissa regler aktiverade som byggvarningar 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 byggvarningar anger du värdet till All.

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

I följande tabell visas tillgängliga alternativvärden. De visas i ökande ordning efter antalet regler som de aktiverar.

Värde beskrivning
None Alla regler är inaktiverade. Du kan selektivt välja enskilda regler för att aktivera dem.
Default Standardläge, där vissa regler är aktiverade som byggvarningar, vissa regler aktiveras som Visual Studio IDE-förslag och resten inaktiveras.
Minimum Mer aggressivt läge än Default läge. Vissa förslag som rekommenderas starkt för byggframtvingande aktiveras som byggvarningar. Om du vill se vilka regler detta omfattar kontrollerar du filen %ProgramFiles%/dotnet/sdk/[version]/Sdks/Microsoft.NET.Sdk/analyzeers/build/config/analysislevel_[level]_minimum.editorconfig .
Recommended Mer aggressivt läge än Minimum läge, där fler regler aktiveras som byggvarningar. Om du vill se vilka regler detta omfattar kontrollerar du filen %ProgramFiles%/dotnet/sdk/[version]/Sdks/Microsoft.NET.Sdk/analyzeers/build/config/analysislevel_[level]_recommended.editorconfig .
All Alla regler är aktiverade som byggvarningar*. Du kan selektivt välja bort enskilda regler för att inaktivera dem.

* Följande regler aktiveras inte genom att ange AnalysisMode till All eller genom att ange AnalysisLevel till latest-all: CA1017, CA1045, CA1005, CA1014, CA1060, CA1021 och kodmåttens analysregler (CA1501, CA1502, CA1505, CA1506 och CA1509). Dessa äldre regler kan vara inaktuella i en framtida version. Du kan dock fortfarande aktivera dem individuellt med hjälp av en dotnet_diagnostic.CAxxxx.severity = <severity> post.

Kommentar

  • Från och med .NET 6, om du anger EnforceCodeStyleInBuild till true, påverkar den här egenskapen regler i kodformat (IDEXXXX) (utöver regler för kodkvalitet).
  • Om du till exempel <AnalysisLevel>8-recommended</AnalysisLevel>använder ett sammansatt värde för AnalysisLevel kan du utelämna den här egenskapen helt. Men om du anger båda egenskaperna AnalysisLevel har 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.

AnalysisMode-kategori<>

Den här egenskapen ä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 är värdet AnalysisMode 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> Programregler med en fil
<AnalysisModeReliability> Tillförlitlighetsregler
<AnalysisModeSecurity> Säkerhetsregler
<AnalysisModeStyle> Regler i kodformat (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 aktiveras som standard för projekt som riktar in sig på .NET 5 eller en senare version. Om du utvecklar med .NET 5+ SDK kan du aktivera .NET-kodanalys för SDK-liknande projekt som riktar sig mot tidigare versioner av .NET genom att ange EnableNETAnalyzers egenskapen till true. Om du vill inaktivera kodanalys i alla projekt anger du den här egenskapen till false.

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

Kommentar

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-kodformatsanalys är inaktiverad som standard på build för alla .NET-projekt. Du kan aktivera kodformatsanalys för .NET-projekt genom att ange EnforceCodeStyleInBuild egenskapen till true.

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

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

_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 kodanalyserna 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 den version "5.0.3" av paketet Microsoft.CodeAnalysis.NetAnalyzers. 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>

Egenskaper för körningskonfiguration

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.

AutoreleasePoolSupport

Egenskapen AutoreleasePoolSupport konfigurerar om varje hanterad tråd tar emot en implicit NSAutoreleasePool när den körs på en macOS-plattform som stöds. Mer information finns i AutoreleasePool för hanterade trådar.

<PropertyGroup>
  <AutoreleasePoolSupport>true</AutoreleasePoolSupport>
</PropertyGroup>

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 som true ska köras i globaliseringsvariant 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 globaliserings-invariant-läget är aktiverat. Standardvärdet är true. Ange värdet till false för att tillåta skapande av en ny kultur i globaliseringsvariant läge.

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

Mer information finns i Skapa kultur och skiftlägesmappning i globaliseringsvariant läge.

RetainVMGarbageCollection

Egenskapen RetainVMGarbageCollection konfigurerar skräpinsamlaren för att placera borttagna minnessegment i en väntelista för framtida användning eller släppa dem. Om värdet anges till true uppmanas 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 arbetsstationens skräpinsamling eller serverskräpinsamling. Ange värdet till true för att använda serverskräpinsamling. Mer information finns i Arbetsstation jämfört med 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>

TieredPGO

Egenskapen TieredPGO styr om dynamisk eller nivåindelad profilstyrd optimering (PGO) är aktiverad. Ange värdet till true för att aktivera nivåindelad PGO. Mer information finns i Profilstyrd optimering.

<PropertyGroup>
  <TieredPGO>true</TieredPGO>
</PropertyGroup>

AnvändaWindowsThreadPool

Egenskapen UseWindowsThreadPool konfigurerar om trådpoolens trådhantering delegeras till Windows-trådpoolen (endast Windows). Standardvärdet är false, i vilket fall .NET-trådpoolen används. Mer information finns i Windows-trådpool.

<PropertyGroup>
  <UseWindowsThreadPool>true</UseWindowsThreadPool>
</PropertyGroup>

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 projektTargetFrameworkAssetTargetFallback, 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 egenskapen AssetTargetFallback 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 du riktar in dig på .NET Framework.

Ange den här egenskapen till true för att inaktivera implicita FrameworkReference - eller PackageReference-objekt . Om du anger den här egenskapen till truekan du lägga till explicita referenser till bara de ramverk eller paket som du behöver.

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

DisableTransitiveFrameworkReferenceDownloads

Ställ in egenskapen DisableTransitiveFrameworkReferenceDownloadstrue för att undvika att ladda ned extra körnings- och målpaket som inte refereras direkt av projektet.

<PropertyGroup>
  <DisableTransitiveFrameworkReferenceDownloads>true</DisableTransitiveFrameworkReferenceDownloads>
</PropertyGroup>

DisableTransitiveProjectReferences

Egenskapen DisableTransitiveProjectReferences styr implicita projektreferenser. Ange den här egenskapen till 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 inställningen PrivateAssets="All" på alla beroenden för det beroende projektet.

Om du anger den här egenskapen till truekan du lägga till explicita referenser till bara de projekt du behöver.

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

ManagePackageVersionsCentrally

Egenskapen ManagePackageVersionsCentrally introducerades i .NET 7. Genom att ange den till true i en Directory.Packages.props-fil i roten på lagringsplatsen kan du hantera vanliga beroenden i dina projekt från en plats. Lägg till versioner för vanliga paketberoenden med hjälp av PackageVersion objekt i filen Directory.Packages.props . I de enskilda projektfilerna kan du sedan utelämna Version attribut från alla PackageReference objekt som refererar till centralt hanterade paket.

Exempelfil för Directory.Packages.props :

<PropertyGroup>
  <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
...
<ItemGroup>
  <PackageVersion Include="Microsoft.Extensions.Configuration" Version="7.0.0" />
</ItemGroup>

Enskild projektfil:

<ItemGroup>
  <PackageReference Include="Microsoft.Extensions.Configuration" />
</ItemGroup>

Mer information finns i CPM (Central Package Management).

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ällningsmål.

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

UseMauiEssentials

Ange egenskapen UseMauiEssentials till true för att deklarera en explicit referens till ett projekt eller paket som är beroende av MAUI Essentials. Den här inställningen säkerställer att projektet hämtar rätt referens för det kända ramverket för MAUI Essentials. Om projektet refererar till ett projekt som använder MAUI Essentials men du inte anger den här egenskapen till truekan du stöta på byggvarning NETSDK1186.

<PropertyGroup>
  <UseMauiEssentials>true</UseMauiEssentials>
</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 fel 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 objektet för det här ändamålet FrameworkReference .

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

Kommentar

Vi rekommenderar inte att du åsidosätter Windows SDK-versionen eftersom Windows SDK-målpaketen ingår i .NET 5+ SDK. Uppdatera i stället din version av .NET SDK för att referera till det senaste Windows SDK-paketet. Den här egenskapen bör endast användas i sällsynta fall, till exempel när du använder förhandsgranskningspaket eller behöver å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>

Dricks

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 den programprocess 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>

Testa projektrelaterade egenskaper

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

IsTestProject

Egenskapen IsTestProject betyder att ett projekt är ett testprojekt. När den här egenskapen är inställd truepå verifierar du om projektet refererar till en fristående körbar fil är inaktiverad. Det beror på att testprojekt har en OutputType av Exe men vanligtvis anropar API:er i en refererad körbar fil i stället för att försöka köra. Om ett projekt refererar till ett projekt där IsTestProject är inställt på trueverifieras inte testprojektet som en körbar referens.

Den här egenskapen behövs främst för dotnet test scenariot och har ingen inverkan när du använder vstest.console.exe.

Kommentar

Om projektet anger MSTest SDK behöver du inte ange den här egenskapen. Den ställs in automatiskt. På samma sätt anges den här egenskapen automatiskt för projekt som refererar till NuGet-paketet Microsoft.NET.Test.Sdk som är länkat till VSTest.

IsTestingPlatformApplication

När projektet refererar till paketet Microsoft.Testing.Platform.MSBuild gör inställningen IsTestingPlatformApplication till true (vilket också är standardvärdet om det inte anges) följande:

  • Genererar startpunkten till testprojektet.
  • Genererar konfigurationsfilen.
  • Identifierar tilläggen.

Om du anger egenskapen till false inaktiveras det transitiva beroendet till paketet. Ett transitivt beroende är när ett projekt som refererar till ett annat projekt som refererar till ett visst paket fungerar som om det refererar till paketet. Du ställer vanligtvis in den här egenskapen på i ett icke-testprojekt som refererar till false ett testprojekt. Mer information finns i felet CS8892.

Om testprojektet refererar till MSTest, NUnit eller xUnit anges den här egenskapen till samma värde som EnableMSTestRunner, EnableNUnitRunner eller UseMicrosoftTestingPlatformRunner (för xUnit).

Enable[NugetPackageNameWithoutDots]

Använd en egenskap med mönstret Enable[NugetPackageNameWithoutDots] för att aktivera eller inaktivera Microsoft.Testing.Platform-tillägg.

Om du till exempel vill aktivera kraschdumptillägget (NuGet-paketet Microsoft.Testing.Extensions.CrashDump) anger du EnableMicrosoftTestingExtensionsCrashDump till true.

Mer information finns i Aktivera eller inaktivera tillägg.

EnableAspireTesting

När du använder MSTest-projekt-SDK:t kan du använda EnableAspireTesting egenskapen för att ta in alla beroenden och standarddirektiv using som du behöver för testning med Aspire och MSTest. Den här egenskapen är tillgänglig i MSTest 3.4 och senare versioner.

Mer information finns i Testa med .NET Aspire.

EnablePlaywright

När du använder MSTest-projekt-SDK:t kan du använda EnablePlaywright egenskapen för att ta in alla beroenden och standarddirektiv using som du behöver för testning med Playwright och MSTest. Den här egenskapen är tillgänglig i MSTest 3.4 och senare versioner.

Mer information finns i Dramatiker.

EnableMSTestRunner

Egenskapen EnableMSTestRunner aktiverar eller inaktiverar användningen av MSTest-löparen. MSTest-löparen är ett lätt och bärbart alternativ till VSTest. Den här egenskapen är tillgänglig i MSTest 3.2 och senare versioner.

Kommentar

Om projektet anger MSTest SDK behöver du inte ange den här egenskapen. Den ställs in automatiskt.

EnableNUnitRunner

Egenskapen EnableNUnitRunner aktiverar eller inaktiverar användningen av NUnit-löparen. NUnit-löparen är ett lätt och bärbart alternativ till VSTest. Den här egenskapen är tillgänglig i NUnit3TestAdapter i version 5.0 och senare.

GenerateTestingPlatformEntryPoint

Om du ställer in egenskapen GenerateTestingPlatformEntryPointfalse inaktiveras den automatiska genereringen av programmets startpunkt i ett MSTest-, NUnit- eller xUnit-testprojekt. Du kanske vill ange den här egenskapen till false när du manuellt definierar en startpunkt eller när du refererar till ett testprojekt från en körbar fil som också har en startpunkt.

Mer information finns i felet CS8892.

Om du vill styra genereringen av startpunkten i ett VSTest-projekt använder du GenerateProgramFile egenskapen .

TestingPlatformCaptureOutput

Egenskapen TestingPlatformCaptureOutput styr om alla konsolutdata som körbara testskrivningar registreras och döljs för användaren när du använder dotnet test för att köra Microsoft.Testing.Platform tester. Som standard är konsolens utdata dolda. Dessa utdata innehåller banderoll, versionsinformation och formaterad testinformation. Ange den här egenskapen för false att visa den här informationen tillsammans med MSBuild-utdata.

Mer information finns i Visa fullständiga plattformsutdata.

TestingPlatformCommandLineArguments

Med TestingPlatformCaptureOutput egenskapen kan du ange kommandoradsargument till testappen när du använder dotnet test för att köra Microsoft.Testing.Platform tester. Följande projektfilfragment visar ett exempel.

<PropertyGroup>
  ...
  <TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>

TestingPlatformDotnetTestSupport

Med TestingPlatformDotnetTestSupport egenskapen kan du ange om VSTest ska användas när du använder dotnet test för att köra tester. Om du anger den här egenskapen till trueinaktiveras VSTest och alla Microsoft.Testing.Platform tester körs direkt.

Om du har en lösning som innehåller VSTest-testprojekt samt MSTest-, NUnit- eller XUnit-projekt bör du göra ett anrop per läge (det vill dotnet test säga inte kör tester från både VSTest och de nyare plattformarna i ett anrop).

TestingPlatformShowTestsFailure

Med TestingPlatformShowTestsFailure egenskapen kan du kontrollera om ett enskilt fel eller alla fel i ett misslyckat test rapporteras när du använder dotnet test för att köra tester. Som standard sammanfattas testfel i en .log fil och ett enskilt fel per testprojekt rapporteras till MSBuild. Om du vill visa fel per misslyckat test anger du den här egenskapen till true i projektfilen.

TestingExtensionsProfile

När du använder MSTest-projektets SDKTestingExtensionsProfile kan du med egenskapen välja en profil som ska användas. I följande tabell visas de tillåtna värdena.

Värde beskrivning
Default Aktiverar de rekommenderade tilläggen för den här versionen av MSTest.SDK.
None Inga tillägg är aktiverade.
AllMicrosoft Aktivera alla tillägg som levereras av Microsoft (inklusive tillägg med en restriktiv licens).

Mer information finns i MSTest runner profile (MSTest runner profile).

UseVSTest

Ställ in egenskapen UseVSTesttrue för att växla från MSTest-löparen till VSTest-löparen när du använder MSTest-projektets SDK.

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

AppHostDotNetSearch

Egenskapen AppHostDotNetSearch konfigurerar hur den inbyggda körbara filen som skapas för ett program söker efter en .NET-installation. Den här egenskapen påverkar bara den körbara filen som skapas vid publicering, inte bygge.

<PropertyGroup>
  <AppHostDotNetSearch>Global</AppHostDotNetSearch>
</PropertyGroup>

I följande tabell visas giltiga värden. Du kan ange flera värden, avgränsade med semikolon.

Värde Innebörd
AppLocal Appens körbara mapp
AppRelative Sökväg i förhållande till den körbara appen enligt AppHostRelativeDotNet
EnvironmentVariables Värdet för DOTNET_ROOT[_<arch>] miljövariabler
Global Registrerade och standardmässiga globala installationsplatser

Den här egenskapen introducerades i .NET 9.

AppHostRelativeDotNet

Egenskapen AppHostRelativeDotNet gör det möjligt att ange en relativ sökväg för den körbara appen för att söka efter .NET-installationen när den har konfigurerats för att göra det. Att ange egenskapen AppHostRelativeDotNet innebär att AppHostDotNetSearch är AppRelative. Den här egenskapen påverkar bara den körbara filen som skapas vid publicering, inte bygge.

<PropertyGroup>
  <AppHostRelativeDotNet>./relative/path/to/runtime</AppHostRelativeDotNet>
</PropertyGroup>

Den här egenskapen introducerades i .NET 9.

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 till 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 är avsedda för .NET 6 eller en senare version. Implicita namnområden är standardnamnområden som importeras globalt i ett Visual Basic-projekt. Ange den här egenskapen till true för att inaktivera implicita namnområdesimporter.

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

Implicita användningar

Egenskapen ImplicitUsings kan användas för att aktivera och inaktivera implicita global using direktiv i C#-projekt som riktar sig mot .NET 6 eller en senare version och C# 10 eller en senare version. 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>

Kommentar

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

Om du vill definiera ett explicit global using direktiv lägger du till ett Använda-objekt .

Artiklar

MSBuild-objekt är indata i byggsystemet. Objekt anges enligt deras typ, vilket är elementnamnet. Och är till exempel Compile Reference 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, på 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.

FrameworkReference

Objektet FrameworkReference definierar en referens till ett delat .NET-ramverk.

Attributet Include anger ramverks-ID:t.

Projektfilfragmentet i följande exempel refererar till det Microsoft.AspNetCore.App delade ramverket.

<ItemGroup>
  <FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>

PackageReference

Objektet PackageReference definierar en referens till ett NuGet-paket.

Attributet Include anger paket-ID. Attributet Version anger versions- eller versionsintervallet. 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 exkludera 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 utesluter 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> using static <type> och direktiv.

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

Till 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 finns i aliasdirektiv using och using static <type> direktiv.

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 utanför projektkatalogen och dess underkataloger använder publiceringsmålet objektets Länkmetadata för att avgöra var objektet ska kopieras till. Link avgö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 Link från 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