MSBuild-referentie voor .NET SDK-projecten

Deze pagina is een verwijzing voor de MSBuild-eigenschappen en -items die u kunt gebruiken om .NET-projecten te configureren.

Notitie

Deze pagina is een werk dat wordt uitgevoerd en bevat niet alle nuttige MSBuild-eigenschappen voor de .NET SDK. Zie Common MSBuild-eigenschappen voor een lijst met algemene MSBuild-eigenschappen.

Eigenschappen van assemblyvalidatie

Deze eigenschappen en items worden doorgegeven aan de ValidateAssemblies taak. Zie Assembly-validatie voor meer informatie over assemblyvalidatie.

De volgende MSBuild-eigenschappen worden beschreven in deze sectie:

Notitie

Deze eigenschappen maken nog geen deel uit van de .NET SDK. Als u ze wilt gebruiken, moet u ook een PackageReference aan Microsoft.DotNet.ApiCompat.Task toevoegen.

Daarnaast zijn de volgende eigenschappen die worden beschreven in de eigenschappen van pakketvalidatie ook van toepassing op assemblyvalidatie:

ApiCompatStrictMode

Als deze instelling is ingesteldtrue, geeft de ApiCompatStrictMode eigenschap aan dat API-compatibiliteitscontroles in de strikte modus moeten worden uitgevoerd.

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

ApiCompatValidateAssemblies

De ApiCompatValidateAssemblies eigenschap maakt een reeks validaties mogelijk voor de opgegeven assembly's. Zie Assembly-validatie voor meer informatie.

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

Frameworkeigenschappen

De volgende MSBuild-eigenschappen worden beschreven in deze sectie:

TargetFramework

De TargetFramework eigenschap geeft de doelframeworkversie voor de app op. Zie Doelframeworks in SDK-projecten voor een lijst met geldige doelframework monikers.

<PropertyGroup>
  <TargetFramework>net8.0</TargetFramework>
</PropertyGroup>

Zie Target Frameworks in SDK-projecten voor meer informatie.

TargetFrameworks

Gebruik de TargetFrameworks eigenschap wanneer u wilt dat uw app zich op meerdere platforms richt. Zie Doelframeworks in SDK-projecten voor een lijst met geldige doelframework monikers.

Notitie

Deze eigenschap wordt genegeerd als TargetFramework (singular) is opgegeven.

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

Zie Target Frameworks in SDK-projecten voor meer informatie.

NetStandardImplicitPackageVersion

Notitie

Deze eigenschap is alleen van toepassing op projecten die gebruikmaken van netstandard1.x. Het is niet van toepassing op projecten die gebruikmaken van netstandard2.x.

Gebruik de NetStandardImplicitPackageVersion eigenschap als u een frameworkversie wilt opgeven die lager is dan de metapackage-versie. Het projectbestand in de volgende voorbeelddoelen netstandard1.3 , maar gebruikt de versie 1.6.0 van NETStandard.Library.

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

Eigenschappen van assemblykenmerk

GenerateAssemblyInfo

De GenerateAssemblyInfo eigenschap bepaalt AssemblyInfo het genereren van kenmerken voor het project. De standaardwaarde is true. Hiermee false schakelt u het genereren van het bestand uit:

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

De instelling GeneratedAssemblyInfoFile bepaalt de naam van het gegenereerde bestand.

Wanneer de GenerateAssemblyInfo waarde is true, worden pakketgerelateerde projecteigenschappen omgezet in assemblykenmerken.

Zie Assembly-kenmerken instellen in een projectbestand voor meer informatie over het genereren van assemblykenmerken met behulp van een projectbestand.

GeneratedAssemblyInfoFile

De GeneratedAssemblyInfoFile eigenschap definieert het relatieve of absolute pad van het gegenereerde assembly-infobestand. Standaard ingesteld op een bestand met de naam [project-name]. AssemblyInfo. [cs|vb] in de $(IntermediateOutputPath) map (meestal de obj).

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

Pakketeigenschappen

Beschrijvende eigenschappen

U kunt eigenschappen opgeven zoals PackageId, PackageVersion, PackageIcon, en TitleDescription om het pakket te beschrijven dat wordt gemaakt op basis van uw project. Zie het packdoel voor informatie over deze en andere eigenschappen.

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

PackRelease

De PackRelease eigenschap is vergelijkbaar met de eigenschap PublishRelease , behalve dat deze het standaardgedrag van dotnet pack. Deze eigenschap is geïntroduceerd in .NET 7.

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

Notitie

  • Vanaf de .NET 8 SDK wordt PackRelease standaard ingesteld op true. Zie 'dotnet pack' voor meer informatie over releaseconfiguratie.
  • Alleen .NET 7 SDK: Als u wilt gebruiken PackRelease in een project dat deel uitmaakt van een Visual Studio-oplossing, moet u de omgevingsvariabele DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONStrue instellen op (of een andere waarde). Voor oplossingen met veel projecten verhoogt het instellen van deze variabele de tijd die nodig is om in te pakken.

Eigenschappen van pakketvalidatie

Deze eigenschappen en items worden doorgegeven aan de ValidatePackage taak. Zie het overzicht van pakketvalidatie voor meer informatie over pakketvalidatie.

Zie Eigenschappen van assemblyvalidatie voor de taak voor eigenschappen voor de ValidateAssemblies taak.

De volgende MSBuild-eigenschappen en -items worden beschreven in deze sectie:

ApiCompatEnableRuleAttributesMustMatch

Wanneer deze optie is ingesteld true, schakelt de ApiCompatEnableRuleAttributesMustMatch eigenschap de validatieregel in waarmee wordt gecontroleerd of kenmerken overeenkomen. De standaardwaarde is false.

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

ApiCompatEnableRuleCannotChangeParameterName

Als deze optie is ingesteld true, schakelt de eigenschap de ApiCompatEnableRuleCannotChangeParameterName validatieregel in waarmee wordt gecontroleerd of parameternamen zijn gewijzigd in openbare methoden. De standaardwaarde is false.

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

ApiCompatExcludeAttributesFile

Het ApiCompatExcludeAttributesFile item geeft het pad op naar een bestand dat kenmerken bevat die moeten worden uitgesloten in DocId-indeling .

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

ApiCompatGenerateSuppressionFile

De ApiCompatGenerateSuppressionFile eigenschap geeft aan of een compatibiliteitsonderdrukkingsbestand moet worden gegenereerd.

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

ApiCompatPermitUnnecessarySuppressions

De ApiCompatPermitUnnecessarySuppressions eigenschap geeft aan of onnodige onderdrukkingen in het onderdrukkingsbestand moeten worden toe staan.

De standaardwaarde is false.

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

ApiCompatPreserveUnnecessarySuppressions

De ApiCompatPreserveUnnecessarySuppressions eigenschap geeft aan of onnodige onderdrukkingen moeten worden bewaard bij het regenereren van het onderdrukkingsbestand. Wanneer een bestaand onderdrukkingsbestand opnieuw wordt gegenereerd, wordt de inhoud ervan gelezen, gedeserialiseerd in een set onderdrukkingen en vervolgens opgeslagen in een lijst. Sommige onderdrukkingen zijn mogelijk niet meer nodig als de incompatibiliteit is opgelost. Wanneer de onderdrukkingen terug naar schijf worden geserialiseerd, kunt u ervoor kiezen om alle bestaande (gedeserialiseerde) expressies te behouden door deze eigenschap in te stellen op true.

De standaardwaarde is false.

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

ApiCompatRespectInternals

De ApiCompatRespectInternals eigenschap geeft aan of internal API's moeten worden gecontroleerd op compatibiliteit naast public API's.

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

ApiCompatSuppressionFile

Het ApiCompatSuppressionFile item geeft het pad op naar een of meer onderdrukkingsbestanden waaruit moet worden gelezen. Als dit niet is opgegeven, wordt de projectmap>/CompatibilitySuppressions.xml van het onderdrukkingsbestand <gelezen (indien aanwezig).

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

ApiCompatSuppressionOutputFile

Met de ApiCompatSuppressionOutputFile eigenschap wordt het pad naar een onderdrukkingsbestand opgegeven waar moet worden geschreven wanneer <ApiCompatGenerateSuppressionFile> dat het is true. Als dit niet is opgegeven, wordt het eerste ApiCompatSuppressionFile item gebruikt.

EnablePackageValidation

Met EnablePackageValidation de eigenschap wordt een reeks validaties op het pakket na de Pack taak ingeschakeld. Zie pakketvalidatie voor meer informatie.

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

EnableStrictModeForBaselineValidation

Als deze optie is ingesteldtrue, schakelt de eigenschap strikte EnableStrictModeForBaselineValidation modus in voor controles van pakketbasislijnen. De standaardwaarde is false.

EnableStrictModeForCompatibleFrameworksInPackage

Wanneer deze optie is ingesteldtrue, schakelt de EnableStrictModeForCompatibleFrameworksInPackage eigenschap strikte modus in voor assembly's die compatibel zijn op basis van hun doelframework. De standaardwaarde is false.

EnableStrictModeForCompatibleTfms

Als deze optie is ingesteldtrue, schakelt de eigenschap strikte EnableStrictModeForCompatibleTfms modus in voor contract- en implementatieassembly's voor alle compatibele doelframeworks. De standaardwaarde is true.

