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:
- ApiCompatEnableRuleAttributesMustMatch
- ApiCompatEnableRuleCannotChangeParameterName
- ApiCompatExcludeAttributesFile
- ApiCompatGenerateSuppressionFile
- ApiCompatPermitUnnecessarySuppressions
- ApiCompatPreserveUnnecessarySuppressions
- ApiCompatRespectInternals
- ApiCompatSuppressionFile
- ApiCompatSuppressionOutputFile
- NoWarn
- RoslynAssembliesPath
ApiCompatStrictMode
När egenskapen är inställd true
på 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 true
omvandlas 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 Title
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 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ärdettrue
. 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övariabelnDOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS
tilltrue
(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
- ApiCompatEnableRuleCannotChangeParameterName
- ApiCompatExcludeAttributesFile
- ApiCompatGenerateSuppressionFile
- ApiCompatPermitUnnecessarySuppressions
- ApiCompatPreserveUnnecessarySuppressions
- ApiCompatRespectInternals
- ApiCompatSuppressionFile
- ApiCompatSuppressionOutputFile
- EnablePackageValidation
- EnableStrictModeForBaselineValidation
- EnableStrictModeForCompatibleFrameworksInPackage
- EnableStrictModeForCompatibleTfms
- NoWarn
- PackageValidationBaselineFrameworkToIgnore
- PackageValidationBaselineName
- PackageValidationBaselineVersion
- PackageValidationReferencePath
- RoslynAssembliesPath
ApiCompatEnableRuleAttributesMustMatch
När egenskapen är inställd true
på 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 true
på 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 true
på aktiverar egenskapen EnableStrictModeForBaselineValidation
strikt läge för paketbaslinjekontroller. Standardvärdet är false
.
EnableStrictModeForCompatibleFrameworksInPackage
När egenskapen är inställd true
på 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 true
på 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.
Publiceringsrelaterade egenskaper
Följande MSBuild-egenskaper dokumenteras i det här avsnittet:
- AppendRuntimeIdentifierToOutputPath
- AppendTargetFrameworkToOutputPath
- CopyLocalLockFileAssemblies
- ErrorOnDuplicatePublishOutputFiles
- GenerateRuntimeConfigDevFile
- GenerateRuntimeConfigurationFiles
- GenerateSatelliteAssembliesForCore
- IsPublishable
- PreserveCompilationContext
- PreserveCompilationReferences
- ProduceReferenceAssemblyInOutDir
- PublishDocumentationFile
- PublishDocumentationFiles
- PublishReferencesDocumentationFiles
- PublishRelease
- PublishSelfContained
- RollForward
- RuntimeFrameworkVersion
- RuntimeIdentifier
- RuntimeIdentifiers
- SatellitResourceLanguages
- SelfContained
- UseAppHost
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 true
kopieras 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 false
till 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å true
skapas satellitsammansättningar av csc.exe i stället. Det kan vara fördelaktigt att använda csc.exe i följande situationer:
- Du vill använda kompilatoralternativet
deterministic
C#. - Du begränsas av det faktum att al.exe inte har något stöd för offentlig signering och hanterar AssemblyInformationalVersionAttribute dåligt.
<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 true
inkluderas XML-dokumentationsfilen för projektet, om en genereras, i publiceringsutdata för projektet. Den här egenskapen är true
som 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 true
vara . Den här egenskapen är true
som standard .
PublishReferencesDocumentationFiles
När den här egenskapen är true
kopieras 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 true
som 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ärdettrue
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:Publish
fö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övariabelnDOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS
tilltrue
(eller något annat värde). När du publicerar en lösning med den här variabeln aktiverad prioriteras det körbara projektetsPublishRelease
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örPublishRelease
kommer 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 publish
må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.
Trimrelaterade egenskaper
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. |
Byggrelaterade egenskaper
Följande MSBuild-egenskaper dokumenteras i det här avsnittet:
- ContinuousIntegrationBuild
- CopyDebugSymbolFilesFromPackages
- CopyDocumentationFilesFromPackages
- DisableImplicitFrameworkDefines
- DokumentationFil
- EmbeddedResourceUseDependentUponConvention
- EnablePreviewFeatures
- AktiveraWindowsTargeting
- GenerateDocumentationFile
- GenerateRequiresPreviewFeaturesAttribute
- OptimizeImplicitlyTriggeredBuild
- DisableRuntimeMarshalling
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 true
på 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_BUILD
till exempel :
<PropertyGroup Condition="'$(TF_BUILD)' == 'true'">
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>
För GitHub Actions är GITHUB_ACTIONS
variabelnamnet :
<PropertyGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>
CopyDebugSymbolFilesFromPackages
När den här egenskapen är inställd true
på 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 true
på 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 false
genererar 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
, ManifestResourceName
eller 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
, ManifestResourceName
eller 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 True
på 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 true
få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 False
må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å true
DisableRuntimeMarshallingAttribute 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:
- DefaultItemExcludesInProjectFolder
- DefaultItemExcludes
- EnableDefaultCompileItems
- EnableDefaultEmbeddedResourceItems
- EnableDefaultItems
- EnableDefaultNoneItems
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
- AnalysisLevel-kategori<>
- AnalysisMode
- AnalysisMode-kategori<>
- CodeAnalysisTreatWarningsAsErrors
- EnableNETAnalyzers
- EnforceCodeStyleInBuild
- _SkipUpgradeNetAnalyzersNuGetWarning
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
latest
standardvä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
AnalysisLevel
behöver du inte ange en AnalysisMode. Men om du gör detAnalysisLevel
har du företräde framförAnalysisMode
. - 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 egenskapernaAnalysisLevel
har företräde framförAnalysisMode
. - 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
- ConcurrentGarbageCollection
- InvariantGlobalization
- FördefinieradeKulturErOnly
- RetainVMGarbageCollection
- ServerGarbageCollection
- ThreadPoolMaxThreads
- ThreadPoolMinThreads
- TieredCompilation
- TieredCompilationQuickJit
- TieredCompilationQuickJitForLoops
- TieredPGO
- AnvändaWindowsThreadPool
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>
Referensrelaterade egenskaper
Följande MSBuild-egenskaper dokumenteras i det här avsnittet:
- AssetTargetFallback
- DisableImplicitFrameworkReferences
- DisableTransitiveFrameworkReferenceDownloads
- DisableTransitiveProjectReferences
- ManagePackageVersionsCentrally
- Återställningsrelaterade egenskaper
- UseMauiEssentials
- ValidateExecutableReferencesMatchSelfContained
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 projektTargetFramework
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 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 true
kan 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 DisableTransitiveFrameworkReferenceDownloads
på true
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 true
har 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 true
kan 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).
Återställningsrelaterade egenskaper
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 true
kan 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.
Körningsrelaterade egenskaper
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
- IsTestingPlatformApplication
- Enable[NugetPackageNameWithoutDots]
- EnableAspireTesting
- EnablePlaywright
- EnableMSTestRunner
- EnableNUnitRunner
- GenerateTestingPlatformEntryPoint
- TestingPlatformCaptureOutput
- TestingPlatformCommandLineArguments
- TestingPlatformDotnetTestSupport
- TestingPlatformShowTestsFailure
- TestingExtensionsProfile
- UseVSTest
IsTestProject
Egenskapen IsTestProject
betyder att ett projekt är ett testprojekt. När den här egenskapen är inställd true
på 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å true
verifieras 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 GenerateTestingPlatformEntryPoint
på false
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 true
inaktiveras 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 UseVSTest
på true
för att växla från MSTest-löparen till VSTest-löparen när du använder MSTest-projektets SDK.
Värdrelaterade egenskaper
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" />
Avgerglobal using Results = global::Microsoft.AspNetCore.Http.Results;
<Using Include="Microsoft.AspNetCore.Http.Results" Static="True" />
Avgerglobal 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.