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:
- ApiCompatEnableRuleAttributesMustMatch
- ApiCompatEnableRuleCannotChangeParameterName
- ApiCompatExcludeAttributesFile
- ApiCompatGenerateSuppressionFile
- ApiCompatPermitUnnecessarySuppressions
- ApiCompatPreserveUnnecessarySuppressions
- ApiCompatRespectInternals
- ApiCompatSuppressionFile
- ApiCompatSuppressionOutputFile
- NoWarn
- RoslynAssembliesPath
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>
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.
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>
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>
Pakketeigenschappen
Beschrijvende eigenschappen
U kunt eigenschappen opgeven zoals PackageId
, PackageVersion
, PackageIcon
, en Title
Description
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 optrue
. 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 omgevingsvariabeleDOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS
true
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
- ApiCompatEnableRuleCannotChangeParameterName
- ApiCompatExcludeAttributesFile
- ApiCompatGenerateSuppressionFile
- ApiCompatPermitUnnecessarySuppressions
- ApiCompatPreserveUnnecessarySuppressions
- ApiCompatRespectInternals
- ApiCompatSuppressionFile
- ApiCompatSuppressionOutputFile
- EnablePackageValidation
- EnableStrictModeForBaselineValidation
- EnableStrictModeForCompatibleFrameworksInPackage
- EnableStrictModeForCompatibleTfms
- NoWarn
- PackageValidationBaselineFrameworkToIgnore
- PackageValidationBaselineName
- PackageValidationBaselineVersion
- PackageValidationReferencePath
- RoslynAssembliesPath
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>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.
Publicatiegerelateerde eigenschappen
De volgende MSBuild-eigenschappen worden beschreven in deze sectie:
- AppendRuntimeIdentifierToOutputPath
- AppendTargetFrameworkToOutputPath
- CopyLocalLockFileAssemblies
- ErrorOnDuplicatePublishOutputFiles
- GenerateRuntimeConfigDevFile
- GenerateRuntimeConfigurationFiles
- GenerateSatelliteAssembliesForCore
- IsPublishable
- PreserveCompilationContext
- PreserveCompilationReferences
- ProduceReferenceAssemblyInOutDir
- PublishDocumentationFile
- PublishDocumentationFiles
- PublishReferencesDocumentationFiles
- PublishRelease
- PublishSelfContained
- RollForward
- RuntimeFrameworkVersion
- RuntimeIdentifier
- RuntimeIdentifiers
- SatelliteResourceLanguages
- SelfContained
- UseAppHost
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 true
instelt op, worden eventuele transitieve 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>
De standaardwaarde van kan variëren op basis van CopyLocalLockFileAssemblies
het uitvoertype. Voor klassebibliotheken is false
de standaardwaarde bijvoorbeeld , terwijl voor consoletoepassingen de standaardwaarde is true
. U kunt deze eigenschap expliciet opgeven om indien nodig de standaardwaarde te overschrijven.
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 true
op .
<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 true
stellen, worden satellietassembly's gemaakt door csc.exe in plaats daarvan. Het gebruik van csc.exe kan in de volgende situaties voordelig zijn:
- U wilt de C#-compileroptie
deterministic
gebruiken. - U bent beperkt door het feit dat al.exe geen ondersteuning heeft voor openbare ondertekening en slecht afhandelt AssemblyInformationalVersionAttribute .
<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 false
en 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 opgegeventrue
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:Publish
en 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 omgevingsvariabeleDOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS
true
instellen op (of een andere waarde). Bij het publiceren van een oplossing waarvoor deze variabele is ingeschakeld, heeft de waarde vanPublishRelease
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 waardenPublishRelease
bevat, 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 naar de rollForward
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 publish
wilt 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.
Bijsnijden gerelateerde eigenschappen
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. |
Buildgerelateerde eigenschappen
De volgende MSBuild-eigenschappen worden beschreven in deze sectie:
- ContinuousIntegrationBuild
- CopyDebugSymbolFilesFromPackages
- CopyDocumentationFilesFromPackages
- DisableImplicitFrameworkDefines
- DocumentationFile
- EmbeddedResourceUseDependentUponConvention
- EnablePreviewFeatures
- EnableWindowsTargeting
- GenerateDocumentationFile
- GenerateRequiresPreviewFeaturesAttribute
- OptimizeImplicitlyTriggeredBuild
- DisableRuntimeMarshalling
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_BUILD
bijvoorbeeld:
<PropertyGroup Condition="'$(TF_BUILD)' == 'true'">
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>
Voor GitHub Actions is GITHUB_ACTIONS
de 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.0
ondersteuning 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
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 generateDocumentationFile, genereert de compiler false
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 is ingesteld EmbeddedResourceUseDependentUponConvention
op, neemt het gegenereerde true
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
, ManifestResourceName
of 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
, ManifestResourceName
of 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 True
op, 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 true
niet 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 False
instelt 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 true
het 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 OptimizeImplicitlyTriggeredBuild
False
.
<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:
- DefaultItemExcludesInProjectFolder
- DefaultItemExcludes
- EnableDefaultCompileItems
- EnableDefaultEmbeddedResourceItems
- EnableDefaultItems
- EnableDefaultNoneItems
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 false
items uit te None
schakelen.
<PropertyGroup>
<EnableDefaultNoneItems>false</EnableDefaultNoneItems>
</PropertyGroup>
Eigenschappen van codeanalyse
De volgende MSBuild-eigenschappen worden beschreven in deze sectie:
- AnalysisLevel
- AnalysisLevel-categorie<>
- AnalysisMode
- AnalysisMode-categorie<>
- CodeAnalysisTreatWarningsAsErrors
- EnableNETAnalyzers
- EnforceCodeStyleInBuild
- _SkipUpgradeNetAnalyzersNuGetWarning
AnalysisLevel
Met de AnalysisLevel
eigenschap kunt u een set codeanalyses opgeven die moet worden uitgevoerd volgens een .NET-release. Elke .NET-release heeft een set regels voor codeanalyse. Van die set analyseren de regels die standaard zijn ingeschakeld voor die release uw code. Als u bijvoorbeeld een upgrade uitvoert van .NET 8 naar .NET 9, maar niet wilt dat de standaardset codeanalyseregels worden gewijzigd, ingesteld op AnalysisLevel
8
.
<PropertyGroup>
<AnalysisLevel>8</AnalysisLevel>
</PropertyGroup>
U kunt desgewenst een samengestelde waarde voor deze eigenschap opgeven waarmee ook wordt aangegeven 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 recommended
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
latest
de 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. |
9.0 |
De set regels die beschikbaar waren voor de .NET 9-release, wordt gebruikt, zelfs als er nieuwere regels beschikbaar zijn. |
9.0-<mode> |
De set regels die beschikbaar waren voor de .NET 9-release, wordt gebruikt, zelfs als er nieuwere regels beschikbaar zijn. De <mode> waarde bepaalt welke regels zijn ingeschakeld. |
9 |
De set regels die beschikbaar waren voor de .NET 9-release, wordt gebruikt, zelfs als er nieuwere regels beschikbaar zijn. |
9-<mode> |
De set regels die beschikbaar waren voor de .NET 9-release, wordt gebruikt, zelfs als er nieuwere regels beschikbaar 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. |
Notitie
- Als u EnforceCodeStyleInBuild instelt op, is deze eigenschap van invloed op
true
(codestijl), naast regels voor codekwaliteit. - Als u een samengestelde waarde instelt voor
AnalysisLevel
, hoeft u geen AnalysisMode op te geven. Als u dat doet,AnalysisLevel
heeft u echter voorrang opAnalysisMode
. - 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 de %ProgramFiles%/dotnet/sdk/[version]/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_[level]_minimum.globalconfig-bestand. (Voor .NET 7 en eerdere versies is de bestandsextensie .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 de %ProgramFiles%/dotnet/sdk/[version]/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_[level]_recommended.globalconfig bestand. (Voor .NET 7 en eerdere versies is de bestandsextensie .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 AnalysisMode stellen All AnalysisLevel 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 instelt op, is deze eigenschap van invloed op
true
(codestijl), naast regels voor codekwaliteit. - Als u bijvoorbeeld een samengestelde waarde voor AnalysisLevel gebruikt,
<AnalysisLevel>9-recommended</AnalysisLevel>
kunt u deze eigenschap helemaal weglaten. Als u echter beide eigenschappen opgeeft,AnalysisLevel
heeft voorrang opAnalysisMode
. - 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 _SkipUpgradeNetAnalyzersNuGetWarning
true
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
- ConcurrentGarbageCollection
- InvariantGlobalization
- Vooraf gedefinieerdeCulturesOnly
- RetainVMGarbageCollection
- ServerGarbageCollection
- ThreadPoolMaxThreads
- ThreadPoolMinThreads
- TieredCompilation
- TieredCompilationQuickJit
- TieredCompilationQuickJitForLoops
- GelaagdePGO
- UseWindowsThreadPool
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>
Verwijzingsgerelateerde eigenschappen
De volgende MSBuild-eigenschappen worden beschreven in deze sectie:
- AssetTargetFallback
- DisableImplicitFrameworkReferences
- DisableTransitiveFrameworkReferenceDownloads
- DisableTransitiveProjectReferences
- ManagePackageVersionsCentrally
- Herstelgerelateerde eigenschappen
- UseMauiEssentials
- ValidateExecutableReferencesMatchSelfContained
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 true
uit te schakelen. Als u deze eigenschap true
instelt 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 true
items uit te ProjectReference
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 true
instelt 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.
Herstelgerelateerde eigenschappen
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 true
niet instelt op, kan er een buildwaarschuwing NETSDK1186
optreden.
<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.
Run-gerelateerde eigenschappen
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 --
.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>
SDK-gerelateerde eigenschappen
De volgende MSBuild-eigenschappen worden beschreven in deze sectie:
SdkAnalysisLevel
Geïntroduceerd in .NET 9 kan de SdkAnalysisLevel
eigenschap worden gebruikt om te configureren hoe strikte SDK-hulpprogramma's zijn. Het helpt u bij het beheren van SDK-waarschuwingsniveaus in situaties waarin u MOGELIJK geen SDK's kunt vastmaken via global.json of andere middelen. U kunt deze eigenschap gebruiken om een nieuwere SDK te vertellen dat deze zich gedraagt alsof het een oudere SDK was, met betrekking tot een specifiek hulpprogramma of een specifieke functie, zonder dat u de oudere SDK hoeft te installeren.
De toegestane waarden van deze eigenschap zijn SDK-functiebanden, bijvoorbeeld 8.0.100 en 8.0.400. De waarde wordt standaard ingesteld op de SDK-functieband van de actieve SDK. Voor SDK 9.0.102 is de waarde bijvoorbeeld 9.0.100. (Zie voor meer informatie over de versie van de .NET SDKHoe .NET wordt versiebeheer.)
<PropertyGroup>
<SdkAnalysisLevel>8.0.400</SdkAnalysisLevel>
</PropertyGroup>
Zie eigenschappen en gebruik op SDK-analyseniveau voor meer informatie.
Projectgerelateerde eigenschappen testen
De volgende MSBuild-eigenschappen worden beschreven in deze sectie:
- IsTestProject
- IsTestingPlatformApplication
- Enable[NugetPackageNameWithoutDots]
- EnableAspireTesting
- EnablePlaywright
- MSTestRunner inschakelen
- EnableNUnitRunner
- GenerateTestingPlatformEntryPoint
- TestingPlatformCaptureOutput
- TestingPlatformCommandLineArguments
- TestingPlatformDotnetTestSupport
- TestingPlatformShowTestsFailure
- TestingExtensionsProfile
- VSTest gebruiken
IsTestProject
De IsTestProject
eigenschap geeft aan dat een project een testproject is. Wanneer deze eigenschap is ingesteld op , wordt de validatie gevalideerd true
om te controleren of het project verwijst naar een zelfstandig uitvoerbaar bestand is uitgeschakeld. Dat komt doordat testprojecten een van OutputType
hebbenExe
, maar meestal API's aanroepen in een uitvoerbaar bestand waarnaar wordt verwezen in plaats van te proberen uit te voeren. Als een project verwijst naar een project waarnaar IsTestProject
is ingesteld true
, wordt het testproject bovendien niet gevalideerd als uitvoerbare verwijzing.
Deze eigenschap is voornamelijk nodig voor het dotnet test
scenario en heeft geen invloed bij het gebruik van vstest.console.exe.
Notitie
Als in uw project de MSTest SDK wordt opgegeven, hoeft u deze eigenschap niet in te stellen. Deze wordt automatisch ingesteld. Op dezelfde manier wordt deze eigenschap automatisch ingesteld voor projecten die verwijzen naar het NuGet-pakket Microsoft.NET.Test.Sdk dat is gekoppeld aan VSTest.
IsTestingPlatformApplication
Wanneer uw project verwijst naar het pakket Microsoft.Testing.Platform.MSBuild , doet de instelling IsTestingPlatformApplication
true
(dit is ook de standaardwaarde indien niet opgegeven) het volgende:
- Hiermee wordt het toegangspunt voor het testproject gegenereerd.
- Hiermee wordt het configuratiebestand gegenereerd.
- Detecteert de extensies.
Als u de eigenschap instelt om false
de transitieve afhankelijkheid naar het pakket uit te schakelen. Een transitieve afhankelijkheid is wanneer een project dat verwijst naar een ander project dat verwijst naar een bepaald pakket zich gedraagt alsof het naar het pakket verwijst. Normaal gesproken stelt u deze eigenschap false
in op een niet-testproject dat verwijst naar een testproject. Zie fout CS8892 voor meer informatie.
Als uw testproject verwijst naar MSTest, NUnit of xUnit, is deze eigenschap ingesteld op dezelfde waarde als EnableMSTestRunner, EnableNUnitRunner of UseMicrosoftTestingPlatformRunner
(voor xUnit).
Enable[NugetPackageNameWithoutDots]
Gebruik een eigenschap met het patroon Enable[NugetPackageNameWithoutDots]
om Extensies van Microsoft.Testing.Platform in of uit te schakelen.
Als u bijvoorbeeld de crashdumpextensie wilt inschakelen (NuGet-pakket Microsoft.Testing.Extensions.CrashDump), stelt u de EnableMicrosoftTestingExtensionsCrashDump
optie in op true
.
Zie Extensies in- of uitschakelen voor meer informatie.
EnableAspireTesting
Wanneer u de MSTest-project-SDK gebruikt, kunt u de EnableAspireTesting
eigenschap gebruiken om alle afhankelijkheden en standaardrichtlijnen using
in te voeren waarmee u moet testen Aspire
en MSTest
. Deze eigenschap is beschikbaar in MSTest 3.4 en latere versies.
Zie Test met .NET Aspire voor meer informatie.
EnablePlaywright
Wanneer u de MSTest-project-SDK gebruikt, kunt u de EnablePlaywright
eigenschap gebruiken om alle afhankelijkheden en standaardrichtlijnen using
in te voeren waarmee u moet testen Playwright
en MSTest
. Deze eigenschap is beschikbaar in MSTest 3.4 en latere versies.
Zie Playwright voor meer informatie.
MSTestRunner inschakelen
De EnableMSTestRunner
eigenschap schakelt het gebruik van MSTest runner in of uit. De MSTest runner is een lichtgewicht en draagbaar alternatief voor VSTest. Deze eigenschap is beschikbaar in MSTest 3.2 en nieuwere versies.
Notitie
Als in uw project de MSTest SDK wordt opgegeven, hoeft u deze eigenschap niet in te stellen. Deze wordt automatisch ingesteld.
EnableNUnitRunner
De EnableNUnitRunner
eigenschap schakelt het gebruik van de NUnit runner in of uit. De NUnit runner is een lichtgewicht en draagbaar alternatief voor VSTest. Deze eigenschap is beschikbaar in NUnit3TestAdapter in versie 5.0 en hoger.
GenerateTestingPlatformEntryPoint
Als u de eigenschap GenerateTestingPlatformEntryPoint
instelt op false
wordt het automatisch genereren van het programmainvoerpunt in een MSTest- of NUnit-testproject uitgeschakeld. U kunt deze eigenschap false
instellen wanneer u handmatig een toegangspunt definieert of wanneer u naar een testproject verwijst vanuit een uitvoerbaar bestand dat ook een ingangspunt heeft.
Zie fout CS8892 voor meer informatie.
Gebruik de GenerateProgramFile
eigenschap om het genereren van het toegangspunt in een VSTest-project te beheren.
TestingPlatformCaptureOutput
De TestingPlatformCaptureOutput
eigenschap bepaalt of alle console-uitvoer die een uitvoerbare test schrijft, wordt vastgelegd en verborgen voor de gebruiker wanneer u tests dotnet test
uitvoert Microsoft.Testing.Platform
. Standaard is de console-uitvoer verborgen. Deze uitvoer bevat de banner, versie-informatie en opgemaakte testgegevens. Stel deze eigenschap in om deze informatie samen met MSBuild-uitvoer weer te false
geven.
Zie Volledige platformuitvoer weergeven voor meer informatie.
TestingPlatformCommandLineArguments
TestingPlatformCaptureOutput
Met de eigenschap kunt u opdrachtregelargumenten opgeven voor de test-app wanneer u dotnet test
tests uitvoertMicrosoft.Testing.Platform
. In het volgende projectbestandsfragment ziet u een voorbeeld.
<PropertyGroup>
...
<TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>
TestingPlatformDotnetTestSupport
Met de TestingPlatformDotnetTestSupport
eigenschap kunt u opgeven of VSTest wordt gebruikt wanneer u dotnet test
tests uitvoert. Als u deze eigenschap true
instelt op VSTest, wordt VSTest uitgeschakeld en worden alle Microsoft.Testing.Platform
tests rechtstreeks uitgevoerd.
Als u een oplossing hebt die VSTest-testprojecten en MSTest-, NUnit- of XUnit-projecten bevat, moet u één aanroep per modus uitvoeren (dat wil gezegd, dotnet test
worden tests van zowel VSTest als de nieuwere platforms in één aanroep niet uitgevoerd).
TestingPlatformShowTestsFailure
Met de TestingPlatformShowTestsFailure
eigenschap kunt u bepalen of één fout of alle fouten in een mislukte test worden gerapporteerd wanneer u dotnet test
tests uitvoert. Standaard worden testfouten samengevat in een .log-bestand en wordt één fout per testproject gerapporteerd aan MSBuild. Als u fouten per mislukte test wilt weergeven, stelt u deze eigenschap true
in op in het projectbestand.
TestingExtensionsProfile
Wanneer u de MSTest-project-SDK gebruikt, kunt u met de TestingExtensionsProfile
eigenschap een profiel selecteren dat u wilt gebruiken. In de volgende tabel ziet u de toegestane waarden.
Weergegeven als | Beschrijving |
---|---|
Default |
Hiermee worden de aanbevolen extensies ingeschakeld voor deze versie van MSTest.SDK. |
None |
Er zijn geen extensies ingeschakeld. |
AllMicrosoft |
Schakel alle extensies in die door Microsoft worden verzonden (inclusief extensies met een beperkende licentie). |
Zie MSTest runner-profiel voor meer informatie.
VSTest gebruiken
Stel de UseVSTest
eigenschap in om true
over te schakelen van MSTest runner naar de VSTest-runner wanneer u de MSTest-project-SDK gebruikt.
Hostinggerelateerde eigenschappen
De volgende MSBuild-eigenschappen worden beschreven in deze sectie:
AppHostDotNetSearch
De AppHostDotNetSearch
eigenschap configureert hoe het systeemeigen uitvoerbare bestand dat voor een toepassing wordt geproduceerd, zoekt naar een .NET-installatie. Deze eigenschap is alleen van invloed op het uitvoerbare bestand dat is geproduceerd bij publiceren, niet op build.
<PropertyGroup>
<AppHostDotNetSearch>Global</AppHostDotNetSearch>
</PropertyGroup>
De volgende tabel bevat geldige waarden. U kunt meerdere waarden opgeven, gescheiden door puntkomma's.
Weergegeven als | Betekenis |
---|---|
AppLocal |
Map van uitvoerbaar app-bestand |
AppRelative |
Pad ten opzichte van het uitvoerbare bestand van de app, zoals opgegeven door AppHostRelativeDotNet |
EnvironmentVariables |
Waarde van DOTNET_ROOT[_<arch>] omgevingsvariabelen |
Global |
Geregistreerde en standaard algemene installatielocaties |
Deze eigenschap is geïntroduceerd in .NET 9.
AppHostRelativeDotNet
Met AppHostRelativeDotNet
de eigenschap kan een relatief pad voor het uitvoerbare bestand van de app worden opgegeven om te zoeken naar de .NET-installatie wanneer dit is geconfigureerd. Het instellen van de AppHostRelativeDotNet
eigenschap impliceert dat AppHostDotNetSearch
dit is AppRelative
. Deze eigenschap is alleen van invloed op het uitvoerbare bestand dat is geproduceerd bij publiceren, niet op build.
<PropertyGroup>
<AppHostRelativeDotNet>./relative/path/to/runtime</AppHostRelativeDotNet>
</PropertyGroup>
Deze eigenschap is geïntroduceerd in .NET 9.
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 Compile
Reference
twee veelvoorkomende itemtypen. De volgende extra itemtypen worden beschikbaar gesteld door de .NET SDK:
U kunt bijvoorbeeld een van de standaarditemkenmerkenInclude
gebruiken en Update
op 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" />
Stootglobal using Results = global::Microsoft.AspNetCore.Http.Results;
-
<Using Include="Microsoft.AspNetCore.Http.Results" Static="True" />
Stootglobal using static global::Microsoft.AspNetCore.Http.Results;
Zie using
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, Always
waardoor 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.