NoWarn

De NoWarn eigenschap geeft de diagnostische id's op die moeten worden onderdrukt.

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

PackageValidationBaselineFrameworkToIgnore

Het PackageValidationBaselineFrameworkToIgnore item geeft een doelframework op dat moet worden genegeerd uit het basislijnpakket. De frameworktekenreeks moet exact overeenkomen met de mapnaam in het basislijnpakket.

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

PackageValidationBaselineName

De PackageValidationBaselineName eigenschap geeft de naam van het basislijnpakket op om het huidige pakket te valideren. Indien niet opgegeven, wordt de PackageId waarde gebruikt.

PackageValidationBaselineVersion

De PackageValidationBaselineVersion eigenschap geeft de versie van het basislijnpakket op waarmee het huidige pakket moet worden gevalideerd.

PackageValidationReferencePath

Het PackageValidationReferencePath item geeft het mappad op waar de referentieassembly kan worden gevonden per TFM.

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

RoslynAssembliesPath

De RoslynAssembliesPath eigenschap geeft het pad op naar de map die de Microsoft.CodeAnalysis-assembly's bevat die u wilt gebruiken. U hoeft deze eigenschap alleen in te stellen als u wilt testen met een nieuwere compiler dan wat zich in de SDK bevindt.

De volgende MSBuild-eigenschappen worden beschreven in deze sectie:

AppendTargetFrameworkToOutputPath

De AppendTargetFrameworkToOutputPath eigenschap bepaalt of het doelframework moniker (TFM) wordt toegevoegd aan het uitvoerpad (dat is gedefinieerd door OutputPath). De .NET SDK voegt automatisch het doelframework toe en, indien aanwezig, de runtime-id aan het uitvoerpad. Instelling AppendTargetFrameworkToOutputPath om te false voorkomen dat tfm wordt toegevoegd aan het uitvoerpad. Zonder tfm in het uitvoerpad kunnen meerdere buildartefacten elkaar echter overschrijven.

Voor een .NET 5-app wordt het uitvoerpad bijvoorbeeld gewijzigd van bin\Debug\net5.0 in bin\Debug de volgende instelling:

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

AppendRuntimeIdentifierToOutputPath

De AppendRuntimeIdentifierToOutputPath eigenschap bepaalt of de runtime-id (RID) wordt toegevoegd aan het uitvoerpad. De .NET SDK voegt automatisch het doelframework toe en, indien aanwezig, de runtime-id aan het uitvoerpad. Instelling AppendRuntimeIdentifierToOutputPath om te false voorkomen dat de RID wordt toegevoegd aan het uitvoerpad.

Voor een .NET 5-app en een RID vanwin-x64, wijzigt de volgende instelling bijvoorbeeld het uitvoerpad vanbin\Debug\net5.0\win-x64:bin\Debug\net5.0

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

CopyLocalLockFileAssemblies

De CopyLocalLockFileAssemblies eigenschap is handig voor invoegtoepassingsprojecten die afhankelijk zijn van andere bibliotheken. Als u deze eigenschap trueinstelt op, worden eventuele NuGet-pakketafhankelijkheden gekopieerd naar de uitvoermap. Dat betekent dat u de uitvoer van het uitvoeren van dotnet build uw invoegtoepassing op elke computer kunt gebruiken.

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

Tip

U kunt ook de klassebibliotheek publiceren dotnet publish . Zie dotnet publish voor meer informatie.

ErrorOnDuplicatePublishOutputFiles

De ErrorOnDuplicatePublishOutputFiles eigenschap heeft betrekking op of de SDK een fout genereert NETSDK1148 wanneer MSBuild dubbele bestanden detecteert in de publicatie-uitvoer, maar niet kan bepalen welke bestanden moeten worden verwijderd. Stel de ErrorOnDuplicatePublishOutputFiles eigenschap in op false als u niet wilt dat de fout wordt gegenereerd.

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

Deze eigenschap is geïntroduceerd in .NET 6.

GenerateRuntimeConfigDevFile

Vanaf de .NET 6 SDK wordt het bestand [Appname].runtimesettings.dev.json niet meer standaard gegenereerd tijdens het compileren. Als u wilt dat dit bestand nog steeds wordt gegenereerd, stelt u de GenerateRuntimeConfigDevFile eigenschap in op true.

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

GenerateRuntimeConfigurationFiles

De GenerateRuntimeConfigurationFiles eigenschap bepaalt of runtimeconfiguratieopties uit het runtimeconfig.template.json-bestand worden gekopieerd naar het bestand [appname].runtimeconfig.json . Voor apps waarvoor een runtimeconfig.json-bestand is vereist, dat wil gezegd, die waarvan OutputType de eigenschap is Exe, wordt deze eigenschap standaard ingesteld trueop .

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

GenerateSatelliteAssembliesForCore

De GenerateSatelliteAssembliesForCore eigenschap bepaalt of satellietassembly's worden gegenereerd met behulp van csc.exe of Al.exe (Assembly Linker) in .NET Framework-projecten. (.NET Core- en .NET 5+ projecten gebruiken altijd csc.exe om satellietassembly's te genereren.) Voor .NET Framework-projecten worden satellietassembly's standaard gemaakt door al.exe. Door de GenerateSatelliteAssembliesForCore eigenschap in te truestellen, worden satellietassembly's gemaakt door csc.exe in plaats daarvan. Het gebruik van csc.exe kan in de volgende situaties voordelig zijn:

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

IsPublishable

Met de IsPublishable eigenschap kan het Publish doel worden uitgevoerd. Deze eigenschap is alleen van invloed op processen die gebruikmaken van .*proj-bestanden en het Publish doel, zoals de opdracht dotnet publish . Het heeft geen invloed op het publiceren in Visual Studio, dat gebruikmaakt van het PublishOnly doel. De standaardwaarde is true.

Deze eigenschap is handig als u een oplossingsbestand uitvoert dotnet publish , omdat hiermee automatisch projecten kunnen worden geselecteerd die moeten worden gepubliceerd.

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

PreserveCompilationContext

Met PreserveCompilationContext de eigenschap kan een ingebouwde of gepubliceerde toepassing meer code tijdens runtime compileren met behulp van dezelfde instellingen die tijdens de build zijn gebruikt. De assembly's waarnaar tijdens de build wordt verwezen, worden gekopieerd naar de submap van de ref-submap van de uitvoermap. De namen van de referentieassembly's worden opgeslagen in het .deps.json-bestand van de toepassing, samen met de opties die worden doorgegeven aan de compiler. U kunt deze informatie ophalen met behulp van de DependencyContext.CompileLibraries en DependencyContext.CompilationOptions eigenschappen.

Deze functionaliteit wordt voornamelijk intern gebruikt door ASP.NET Core MVC- en Razor-pagina's ter ondersteuning van runtimecompilatie van Razor-bestanden.

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

PreserveCompilationReferences

De PreserveCompilationReferences eigenschap is vergelijkbaar met de eigenschap PreserveCompilationContext , behalve dat alleen de assembly's waarnaar wordt verwezen, naar de publicatiemap worden gekopieerd en niet naar het .deps.json bestand.

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

Zie Razor SDK-eigenschappen voor meer informatie.

ProduceReferenceAssemblyInOutDir

In .NET 5 en eerdere versies worden referentieassembly's altijd naar de OutDir map geschreven. In .NET 6 en latere versies kunt u de ProduceReferenceAssemblyInOutDir eigenschap gebruiken om te bepalen of verwijzingsassembly's naar de OutDir map worden geschreven. De standaardwaarde is falseen verwijzingsassembly's worden alleen naar de IntermediateOutputPath map geschreven. Stel de waarde in om true verwijzingsassembly's naar de OutDir map te schrijven.

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

Zie Referentieassembly's schrijven naar tussenliggende uitvoer voor meer informatie.

PublishDocumentationFile

Wanneer deze eigenschap is true, wordt het XML-documentatiebestand voor het project, als deze wordt gegenereerd, opgenomen in de publicatie-uitvoer voor het project. Deze eigenschap is standaard ingesteld op true.

Tip

Stel GenerateDocumentationFile in om true tijdens het compileren een XML-documentatiebestand te genereren.

PublishDocumentationFiles

Deze eigenschap is een activeringsvlag voor verschillende andere eigenschappen die bepalen of verschillende soorten XML-documentatiebestanden standaard naar de publicatiemap worden gekopieerd, namelijk PublishDocumentationFile en PublishReferencesDocumentationFiles. Als deze eigenschappen niet zijn ingesteld en deze eigenschap is ingesteld, worden deze eigenschappen standaard ingesteld true. Deze eigenschap is standaard ingesteld op true.

PublishReferencesDocumentationFiles

Wanneer deze eigenschap is true, worden XML-documentatiebestanden voor de verwijzingen van het project gekopieerd naar de publicatiemap, in plaats van alleen runtime-assets zoals DLL-bestanden. Deze eigenschap is standaard ingesteld op true.

PublishRelease

De PublishRelease eigenschap informeert dotnet publish standaard over het gebruik van de Release configuratie in plaats van de Debug configuratie. Deze eigenschap is geïntroduceerd in .NET 7.

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

Notitie

  • Vanaf de .NET 8 SDK wordt PublishRelease standaard opgegeven true voor projecten die gericht zijn op .NET 8 of hoger. Zie 'dotnet publish' (dotnet publish) voor meer informatie over releaseconfiguratie.
  • Deze eigenschap heeft geen invloed op het gedrag van dotnet build /t:Publishen wijzigt alleen de configuratie wanneer deze wordt gepubliceerd via de .NET CLI.
  • Alleen .NET 7 SDK: Als u wilt gebruiken PublishRelease in een project dat deel uitmaakt van een Visual Studio-oplossing, moet u de omgevingsvariabele DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONStrue instellen op (of een andere waarde). Bij het publiceren van een oplossing waarvoor deze variabele is ingeschakeld, heeft de waarde van PublishRelease het uitvoerbare project voorrang en wordt de nieuwe standaardconfiguratie naar andere projecten in de oplossing gestroomd. Als een oplossing meerdere uitvoerbare projecten of projecten op het hoogste niveau met verschillende waarden PublishReleasebevat, wordt de oplossing niet gepubliceerd. Voor oplossingen met veel projecten verhoogt het gebruik van deze instelling de tijd die nodig is om te publiceren.

PublishSelfContained

De PublishSelfContained eigenschap informeert dotnet publish om een app te publiceren als een zelfstandige app. Deze eigenschap is handig wanneer u het --self-contained argument voor de opdracht dotnet publish niet kunt gebruiken, bijvoorbeeld wanneer u op oplossingsniveau publiceert. In dat geval kunt u de PublishSelfContained eigenschap MSBuild toevoegen aan een project- of Directory.Build.Props-bestand .

Deze eigenschap is geïntroduceerd in .NET 7. Het is vergelijkbaar met de eigenschap SelfContained , behalve dat deze specifiek is voor het publish werkwoord. Het is raadzaam om te gebruiken PublishSelfContained in plaats van SelfContained.

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

RollForward

De RollForward eigenschap bepaalt hoe de toepassing een runtime kiest wanneer er meerdere runtimeversies beschikbaar zijn. Deze waarde wordt als instelling rollForward naar de .runtimeconfig.json uitgevoerd.

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

Ingesteld RollForward op een van de volgende waarden:

Weergegeven als Beschrijving
Minor Standaard indien niet opgegeven.
Roll-forward naar de laagste hogere secundaire versie, als de aangevraagde secundaire versie ontbreekt. Als de aangevraagde secundaire versie aanwezig is, wordt het LatestPatch beleid gebruikt.
Major Roll-forward naar de volgende beschikbare hogere primaire versie en laagste secundaire versie, als de aangevraagde primaire versie ontbreekt. Als de aangevraagde primaire versie aanwezig is, wordt het Minor beleid gebruikt.
LatestPatch Doorsturen naar de hoogste patchversie. Met deze waarde wordt het terugdraaien van secundaire versies uitgeschakeld.
LatestMinor Doorsturen naar de hoogste secundaire versie, zelfs als de aangevraagde secundaire versie aanwezig is.
LatestMajor Roll-forward naar de hoogste primaire en hoogste secundaire versie, zelfs als de aangevraagde primaire is aanwezig.
Disable Roll-forward niet, alleen binden aan de opgegeven versie. Dit beleid wordt niet aanbevolen voor algemeen gebruik, omdat hiermee de mogelijkheid om door te schakelen naar de nieuwste patches wordt uitgeschakeld. Deze waarde wordt alleen aanbevolen voor testen.

Zie Het gedrag van de roll-forward van Control voor meer informatie.

RuntimeFrameworkVersion

De RuntimeFrameworkVersion eigenschap geeft de versie van de runtime op die moet worden gebruikt bij het publiceren. Geef een runtimeversie op:

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

Bij het publiceren van een frameworkafhankelijke toepassing geeft deze waarde de minimale versie op die vereist is. Bij het publiceren van een zelfstandige toepassing geeft deze waarde de exacte versie op die vereist is.

RuntimeIdentifier

Met RuntimeIdentifier de eigenschap kunt u één runtime-id (RID) voor het project opgeven. De RID maakt het mogelijk om een zelfstandige implementatie te publiceren.

<PropertyGroup>
  <RuntimeIdentifier>linux-x64</RuntimeIdentifier>
</PropertyGroup>

RuntimeIdentifiers

Met RuntimeIdentifiers de eigenschap kunt u een door puntkomma's gescheiden lijst met runtime-id's (RID's) voor het project opgeven. Gebruik deze eigenschap als u wilt publiceren voor meerdere runtimes. RuntimeIdentifiers wordt gebruikt tijdens het hersteltijd om ervoor te zorgen dat de juiste assets zich in de grafiek bevinden.

Tip

RuntimeIdentifier (singular) kan snellere builds bieden wanneer slechts één runtime is vereist.

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

SatelliteResourceLanguages

Met de SatelliteResourceLanguages eigenschap kunt u opgeven voor welke talen u satellietresourceassembly's wilt behouden tijdens het bouwen en publiceren. Veel NuGet-pakketten bevatten gelokaliseerde resourcesatellietassembly's in het hoofdpakket. Voor projecten die verwijzen naar deze NuGet-pakketten waarvoor geen gelokaliseerde resources nodig zijn, kunnen de gelokaliseerde assembly's de build- en uitvoergrootte onnodig vergroten en publiceren. Door de SatelliteResourceLanguages eigenschap toe te voegen aan uw projectbestand, worden alleen gelokaliseerde assembly's voor de talen die u opgeeft opgenomen in de build- en publicatie-uitvoer. In het volgende projectbestand worden bijvoorbeeld alleen Satellietassembly's voor Engelse (VS) en Duits (Duitsland) bewaard.

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

Notitie

  • U moet deze eigenschap opgeven in het project dat verwijst naar het NuGet-pakket met gelokaliseerde resourcesatellietassembly's.

  • Als u meerdere talen als argument dotnet publishwilt opgeven, moet u drie paar aanhalingstekens toevoegen rond de taal-id's. Voorbeeld:

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

SelfContained

De SelfContained eigenschap informeert dotnet build en dotnet publish publiceert een app als een zelfstandige app. Deze eigenschap is handig wanneer u het --self-contained argument niet kunt gebruiken met de dotnet-opdracht , bijvoorbeeld wanneer u publiceert op oplossingsniveau. In dat geval kunt u de SelfContained eigenschap MSBuild toevoegen aan een project- of Directory.Build.Props-bestand .

Deze eigenschap is vergelijkbaar met de eigenschap PublishSelfContained . Het is raadzaam om te gebruiken PublishSelfContained in plaats van SelfContained indien mogelijk.

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

UseAppHost

De UseAppHost eigenschap bepaalt of er al dan niet een systeemeigen uitvoerbaar bestand wordt gemaakt voor een implementatie. Er is een systeemeigen uitvoerbaar bestand vereist voor zelfstandige implementaties. Een frameworkafhankelijk uitvoerbaar bestand wordt standaard gemaakt. Stel de UseAppHost eigenschap in om het genereren van het uitvoerbare bestand uit te false schakelen.

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

Zie .NET-toepassingsimplementatie voor meer informatie over implementatie.

Er zijn talloze MSBuild-eigenschappen beschikbaar om bijsnijden af te stemmen. Dit is een functie waarmee ongebruikte code van zelfstandige implementaties wordt beperkt. Deze opties worden uitgebreid besproken bij opties voor bijsnijden. De volgende tabel bevat een beknopt overzicht.

Eigenschap Waarden Beschrijving
PublishTrimmed true of false Hiermee bepaalt u of bijsnijden is ingeschakeld tijdens het publiceren.
TrimMode full of partial Standaard is full. Hiermee bepaalt u de granulariteit van het bijsnijden.
SuppressTrimAnalysisWarnings true of false Hiermee bepaalt u of er waarschuwingen voor trimanalyse worden geproduceerd.
EnableTrimAnalyzer true of false Hiermee bepaalt u of er een subset van trimanalysewaarschuwingen wordt geproduceerd. U kunt analyse inschakelen, zelfs als PublishTrimmed deze is ingesteld op false.
ILLinkTreatWarningsAsErrors true of false Hiermee bepaalt u of trimwaarschuwingen worden behandeld als fouten. U kunt deze eigenschap bijvoorbeeld instellen op false wanneer TreatWarningsAsErrors deze is ingesteld op true.
TrimmerSingleWarn true of false Hiermee bepaalt u of één waarschuwing per assembly wordt weergegeven of alle waarschuwingen.
TrimmerRemoveSymbols true of false Hiermee bepaalt u of alle symbolen worden verwijderd uit een bijgesneden toepassing.

De volgende MSBuild-eigenschappen worden beschreven in deze sectie:

C#-compileropties, zoals LangVersion en Nullable, kunnen ook worden opgegeven als MSBuild-eigenschappen in uw projectbestand. Zie C#-compileropties voor meer informatie.

ContinuousIntegrationBuild

De ContinuousIntegrationBuild eigenschap geeft aan of een build wordt uitgevoerd op een CI-server (continue integratie). Wanneer deze eigenschap is ingesteld true, worden instellingen ingeschakeld die alleen van toepassing zijn op officiële builds in plaats van op lokale builds op een ontwikkelcomputer. Opgeslagen bestandspaden worden bijvoorbeeld genormaliseerd voor officiële builds. Maar op een lokale ontwikkelcomputer kan het foutopsporingsprogramma geen lokale bronbestanden vinden als bestandspaden worden genormaliseerd.

Notitie

Het instellen van deze eigenschap true werkt momenteel alleen als u een specifieke bronlinkproviderpakketverwijzing of een <SourceRoot Include="$(MyDirectory)" /> item toevoegt. Zie dotnet/roslyn issue 55860 voor meer informatie.

U kunt de variabele van uw CI-systeem gebruiken om de ContinuousIntegrationBuild eigenschap voorwaardelijk in te stellen. De naam van de variabele voor Azure Pipelines is TF_BUILDbijvoorbeeld:

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

Voor GitHub Actions is GITHUB_ACTIONSde naam van de variabele:

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

CopyDebugSymbolFilesFromPackages

Wanneer deze eigenschap is ingesteld op true, worden alle symboolbestanden (ook wel PDB-bestanden genoemd) van PackageReference items in het project gekopieerd naar de build-uitvoer. Deze bestanden kunnen meer informatieve stacktraceringen bieden voor uitzonderingen en maken geheugendumps en traceringen van de actieve toepassing gemakkelijker te begrijpen. Het opnemen van deze bestanden resulteert echter in een grotere implementatiebundelgrootte.

Deze eigenschap is geïntroduceerd in .NET SDK 7.0.100, hoewel deze standaard niet wordt opgegeven.

CopyDocumentationFilesFromPackages

Wanneer deze eigenschap is ingesteld op true, worden alle gegenereerde XML-documentatiebestanden van PackageReference items in het project gekopieerd naar de build-uitvoer. Houd er rekening mee dat het inschakelen van deze functie resulteert in een grotere implementatiebundelgrootte.

Deze eigenschap is geïntroduceerd in .NET SDK 7.0.100, hoewel deze standaard niet wordt opgegeven.

DisableImplicitFrameworkDefines

De DisableImplicitFrameworkDefines eigenschap bepaalt of de SDK preprocessorsymbolen genereert voor het doelframework en het platform voor het .NET-project. Wanneer deze eigenschap is ingesteld op false of is uitgeschakeld (dit is de standaardwaarde), worden preprocessorsymbolen gegenereerd voor:

  • Framework zonder versie (NETFRAMEWORK, NETSTANDARD, NET)
  • Framework met versie (NET48, NETSTANDARD2_0, NET6_0)
  • Framework met minimale versiegrens (NET48_OR_GREATER, NETSTANDARD2_0_OR_GREATER, NET6_0_OR_GREATER)

Zie Doelframeworks voor meer informatie over doelframework monikers en deze impliciete preprocessorsymbolen.

Als u bovendien een besturingssysteemspecifiek doelframework opgeeft in het project (bijvoorbeeld net6.0-android), worden de volgende preprocessorsymbolen gegenereerd:

  • Platform zonder versie (ANDROID, IOS, WINDOWS)
  • Platform met versie (IOS15_1)
  • Platform met minimale versiegrens (IOS15_1_OR_GREATER)

Zie OS-specifieke TFM's voor meer informatie over besturingssysteemspecifieke doelframeworks.

Als uw doelframework ten slotte ondersteuning voor oudere doelframeworks impliceert, worden preprocessorsymbolen voor die oudere frameworks verzonden. Impliceert bijvoorbeeld net6.0ondersteuning voor net5.0 enzovoort helemaal terug naar .netcoreapp1.0. Voor elk van deze doelframeworks wordt het framework met het minimumgrenssymbool voor versie gedefinieerd.

DocumentationFile

Met DocumentationFile de eigenschap kunt u een bestandsnaam opgeven voor het XML-bestand dat de documentatie voor uw bibliotheek bevat. Als IntelliSense correct werkt met uw documentatie, moet de bestandsnaam hetzelfde zijn als de assemblynaam en moet deze zich in dezelfde map bevinden als de assembly. Als u deze eigenschap niet opgeeft, maar u GenerateDocumentationFile true wel instelt op, wordt de naam van het documentatiebestand standaard ingesteld op de naam van uw assembly, maar met een .xml bestandsextensie. Daarom is het vaak eenvoudiger om deze eigenschap weg te laten en in plaats daarvan de eigenschap GenerateDocumentationFile te gebruiken.

Als u deze eigenschap opgeeft, maar generateDocumentationFilefalseinstelt, genereert de compiler geen documentatiebestand. Als u deze eigenschap opgeeft en de eigenschap GenerateDocumentationFile weglaat, genereert de compiler wel een documentatiebestand.

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

EmbeddedResourceUseDependentUponConvention

De EmbeddedResourceUseDependentUponConvention eigenschap bepaalt of namen van bronmanifestbestanden worden gegenereerd op basis van typegegevens in bronbestanden die zich samen met resourcebestanden bevinden. Als Form1.resx zich bijvoorbeeld in dezelfde map bevindt als Form1.cs en EmbeddedResourceUseDependentUponConvention is ingesteld trueop, neemt het gegenereerde .resources-bestand de naam van het eerste type dat is gedefinieerd in Form1.cs. Als MyNamespace.Form1 dit het eerste type is dat is gedefinieerd in Form1.cs, is de gegenereerde bestandsnaam MyNamespace.Form1.resources.

Notitie

Als LogicalName, ManifestResourceNameof DependentUpon metagegevens worden opgegeven voor een EmbeddedResource item, is de gegenereerde manifestbestandsnaam voor dat resourcebestand gebaseerd op die metagegevens.

In een nieuw .NET-project dat is gericht op .NET Core 3.0 of een latere versie, is deze eigenschap standaard ingesteld op true. Als dit is ingesteld op false, en nee LogicalName, ManifestResourceNameof DependentUpon metagegevens zijn opgegeven voor het EmbeddedResource item in het projectbestand, wordt de naam van het bronmanifestbestand gebaseerd op de hoofdnaamruimte voor het project en het relatieve bestandspad naar het RESX-bestand . Zie De naam van bronmanifestbestanden voor meer informatie.

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

EnablePreviewFeatures

De EnablePreviewFeatures eigenschap bepaalt of uw project afhankelijk is van api's of assembly's die zijn ingericht met het RequiresPreviewFeaturesAttribute kenmerk. Dit kenmerk wordt gebruikt om aan te geven dat een API of assembly gebruikmaakt van functies die als preview worden beschouwd voor de SDK-versie die u gebruikt. Preview-functies worden niet ondersteund en kunnen in een toekomstige versie worden verwijderd. Als u het gebruik van preview-functies wilt inschakelen, stelt u de eigenschap in op True.

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

Wanneer een project deze eigenschap bevat die is ingesteld Trueop, wordt het volgende kenmerk op assemblyniveau toegevoegd aan het AssemblyInfo.cs-bestand :

[assembly: RequiresPreviewFeatures]

Een analyse waarschuwt of dit kenmerk aanwezig is op afhankelijkheden voor projecten waarop EnablePreviewFeatures deze niet is ingesteld True.

Auteurs van bibliotheken die preview-assembly's willen verzenden, moeten deze eigenschap instellen op True. Als een assembly moet worden verzonden met een combinatie van preview- en niet-preview-API's, raadpleegt u de sectie GenerateRequiresPreviewFeaturesAttribute hieronder.

EnableWindowsTargeting

Stel de EnableWindowsTargeting eigenschap in om true Windows-apps (bijvoorbeeld Windows Forms- of Windows Presentation Foundation-apps) te bouwen op een niet-Windows-platform. Als u deze eigenschap trueniet instelt op, krijgt u NETSDK1100 buildwaarschuwing. Deze fout treedt op omdat doel- en runtimepakketten niet automatisch worden gedownload op platforms die niet worden ondersteund. Door deze eigenschap in te stellen, worden deze packs gedownload wanneer ze kruislings worden gericht.

Notitie

Deze eigenschap wordt momenteel aanbevolen om ontwikkeling toe te staan op niet-Windows-platforms. Maar wanneer de toepassing klaar is om te worden vrijgegeven, moet deze worden gebouwd op Windows. Wanneer u bouwt op een niet-Windows-platform, is de uitvoer mogelijk niet hetzelfde als bij het bouwen op Windows. Het uitvoerbare bestand is met name niet gemarkeerd als een Windows-toepassing (wat betekent dat het altijd een consolevenster start) en geen pictogram heeft ingesloten.

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

GenerateDocumentationFile

De GenerateDocumentationFile eigenschap bepaalt of de compiler een XML-documentatiebestand voor uw bibliotheek genereert. Als u deze eigenschap true instelt op en u geen bestandsnaam opgeeft via de eigenschap DocumentationFile, wordt het gegenereerde XML-bestand in dezelfde uitvoermap geplaatst als uw assembly en heeft dezelfde bestandsnaam (maar met een .xml extensie).

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

Zie xml-documentatieopmerkingen (C#), documenteer uw code met XML (Visual Basic) of documenteer uw code met XML (Visual Basic) of Documenteer uw code met XML (F#) voor meer informatie over het genereren van documentatie uit codeopmerkingen.

GenerateRequiresPreviewFeaturesAttribute

De GenerateRequiresPreviewFeaturesAttribute eigenschap is nauw verwant aan de eigenschap EnablePreviewFeatures . Als uw bibliotheek preview-functies gebruikt, maar u niet wilt dat de hele assembly wordt gemarkeerd met het RequiresPreviewFeaturesAttribute kenmerk, waardoor consumenten preview-functies moeten inschakelen, stelt u deze eigenschap in op False.

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

Belangrijk

Als u de GenerateRequiresPreviewFeaturesAttribute eigenschap Falseinstelt op , moet u zeker zijn om alle openbare API's te versieren die afhankelijk zijn van preview-functies met RequiresPreviewFeaturesAttribute.

OptimizeImplicitlyTriggeredBuild

Om de buildtijd te versnellen, slaan builds die impliciet worden geactiveerd door Visual Studio codeanalyse over, inclusief null-analyse. Visual Studio activeert bijvoorbeeld een impliciete build wanneer u tests uitvoert. Impliciete builds worden echter alleen geoptimaliseerd als TreatWarningsAsErrors dat niet truehet enige is. Als u deze optie hebt TreatWarningsAsErrors ingesteld true op maar u nog steeds impliciet geactiveerde builds wilt optimaliseren, kunt u instellen OptimizeImplicitlyTriggeredBuild op True. Als u buildoptimalisatie wilt uitschakelen voor impliciet geactiveerde builds, stelt u in op OptimizeImplicitlyTriggeredBuildFalse.

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

DisableRuntimeMarshalling

Met de DisableRuntimeMarshalling eigenschap kunt u opgeven dat u ondersteuning voor runtime-marshalling voor uw project wilt uitschakelen. Als deze eigenschap is ingesteld op true, wordt de DisableRuntimeMarshallingAttribute eigenschap toegevoegd aan de assembly en worden P/Invokes of op gemachtigden gebaseerde interop de regels voor uitgeschakelde runtime marshalling gevolgd.

<PropertyGroup>
    <DisableRuntimeMarshalling>True</DisableRuntimeMarshalling>
</PropertyGroup>

Standaardeigenschappen voor itemopname

De volgende MSBuild-eigenschappen worden beschreven in deze sectie:

Zie Standaard-insluitingen en uitsluitingen voor meer informatie.

DefaultItemExcludes

Gebruik de DefaultItemExcludes eigenschap om globpatronen te definiëren voor bestanden en mappen die moeten worden uitgesloten van de insluiting, uitsluiting en verwijder globs. Standaard worden de mappen ./bin en ./obj uitgesloten van de glob-patronen.

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

DefaultItemExcludesInProjectFolder

Gebruik de DefaultItemExcludesInProjectFolder eigenschap om glob-patronen te definiëren voor bestanden en mappen in de projectmap die moeten worden uitgesloten van het opnemen, uitsluiten en verwijderen van globs. Mappen die beginnen met een punt (.), zoals .git en .vs, worden standaard uitgesloten van de glob-patronen.

Deze eigenschap is vergelijkbaar met de DefaultItemExcludes eigenschap, behalve dat deze alleen bestanden en mappen in de projectmap beschouwt. Wanneer een globpatroon onbedoeld items buiten de projectmap met een relatief pad zou vinden, gebruikt u de DefaultItemExcludesInProjectFolder eigenschap in plaats van de DefaultItemExcludes eigenschap.

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

EnableDefaultItems

De EnableDefaultItems eigenschap bepaalt of items, ingesloten resource-items en None items impliciet zijn opgenomen in het project. De standaardwaarde is true. Stel de EnableDefaultItems eigenschap in om alle impliciete bestandsopname uit te false schakelen.

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

EnableDefaultCompileItems

De EnableDefaultCompileItems eigenschap bepaalt of compileeritems impliciet zijn opgenomen in het project. De standaardwaarde is true. Stel de EnableDefaultCompileItems eigenschap in om impliciete opname van *.cs en andere taalextensiebestanden uit te false schakelen.

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

EnableDefaultEmbeddedResourceItems

De EnableDefaultEmbeddedResourceItems eigenschap bepaalt of ingesloten resource-items impliciet zijn opgenomen in het project. De standaardwaarde is true. Stel de EnableDefaultEmbeddedResourceItems eigenschap in om impliciete opname van ingesloten resourcebestanden uit te false schakelen.

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

EnableDefaultNoneItems

De EnableDefaultNoneItems eigenschap bepaalt of None items (bestanden die geen rol hebben in het buildproces) impliciet zijn opgenomen in het project. De standaardwaarde is true. Stel de EnableDefaultNoneItems eigenschap in om impliciete opname van None items uit te false schakelen.

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

Eigenschappen van codeanalyse

De volgende MSBuild-eigenschappen worden beschreven in deze sectie:

AnalysisLevel

Met de AnalysisLevel eigenschap kunt u een set codeanalyses opgeven die moet worden uitgevoerd volgens een .NET-release. Elke .NET-release, te beginnen in .NET 5, heeft een set regels voor codeanalyse. Van die set worden uw code geanalyseerd door de regels die standaard zijn ingeschakeld voor die release. Als u bijvoorbeeld een upgrade uitvoert naar .NET 8, maar niet wilt dat de standaardset codeanalyseregels worden gewijzigd, ingesteld op AnalysisLevel7.

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

U kunt eventueel vanaf .NET 6 een samengestelde waarde opgeven voor deze eigenschap die ook aangeeft hoe agressief regels moeten worden ingeschakeld. Samengestelde waarden hebben de vorm <version>-<mode>, waarbij de <mode> waarde een van de AnalysisMode-waarden is. In het volgende voorbeeld wordt de preview-versie van codeanalyses gebruikt en wordt de aanbevolen set regels ingeschakeld.

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

Standaardwaarde:

  • Als uw project is gericht op .NET 5 of hoger of als u de eigenschap AnalysisMode hebt toegevoegd, is latestde standaardwaarde.
  • Anders wordt deze eigenschap weggelaten, tenzij u deze expliciet aan het projectbestand toevoegt.

In de volgende tabel ziet u de waarden die u kunt opgeven.

Weergegeven als Betekenis
latest De meest recente codeanalyses die zijn uitgebracht, worden gebruikt. Dit is de standaardinstelling.
latest-<mode> De meest recente codeanalyses die zijn uitgebracht, worden gebruikt. De <mode> waarde bepaalt welke regels zijn ingeschakeld.
preview De nieuwste codeanalyses worden gebruikt, zelfs als ze in preview zijn.
preview-<mode> De nieuwste codeanalyses worden gebruikt, zelfs als ze in preview zijn. De <mode> waarde bepaalt welke regels zijn ingeschakeld.
8.0 De set regels die beschikbaar waren voor de .NET 8-release, wordt gebruikt, zelfs als er nieuwere regels beschikbaar zijn.
8.0-<mode> De set regels die beschikbaar waren voor de .NET 8-release, wordt gebruikt, zelfs als er nieuwere regels beschikbaar zijn. De <mode> waarde bepaalt welke regels zijn ingeschakeld.
8 De set regels die beschikbaar waren voor de .NET 8-release, wordt gebruikt, zelfs als er nieuwere regels beschikbaar zijn.
8-<mode> De set regels die beschikbaar waren voor de .NET 8-release, wordt gebruikt, zelfs als er nieuwere regels beschikbaar zijn. De <mode> waarde bepaalt welke regels zijn ingeschakeld.
7.0 De set regels die beschikbaar waren voor de .NET 7-release, wordt gebruikt, zelfs als er nieuwere regels beschikbaar zijn.
7.0-<mode> De set regels die beschikbaar waren voor de .NET 7-release, wordt gebruikt, zelfs als er nieuwere regels beschikbaar zijn. De <mode> waarde bepaalt welke regels zijn ingeschakeld.
7 De set regels die beschikbaar waren voor de .NET 7-release, wordt gebruikt, zelfs als er nieuwere regels beschikbaar zijn.
7-<mode> De set regels die beschikbaar waren voor de .NET 7-release, wordt gebruikt, zelfs als er nieuwere regels beschikbaar zijn. De <mode> waarde bepaalt welke regels zijn ingeschakeld.
6.0 De set regels die beschikbaar waren voor de .NET 6-release, wordt gebruikt, zelfs als er nieuwere regels beschikbaar zijn.
6.0-<mode> De set regels die beschikbaar waren voor de .NET 6-release, wordt gebruikt, zelfs als er nieuwere regels beschikbaar zijn. De <mode> waarde bepaalt welke regels zijn ingeschakeld.
6 De set regels die beschikbaar waren voor de .NET 6-release, wordt gebruikt, zelfs als er nieuwere regels beschikbaar zijn.
6-<mode> De set regels die beschikbaar waren voor de .NET 6-release, wordt gebruikt, zelfs als er nieuwere regels beschikbaar zijn. De <mode> waarde bepaalt welke regels zijn ingeschakeld.
5.0 De set regels die beschikbaar waren voor de .NET 5-release, wordt gebruikt, zelfs als er nieuwere regels beschikbaar zijn.
5.0-<mode> De set regels die beschikbaar waren voor de .NET 5-release, wordt gebruikt, zelfs als er nieuwere regels beschikbaar zijn. De <mode> waarde bepaalt welke regels zijn ingeschakeld.
5 De set regels die beschikbaar waren voor de .NET 5-release, wordt gebruikt, zelfs als er nieuwere regels beschikbaar zijn.
5-<mode> De set regels die beschikbaar waren voor de .NET 5-release, wordt gebruikt, zelfs als er nieuwere regels beschikbaar zijn. De <mode> waarde bepaalt welke regels zijn ingeschakeld.

Notitie

  • Als u EnforceCodeStyleInBuild true instelt in .NET 6, is deze eigenschap van invloed op IDEXXXX-regels (codestijl) (naast regels voor codekwaliteit).
  • Als u een samengestelde waarde instelt voorAnalysisLevel, hoeft u geen AnalysisMode op te geven. Als u dat doet, AnalysisLevel heeft u echter voorrang op AnalysisMode.
  • Deze eigenschap heeft geen effect op codeanalyse in projecten die niet verwijzen naar een project-SDK, bijvoorbeeld verouderde .NET Framework-projecten die verwijzen naar het NuGet-pakket Microsoft.CodeAnalysis.NetAnalyzers.

AnalysisLevel-categorie<>

Deze eigenschap is hetzelfde als AnalysisLevel, behalve dat deze alleen van toepassing is op een specifieke categorie codeanalyseregels. Met deze eigenschap kunt u een andere versie van codeanalyses voor een specifieke categorie gebruiken of regels op een ander niveau in- of uitschakelen voor de andere regelcategorieën. Als u deze eigenschap weglaat voor een bepaalde categorie regels, wordt standaard de waarde AnalysisLevel gebruikt. De beschikbare waarden zijn hetzelfde als die voor AnalysisLevel.

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

De volgende tabel bevat de naam van de eigenschap voor elke regelcategorie.

Eigenschapsnaam Regelcategorie
<AnalysisLevelDesign> Ontwerpregels
<AnalysisLevelDocumentation> Documentatieregels
<AnalysisLevelGlobalization> Globalisatieregels
<AnalysisLevelInteroperability> Regels voor draagbaarheid en interoperabiliteit
<AnalysisLevelMaintainability> Regels voor onderhoudbaarheid
<AnalysisLevelNaming> Naamgevingsregels
<AnalysisLevelPerformance> Prestatieregels
<AnalysisLevelSingleFile> Toepassingsregels met één bestand
<AnalysisLevelReliability> Betrouwbaarheidsregels
<AnalysisLevelSecurity> Beveiligingsregels
<AnalysisLevelStyle> Regels voor codestijl (IDEXXXX)
<AnalysisLevelUsage> Gebruiksregels

AnalysisMode

De .NET SDK wordt geleverd met alle 'CA'-codekwaliteitsregels. Standaard worden slechts enkele regels ingeschakeld als buildwaarschuwingen in elke .NET-release. Met AnalysisMode de eigenschap kunt u de set regels aanpassen die standaard is ingeschakeld. U kunt overschakelen naar een agressievere analysemodus waar u zich afzonderlijk kunt afmelden voor regels of een meer conservatieve analysemodus waarin u zich kunt aanmelden voor specifieke regels. Als u bijvoorbeeld alle regels wilt inschakelen als buildwaarschuwingen, stelt u de waarde in op All.

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

In de volgende tabel ziet u de beschikbare optiewaarden. Ze worden weergegeven in oplopende volgorde van het aantal regels dat ze inschakelen.

Weergegeven als Beschrijving
None Alle regels zijn uitgeschakeld. U kunt selectief kiezen voor afzonderlijke regels om ze in te schakelen.
Default Standaardmodus, waarbij bepaalde regels zijn ingeschakeld als buildwaarschuwingen, worden bepaalde regels ingeschakeld als Visual Studio IDE-suggesties en de rest is uitgeschakeld.
Minimum Agressievere modus dan Default modus. Bepaalde suggesties die sterk worden aanbevolen voor het afdwingen van builds, worden ingeschakeld als buildwaarschuwingen. Als u wilt zien welke regels dit omvat, inspecteert u het bestand %ProgramFiles%/dotnet/sdk/[version]/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_[level]_minimum.editorconfig .
Recommended Agressievere modus dan Minimum de modus, waarbij meer regels zijn ingeschakeld als buildwaarschuwingen. Als u wilt zien welke regels dit omvat, inspecteert u het bestand %ProgramFiles%/dotnet/sdk/[version]/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_[level]_recommended.editorconfig .
All Alle regels worden ingeschakeld als buildwaarschuwingen*. U kunt selectief afmelden voor afzonderlijke regels om ze uit te schakelen.

* De volgende regels zijn niet ingeschakeld door instelling in of door in te All stellen AnalysisModeAnalysisLevel oplatest-all: CA1017, CA1045, CA1005, CA1014, CA1060, CA1021 en de regels voor metrische gegevensanalyse (CA1501, CA1502, CA1505, CA1506 en CA1509). Deze verouderde regels zijn mogelijk afgeschaft in een toekomstige versie. U kunt ze echter nog steeds afzonderlijk inschakelen met behulp van een dotnet_diagnostic.CAxxxx.severity = <severity> vermelding.

Notitie

  • Als u EnforceCodeStyleInBuild true instelt in .NET 6, is deze eigenschap van invloed op IDEXXXX-regels (codestijl) (naast regels voor codekwaliteit).
  • Als u bijvoorbeeld een samengestelde waarde voor AnalysisLevel gebruikt, <AnalysisLevel>8-recommended</AnalysisLevel>kunt u deze eigenschap helemaal weglaten. Als u echter beide eigenschappen opgeeft, AnalysisLevel heeft voorrang op AnalysisMode.
  • Deze eigenschap heeft geen effect op codeanalyse in projecten die niet verwijzen naar een project-SDK, bijvoorbeeld verouderde .NET Framework-projecten die verwijzen naar het NuGet-pakket Microsoft.CodeAnalysis.NetAnalyzers.

AnalysisMode-categorie<>

Deze eigenschap is hetzelfde als AnalysisMode, behalve dat deze alleen van toepassing is op een specifieke categorie codeanalyseregels. Met deze eigenschap kunt u regels op een ander niveau in- of uitschakelen voor de andere regelcategorieën. Als u deze eigenschap weglaat voor een bepaalde categorie regels, wordt deze standaard ingesteld op de AnalysisMode-waarde . De beschikbare waarden zijn hetzelfde als die voor AnalysisMode.

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

De volgende tabel bevat de naam van de eigenschap voor elke regelcategorie.

Eigenschapsnaam Regelcategorie
<AnalysisModeDesign> Ontwerpregels
<AnalysisModeDocumentation> Documentatieregels
<AnalysisModeGlobalization> Globalisatieregels
<AnalysisModeInteroperability> Regels voor draagbaarheid en interoperabiliteit
<AnalysisModeMaintainability> Regels voor onderhoudbaarheid
<AnalysisModeNaming> Naamgevingsregels
<AnalysisModePerformance> Prestatieregels
<AnalysisModeSingleFile> Toepassingsregels met één bestand
<AnalysisModeReliability> Betrouwbaarheidsregels
<AnalysisModeSecurity> Beveiligingsregels
<AnalysisModeStyle> Regels voor codestijl (IDEXXXX)
<AnalysisModeUsage> Gebruiksregels

CodeAnalysisTreatWarningsAsErrors

CodeAnalysisTreatWarningsAsErrors Met de eigenschap kunt u configureren of waarschuwingen voor codekwaliteitsanalyse (CAxxxx) moeten worden behandeld als waarschuwingen en de build verbreken. Als u de vlag gebruikt bij het -warnaserror bouwen van uw projecten, worden waarschuwingen voor kwaliteitsanalyse van .NET-code ook behandeld als fouten. Als u niet wilt dat waarschuwingen voor codekwaliteitsanalyse worden behandeld als fouten, kunt u de CodeAnalysisTreatWarningsAsErrors eigenschap false MSBuild instellen op in uw projectbestand.

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

EnableNETAnalyzers

.NET-codekwaliteitsanalyse is standaard ingeschakeld voor projecten die gericht zijn op .NET 5 of een latere versie. Als u ontwikkelt met behulp van de .NET 5+ SDK, kunt u .NET-codeanalyse inschakelen voor SDK-projecten die gericht zijn op eerdere versies van .NET door de EnableNETAnalyzers eigenschap in te stellen op true. Als u codeanalyse in een project wilt uitschakelen, stelt u deze eigenschap in op false.

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

Notitie

Deze eigenschap is specifiek van toepassing op de ingebouwde analyses in de .NET 5+ SDK. Deze moet niet worden gebruikt wanneer u een NuGet-codeanalysepakket installeert.

EnforceCodeStyleInBuild

Analyse van .NET-codestijlen is standaard uitgeschakeld voor build voor alle .NET-projecten. U kunt codestijlanalyse voor .NET-projecten inschakelen door de EnforceCodeStyleInBuild eigenschap in te stellen op true.

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

Alle codestijlregels die zijn geconfigureerd om waarschuwingen of fouten te zijn, worden uitgevoerd bij het maken en rapporteren van schendingen.

_SkipUpgradeNetAnalyzersNuGetWarning

_SkipUpgradeNetAnalyzersNuGetWarning Met de eigenschap kunt u configureren of u een waarschuwing ontvangt als u codeanalyses gebruikt van een NuGet-pakket dat verouderd is in vergelijking met de codeanalyses in de nieuwste .NET SDK. De waarschuwing ziet er ongeveer als volgt uit:

De .NET SDK bevat nieuwere analyses met versie 6.0.0 dan versie 5.0.3 van het pakket Microsoft.CodeAnalysis.NetAnalyzers. Werk deze pakketreferentie bij of verwijder deze.

Als u deze waarschuwing wilt verwijderen en de versie van codeanalyses in het NuGet-pakket wilt blijven gebruiken, stelt u deze in _SkipUpgradeNetAnalyzersNuGetWarningtrue het projectbestand in.

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

Eigenschappen van runtimeconfiguratie

U kunt bepaalde runtimegedrag configureren door MSBuild-eigenschappen op te geven in het projectbestand van de app. Zie Runtime-configuratie-instellingen voor meer informatie over andere manieren om runtimegedrag te configureren.

AutoreleasePoolSupport

De AutoreleasePoolSupport eigenschap configureert of elke beheerde thread een impliciete NSAutoreleasePool ontvangt wanneer deze wordt uitgevoerd op een ondersteund macOS-platform. Zie voor meer informatie AutoreleasePool voor beheerde threads.

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

ConcurrentGarbageCollection

De ConcurrentGarbageCollection eigenschap configureert of achtergrond (gelijktijdige) garbagecollection is ingeschakeld. Stel de waarde in om garbagecollection op de achtergrond uit te false schakelen. Zie Achtergrond GC voor meer informatie.

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

InvariantGlobalization

De InvariantGlobalization eigenschap configureert of de app wordt uitgevoerd in de modus Globalization-invariant , wat betekent dat deze geen toegang heeft tot cultuurspecifieke gegevens. Stel de waarde in op true uitvoering in de globalization-invariant-modus. Zie de invariantmodus voor meer informatie.

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

Vooraf gedefinieerdeCulturesOnly

In .NET 6 en latere versies configureert de PredefinedCulturesOnly eigenschap of apps andere culturen dan de invariante cultuur kunnen maken wanneer de globalisatie-invariantmodus is ingeschakeld. De standaardwaarde is true. Stel de waarde in om false het maken van een nieuwe cultuur in de modus Globalization-invariant toe te staan.

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

Zie Culture creation and case mapping in globalization-invariant mode voor meer informatie.

RetainVMGarbageCollection

De RetainVMGarbageCollection eigenschap configureert de garbagecollector om verwijderde geheugensegmenten op een stand-bylijst te plaatsen voor toekomstig gebruik of deze vrij te geven. Als u de waarde instelt om true de garbagecollector de segmenten op een stand-bylijst te plaatsen. Zie VM behouden voor meer informatie.

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

ServerGarbageCollection

De ServerGarbageCollection eigenschap configureert of de toepassing gebruikmaakt van garbagecollection van werkstations of garbagecollection van de server. Stel de waarde in om true de garbagecollection van de server te gebruiken. Zie Werkstation versus server voor meer informatie.

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

ThreadPoolMaxThreads

De ThreadPoolMaxThreads eigenschap configureert het maximum aantal threads voor de werkrolthreadpool. Zie Maximumthreads voor meer informatie.

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

ThreadPoolMinThreads

De ThreadPoolMinThreads eigenschap configureert het minimum aantal threads voor de werkrolthreadgroep. Zie Minimumthreads voor meer informatie.

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

TieredCompilation

De TieredCompilation eigenschap configureert of de Just-In-Time-compiler (JIT) gebruikmaakt van gelaagde compilatie. Stel de waarde in om gelaagde compilatie uit te false schakelen. Zie Gelaagde compilatie voor meer informatie.

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

TieredCompilationQuickJit

De TieredCompilationQuickJit eigenschap configureert of de JIT-compiler snelle JIT gebruikt. Stel de waarde in om snelle JIT uit te false schakelen. Zie Snelle JIT voor meer informatie.

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

TieredCompilationQuickJitForLoops

De TieredCompilationQuickJitForLoops eigenschap configureert of de JIT-compiler snelle JIT gebruikt op methoden die lussen bevatten. Stel de waarde in om snelle JIT in te true schakelen voor methoden die lussen bevatten. Zie Snelle JIT voor lussen voor meer informatie.

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

GelaagdePGO

De TieredPGO eigenschap bepaalt of dynamische of gelaagde optimalisatie (PGO) is ingeschakeld. Stel de waarde in om true gelaagde PGO in te schakelen. Zie Profielgestuurde optimalisatie voor meer informatie.

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

UseWindowsThreadPool

De UseWindowsThreadPool eigenschap configureert of threadgroepbeheer is gedelegeerd aan de Windows-threadgroep (alleen Windows). De standaardwaarde is false, in welk geval de .NET-threadgroep wordt gebruikt. Zie de Windows-threadgroep voor meer informatie.

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

De volgende MSBuild-eigenschappen worden beschreven in deze sectie:

AssetTargetFallback

Met de AssetTargetFallback eigenschap kunt u aanvullende compatibele frameworkversies opgeven voor projectverwijzingen en NuGet-pakketten. Als u bijvoorbeeld een pakketafhankelijkheid opgeeft die gebruikmaakt van PackageReference maar dat pakket geen assets bevat die compatibel zijn met de projecten TargetFramework, wordt de AssetTargetFallback eigenschap in gebruik genomen. De compatibiliteit van het pakket waarnaar wordt verwezen, wordt opnieuw gecontroleerd met elk doelframework dat is opgegeven in AssetTargetFallback. Deze eigenschap vervangt de afgeschafte eigenschap PackageTargetFallback.

U kunt de AssetTargetFallback eigenschap instellen op een of meer doelframeworkversies.

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

DisableImplicitFrameworkReferences

De DisableImplicitFrameworkReferences eigenschap bepaalt impliciete FrameworkReference items bij het richten op .NET Core 3.0 en latere versies. Bij het doel van .NET Core 2.1 of .NET Standard 2.0 en eerdere versies worden impliciete PackageReference-items naar pakketten in een metapackage beheerd. (Een metapackage is een framework-pakket dat alleen bestaat uit afhankelijkheden van andere pakketten.) Deze eigenschap bepaalt ook impliciete verwijzingen, zoals System en System.Core wanneer u zich richt op .NET Framework.

Stel deze eigenschap in om impliciete FrameworkReference- of PackageReference-items uit te true schakelen. Als u deze eigenschap trueinstelt op, kunt u expliciete verwijzingen toevoegen aan alleen de frameworks of pakketten die u nodig hebt.

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

DisableTransitiveFrameworkReferenceDownloads

Stel de DisableTransitiveFrameworkReferenceDownloads eigenschap in om true te voorkomen dat extra runtime- en doelpakketten worden gedownload die niet rechtstreeks naar uw project worden verwezen.

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

DisableTransitiveProjectReferences

De DisableTransitiveProjectReferences eigenschap bepaalt impliciete projectverwijzingen. Stel deze eigenschap in om impliciete ProjectReference items uit te true schakelen. Het uitschakelen van impliciete projectverwijzingen resulteert in niet-transitief gedrag dat vergelijkbaar is met het verouderde projectsysteem.

Wanneer deze eigenschap is true, heeft deze een vergelijkbaar effect op die van het instellen PrivateAssets="All" van alle afhankelijkheden van het afhankelijke project.

Als u deze eigenschap trueinstelt op, kunt u expliciete verwijzingen toevoegen aan alleen de projecten die u nodig hebt.

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

ManagePackageVersionsCentrally

De ManagePackageVersionsCentrally eigenschap is geïntroduceerd in .NET 7. Door het in te true stellen in een map.packages.props-bestand in de hoofdmap van uw opslagplaats, kunt u algemene afhankelijkheden in uw projecten vanaf één locatie beheren. Voeg versies toe voor algemene pakketafhankelijkheden met behulp van PackageVersion items in het bestand Directory.Packages.props . Vervolgens kunt u in de afzonderlijke projectbestanden kenmerken weglaten Version uit alle PackageReference items die verwijzen naar centraal beheerde pakketten.

Voorbeeldbestand Directory.Packages.props :

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

Afzonderlijk projectbestand:

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

Zie Central Package Management (CPM) voor meer informatie.

Als u een pakket herstelt waarnaar wordt verwezen, worden alle directe afhankelijkheden en alle afhankelijkheden van deze afhankelijkheden geïnstalleerd. U kunt pakketherstel aanpassen door eigenschappen zoals RestorePackagesPath en RestoreIgnoreFailedSources. Zie het hersteldoel voor meer informatie over deze en andere eigenschappen.

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

UseMauiEssentials

Stel de UseMauiEssentials eigenschap in om true een expliciete verwijzing naar een project of pakket te declareren dat afhankelijk is van MAUI Essentials. Deze instelling zorgt ervoor dat uw project de juiste referentie voor het bekende framework voor ESSENTIALs ophaalt. Als uw project verwijst naar een project dat GEBRUIKMAAKT van MAUI Essentials, maar u deze eigenschap trueniet instelt op, kan er een buildwaarschuwing NETSDK1186optreden.

<PropertyGroup>
  <UseMauiEssentials>true</UseMauiEssentials>
</PropertyGroup>

ValidateExecutableReferencesMatchSelfContained

De ValidateExecutableReferencesMatchSelfContained eigenschap kan worden gebruikt om fouten met betrekking tot uitvoerbare projectverwijzingen uit te schakelen. Als .NET detecteert dat een zelfstandig uitvoerbaar project verwijst naar een frameworkafhankelijk uitvoerbaar project of omgekeerd, worden er fouten NETSDK1150 en NETSDK1151 gegenereerd. Als u deze fouten wilt voorkomen wanneer de verwijzing opzettelijk is, stelt u de ValidateExecutableReferencesMatchSelfContained eigenschap in op false.

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

WindowsSdkPackageVersion

De WindowsSdkPackageVersion eigenschap kan worden gebruikt om de versie van het Windows SDK-doelpakket te overschrijven. Deze eigenschap is geïntroduceerd in .NET 5 en vervangt het gebruik van het FrameworkReference item voor dit doel.

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

Notitie

Het wordt afgeraden de Windows SDK-versie te overschrijven, omdat de Windows SDK-doelpakketten zijn opgenomen in de .NET 5+ SDK. Werk in plaats daarvan uw versie van de .NET SDK bij om te verwijzen naar het nieuwste Windows SDK-pakket. Deze eigenschap mag alleen worden gebruikt in zeldzame gevallen, zoals het gebruik van preview-pakketten of het overschrijven van de versie van C#/WinRT.

De volgende eigenschappen worden gebruikt voor het starten van een app met de dotnet run opdracht:

RunArguments

De RunArguments eigenschap definieert de argumenten die worden doorgegeven aan de app wanneer deze wordt uitgevoerd.

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

Tip

U kunt extra argumenten opgeven die aan de app moeten worden doorgegeven met behulp van de optie voor dotnet run.--

RunWorkingDirectory

De RunWorkingDirectory eigenschap definieert de werkmap waarin het toepassingsproces moet worden gestart. Het kan een absoluut pad of een pad zijn dat relatief is ten opzichte van de projectmap. Als u geen map opgeeft, OutDir wordt deze gebruikt als werkmap.

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

De volgende MSBuild-eigenschappen worden beschreven in deze sectie:

EnableComHosting

De EnableComHosting eigenschap geeft aan dat een assembly een COM-server biedt. Het instellen van de EnableComHosting optie true impliceert ook dat EnableDynamicLoading is true.

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

Zie .NET-onderdelen beschikbaar maken voor COM voor meer informatie.

EnableDynamicLoading

De EnableDynamicLoading eigenschap geeft aan dat een assembly een dynamisch geladen onderdeel is. Het onderdeel kan een COM-bibliotheek of een niet-COM-bibliotheek zijn die kan worden gebruikt vanaf een systeemeigen host of als invoegtoepassing kan worden gebruikt. Het instellen van deze eigenschap heeft true de volgende effecten:

  • Er wordt een .runtimeconfig.json-bestand gegenereerd.
  • RollForward is ingesteld op LatestMinor.
  • NuGet-verwijzingen worden lokaal gekopieerd.
<PropertyGroup>
  <EnableDynamicLoading>true</EnableDynamicLoading>
</PropertyGroup>

Gegenereerde bestandseigenschappen

De volgende eigenschappen hebben betrekking op code in gegenereerde bestanden:

DisableImplicitNamespaceImports

De DisableImplicitNamespaceImports eigenschap kan worden gebruikt om impliciete naamruimteimport uit te schakelen in Visual Basic-projecten die gericht zijn op .NET 6 of een latere versie. Impliciete naamruimten zijn de standaardnaamruimten die wereldwijd worden geïmporteerd in een Visual Basic-project. Stel deze eigenschap in om impliciete naamruimteimporten uit te true schakelen.

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

Impliciete gebruikers

De ImplicitUsings eigenschap kan worden gebruikt om impliciete global using instructies in C#-projecten in te schakelen en uit te schakelen die gericht zijn op .NET 6 of een latere versie en C# 10 of een latere versie. Wanneer de functie is ingeschakeld, voegt de .NET SDK richtlijnen toe global using voor een set standaardnaamruimten op basis van het type project-SDK. Stel deze eigenschap in op true of enable schakel impliciete global using instructies in. Als u impliciete global using instructies wilt uitschakelen, verwijdert u de eigenschap of stelt u deze in op false of disable.

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

Notitie

De sjablonen voor nieuwe C#-projecten waarop .NET 6 of hoger is gericht, zijn ImplicitUsings standaard ingesteld enable .

Als u een expliciete global using instructie wilt definiëren, voegt u een using-item toe.

Artikelen

MSBuild-items zijn invoer in het buildsysteem. Items worden opgegeven op basis van hun type, de naam van het element. Dit zijn bijvoorbeeld CompileReference twee veelvoorkomende itemtypen. De volgende extra itemtypen worden beschikbaar gesteld door de .NET SDK:

U kunt bijvoorbeeld Include een van de standaarditemkenmerken gebruiken en Updateop deze items. Hiermee Include voegt u een nieuw item toe en gebruikt Update u dit om een bestaand item te wijzigen. Wordt bijvoorbeeld Update vaak gebruikt om een item te wijzigen dat impliciet is toegevoegd door de .NET SDK.

AssemblyMetadata

Het AssemblyMetadata item geeft een assemblykenmerk voor sleutel-waardeparen AssemblyMetadataAttribute op. De Include metagegevens worden de sleutel en de Value metagegevens worden de waarde.

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

InternalsVisibleTo

Het InternalsVisibleTo item genereert een InternalsVisibleToAttribute assemblykenmerk voor de opgegeven vriendassembly.

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

Als de assembly van de vriend is ondertekend, kunt u een optionele Key metagegevens opgeven om de volledige openbare sleutel op te geven. Als u geen metagegevens opgeeft Key en er een $(PublicKey) beschikbaar is, wordt die sleutel gebruikt. Anders wordt er geen openbare sleutel toegevoegd aan het kenmerk.

FrameworkReference

Het FrameworkReference item definieert een verwijzing naar een gedeeld .NET-framework.

Het Include kenmerk geeft de framework-id op.

Het projectbestandsfragment in het volgende voorbeeld verwijst naar het Microsoft.AspNetCore.App gedeelde framework.

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

PackageReference

Het PackageReference item definieert een verwijzing naar een NuGet-pakket.

Het Include kenmerk geeft de pakket-id op. Het Version kenmerk geeft de versie of versiebereik op. Zie Versiebereiken voor informatie over het opgeven van een minimale versie, maximale versie, bereik of exacte overeenkomst.

Het projectbestandsfragment in het volgende voorbeeld verwijst naar het System.Runtime-pakket .

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

U kunt ook afhankelijkheidsassets beheren met behulp van metagegevens zoals PrivateAssets.

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

Zie Pakketverwijzingen in projectbestanden voor meer informatie.

TrimmerRootAssembly

Met TrimmerRootAssembly het item kunt u een assembly uitsluiten van bijsnijden. Bijsnijden is het proces voor het verwijderen van ongebruikte onderdelen van de runtime uit een verpakte toepassing. In sommige gevallen kan het bijsnijden de vereiste verwijzingen onjuist verwijderen.

Met de volgende XML wordt de System.Security assembly uitgesloten van bijsnijden.

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

Zie Opties voor bijsnijden voor meer informatie.

Gebruiken

Using Met het item kunt u globaal een naamruimte opnemen in uw C#-project, zodat u geen instructie hoeft toe te voegen using voor de naamruimte boven aan uw bronbestanden. Dit item is vergelijkbaar met het Import item dat kan worden gebruikt voor hetzelfde doel in Visual Basic-projecten. Deze eigenschap is beschikbaar vanaf .NET 6.

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

U kunt het Using item ook gebruiken om globale using <alias> en using static <type> richtlijnen te definiëren.

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

Voorbeeld:

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

Zie aliasrichtlijnenusing en using static <type> richtlijnen voor meer informatie.

Metagegevens van items

Naast de standaard MSBuild-itemkenmerken worden de volgende metagegevenstags van items beschikbaar gesteld door de .NET SDK:

CopyToPublishDirectory

De CopyToPublishDirectory metagegevens op een MSBuild-item worden beheerd wanneer het item wordt gekopieerd naar de publicatiemap. Toegestane waarden zijn PreserveNewest, waarmee alleen het item wordt gekopieerd als het is gewijzigd, Alwayswaardoor het item altijd wordt gekopieerd en Never, waardoor het item nooit wordt gekopieerd. Vanuit het oogpunt PreserveNewest van prestaties is het beter omdat hiermee een incrementele build wordt ingeschakeld.

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

Linkbase

Voor een item buiten de projectmap en de bijbehorende submappen gebruikt het publicatiedoel de metagegevens van het item om te bepalen waar het item naartoe moet worden gekopieerd. Link bepaalt ook hoe items buiten de projectstructuur worden weergegeven in het Solution Explorer-venster van Visual Studio.

Als Link dit niet is opgegeven voor een item dat zich buiten de projectcone bevindt, wordt dit standaard ingesteld %(LinkBase)\%(RecursiveDir)%(Filename)%(Extension)op . LinkBase hiermee kunt u een verstandige basismap opgeven voor items buiten de projectcone. De maphiërarchie onder de basismap blijft behouden via RecursiveDir. Als LinkBase dit niet is opgegeven, wordt deze weggelaten uit het Link pad.

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

In de volgende afbeelding ziet u hoe een bestand dat is opgenomen via het vorige item Include glob, wordt weergegeven in Solution Explorer.

Solution Explorer showing item with LinkBase metadata.

Zie ook