référence MSBuild pour les projets SDK .net

cette page est une référence pour les propriétés et les éléments de MSBuild que vous pouvez utiliser pour configurer des projets .net.

Notes

cette page est un travail en cours et ne répertorie pas toutes les propriétés de MSBuild utiles pour le kit de développement logiciel (SDK) .net. pour obtenir la liste des propriétés de MSBuild courantes, consultez propriétés des MSBuild courantes.

Propriétés du Framework

les propriétés de MSBuild suivantes sont documentées dans cette section :

TargetFramework

La TargetFramework propriété spécifie la version cible de .NET Framework pour l’application. Pour obtenir la liste des monikers du Framework cible valides, consultez frameworks cibles dans les projets de type SDK.

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

Pour plus d’informations, consultez frameworks cibles dans les projets de type SDK.

TargetFrameworks

Utilisez la TargetFrameworks propriété lorsque vous souhaitez que votre application cible plusieurs plateformes. Pour obtenir la liste des monikers du Framework cible valides, consultez frameworks cibles dans les projets de type SDK.

Notes

Cette propriété est ignorée si TargetFramework (singulier) est spécifié.

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

Pour plus d’informations, consultez frameworks cibles dans les projets de type SDK.

NetStandardImplicitPackageVersion

Notes

Cette propriété s’applique uniquement aux projets qui utilisent netstandard1.x . Elle ne s’applique pas aux projets qui utilisent netstandard2.x .

Utilisez la NetStandardImplicitPackageVersion propriété lorsque vous souhaitez spécifier une version de Framework inférieure à la version de l’ensemble de packages. Le fichier projet dans l’exemple suivant cible, netstandard1.3 mais utilise la version 1.6.0 de NETStandard.Library .

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

Propriétés de génération des informations sur l’assembly

GenerateAssemblyCompanyAttribute

Cette propriété contrôle si la Company propriété génère ou non le AssemblyCompanyAttribute pour l’assembly. La valeur par défaut est true.

<PropertyGroup>
  <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
</PropertyGroup>

GenerateAssemblyConfigurationAttribute

Cette propriété contrôle si la Configuration propriété génère ou non le AssemblyConfigurationAttribute pour l’assembly. La valeur par défaut est true.

<PropertyGroup>
  <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
</PropertyGroup>

GenerateAssemblyCopyrightAttribute

Cette propriété contrôle si la Copyright propriété génère ou non le AssemblyCopyrightAttribute pour l’assembly. La valeur par défaut est true.

<PropertyGroup>
  <GenerateAssemblyCopyrightAttribute>false</GenerateAssemblyCopyrightAttribute>
</PropertyGroup>

GenerateAssemblyDescriptionAttribute

Cette propriété contrôle si la Description propriété génère ou non le AssemblyDescriptionAttribute pour l’assembly. La valeur par défaut est true.

<PropertyGroup>
  <GenerateAssemblyDescriptionAttribute>false</GenerateAssemblyDescriptionAttribute>
</PropertyGroup>

GenerateAssemblyFileVersionAttribute

Cette propriété contrôle si la FileVersion propriété génère ou non le AssemblyFileVersionAttribute pour l’assembly. La valeur par défaut est true.

<PropertyGroup>
  <GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>
</PropertyGroup>

GenerateAssemblyInfo

Contrôle AssemblyInfo la génération des attributs pour le projet. La valeur par défaut est true. Utilisez false pour désactiver la génération du fichier :

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

Le paramètre GeneratedAssemblyInfoFile contrôle le nom du fichier généré.

Lorsque la GenerateAssemblyInfo valeur est true , les propriétés de projet sont transformées en AssemblyInfo attributs. Le tableau suivant répertorie les propriétés de projet qui génèrent les attributs, ainsi que les propriétés qui peuvent désactiver cette génération :

Propriété Attribut Propriété permettant de désactiver
Company AssemblyCompanyAttribute GenerateAssemblyCompanyAttribute
Configuration AssemblyConfigurationAttribute GenerateAssemblyConfigurationAttribute
Copyright AssemblyCopyrightAttribute GenerateAssemblyCopyrightAttribute
Description AssemblyDescriptionAttribute GenerateAssemblyDescriptionAttribute
FileVersion AssemblyFileVersionAttribute GenerateAssemblyFileVersionAttribute
InformationalVersion AssemblyInformationalVersionAttribute GenerateAssemblyInformationalVersionAttribute
Product AssemblyProductAttribute GenerateAssemblyProductAttribute
AssemblyTitle AssemblyTitleAttribute GenerateAssemblyTitleAttribute
AssemblyVersion AssemblyVersionAttribute GenerateAssemblyVersionAttribute
NeutralLanguage NeutralResourcesLanguageAttribute GenerateNeutralResourcesLanguageAttribute

Remarques sur ces paramètres :

  • AssemblyVersion et FileVersion la valeur par défaut $(Version) sans le suffixe. Par exemple, si $(Version) est 1.2.3-beta.4, alors la valeur serait 1.2.3.
  • InformationalVersion utilise par défaut la valeur de $(Version).
  • Si la $(SourceRevisionId) propriété est présente, elle est ajoutée à InformationalVersion . Vous pouvez désactiver ce comportement à l’aide de IncludeSourceRevisionInInformationalVersion .
  • Les propriétés Copyright et Description sont également utilisées pour les métadonnées NuGet.
  • Configuration, qui prend la valeur par défaut Debug , est partagé avec toutes les cibles de MSBuild. Vous pouvez le définir par le biais --configuration de l’option des dotnet commandes, par exemple, dotnet Pack.
  • certaines des propriétés sont utilisées lors de la création d’un package de NuGet. Pour plus d’informations, consultez Propriétés du package.

Migration à partir de .NET Framework

.NET Framework modèles de projet créent un fichier de code avec les attributs d’informations de l’assembly définis. Le fichier se trouve généralement dans .\Properties\AssemblyInfo.cs ou .\Properties\AssemblyInfo.vb. Les projets de style SDK génèrent ce fichier pour vous en fonction des paramètres du projet. Vous ne pouvez pas avoir les deux. Lors du Portage de votre code vers .NET 5 (et .NET Core 3,1) ou version ultérieure, effectuez l’une des opérations suivantes :

  • Désactivez la génération du fichier de code temporaire qui contient les attributs d’informations de l’assembly en affectant à la valeur GenerateAssemblyInfo false . Cela vous permet de conserver votre fichier AssemblyInfo .
  • Migrez les paramètres dans le fichier AssemblyInfo vers le fichier projet, puis supprimez le AssemblyInfo fichier.

GenerateAssemblyInformationalVersionAttribute

Cette propriété contrôle si la InformationalVersion propriété génère ou non le AssemblyInformationalVersionAttribute pour l’assembly. La valeur par défaut est true.

<PropertyGroup>
  <GenerateAssemblyInformationalVersionAttribute>false</GenerateAssemblyInformationalVersionAttribute>
</PropertyGroup>

GenerateAssemblyProductAttribute

Cette propriété contrôle si la Product propriété génère ou non le AssemblyProductAttribute pour l’assembly. La valeur par défaut est true.

<PropertyGroup>
  <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
</PropertyGroup>

GenerateAssemblyTitleAttribute

Cette propriété contrôle si la AssemblyTitle propriété génère ou non le AssemblyTitleAttribute pour l’assembly. La valeur par défaut est true.

<PropertyGroup>
  <GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
</PropertyGroup>

GenerateAssemblyVersionAttribute

Cette propriété contrôle si la AssemblyVersion propriété génère ou non le AssemblyVersionAttribute pour l’assembly. La valeur par défaut est true.

<PropertyGroup>
  <GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
</PropertyGroup>

GeneratedAssemblyInfoFile

La propriété définit le chemin d’accès relatif ou absolu du fichier d’informations de l’assembly généré. La valeur par défaut est un fichier nommé [Project-Name]. AssemblyInfo. [CS | VB] dans le $(IntermediateOutputPath) répertoire (généralement le répertoire obj).

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

GenerateNeutralResourcesLanguageAttribute

Cette propriété contrôle si la NeutralLanguage propriété génère ou non le NeutralResourcesLanguageAttribute pour l’assembly. La valeur par défaut est true.

<PropertyGroup>
  <GenerateNeutralResourcesLanguageAttribute>false</GenerateNeutralResourcesLanguageAttribute>
</PropertyGroup>

Propriétés du package

Vous pouvez spécifier des propriétés telles que PackageId , PackageVersion ,, PackageIcon Title et Description pour décrire le package qui est créé à partir de votre projet. Pour plus d’informations sur ces propriétés et d’autres, consultez package Target.

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

les propriétés de MSBuild suivantes sont documentées dans cette section :

AppendTargetFrameworkToOutputPath

La AppendTargetFrameworkToOutputPath propriété détermine si le moniker du Framework cible (TFM) est ajouté au chemin de sortie (qui est défini par OutputPath). Le kit de développement logiciel (SDK) .NET ajoute automatiquement le Framework cible et, le cas échéant, l’identificateur du Runtime au chemin de sortie. L’affectation de AppendTargetFrameworkToOutputPath la valeur à false empêche le TFM d’être ajouté au chemin de sortie. Toutefois, si le chemin de sortie n’est pas TFM, plusieurs artefacts de build peuvent se remplacer mutuellement.

Par exemple, pour une application .NET 5,0, le chemin de sortie passe de bin\Debug\net5.0 à bin\Debug avec le paramètre suivant :

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

AppendRuntimeIdentifierToOutputPath

La AppendRuntimeIdentifierToOutputPath propriété détermine si l' identificateur de Runtime (RID) est ajouté au chemin de sortie. Le kit de développement logiciel (SDK) .NET ajoute automatiquement le Framework cible et, le cas échéant, l’identificateur du Runtime au chemin de sortie. AppendRuntimeIdentifierToOutputPathLa définition de false la valeur empêche l’ajout du RID au chemin de sortie.

Par exemple, pour une application .NET 5,0 et un RID win10-x64 , le chemin de sortie passe de bin\Debug\net5.0\win10-x64 à bin\Debug\net5.0 avec le paramètre suivant :

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

CopyLocalLockFileAssemblies

La CopyLocalLockFileAssemblies propriété est utile pour les projets de plug-in qui ont des dépendances sur d’autres bibliothèques. si vous affectez à cette propriété true la valeur, toutes les dépendances de package NuGet sont copiées dans le répertoire de sortie. Cela signifie que vous pouvez utiliser la sortie de dotnet build pour exécuter votre plug-in sur n’importe quel ordinateur.

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

Conseil

Vous pouvez également utiliser dotnet publish pour publier la bibliothèque de classes. Pour plus d’informations, consultez dotnet Publish.

ErrorOnDuplicatePublishOutputFiles

la ErrorOnDuplicatePublishOutputFiles propriété est liée à si le kit de développement logiciel (SDK) génère une erreur NETSDK1148 quand MSBuild détecte des fichiers dupliqués dans la sortie de publication, mais ne peut pas déterminer les fichiers à supprimer. Affectez ErrorOnDuplicatePublishOutputFiles à la propriété la valeur false si vous ne souhaitez pas que l’erreur soit générée.

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

Cette propriété a été introduite dans .NET 6.

IsPublishable

La IsPublishable propriété permet Publish à la cible de s’exécuter. Cette propriété affecte uniquement les processus qui utilisent . * fichiers proj et la Publish cible, tels que la commande dotnet Publish . elle n’affecte pas la publication dans Visual Studio, qui utilise la PublishOnly cible. La valeur par défaut est true.

Cette propriété est utile si vous exécutez dotnet publish sur un fichier solution, car elle permet la sélection automatique des projets qui doivent être publiés.

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

PreserveCompilationContext

La PreserveCompilationContext propriété permet à une application générée ou publiée de compiler davantage de code au moment de l’exécution en utilisant les mêmes paramètres que ceux utilisés au moment de la génération. Les assemblys référencés au moment de la génération sont copiés dans le sous-répertoire ref du répertoire de sortie. Les noms des assemblys de référence sont stockés dans l'.deps.jsde l’application sur le fichier, ainsi que les options passées au compilateur. Vous pouvez récupérer ces informations à l’aide des DependencyContext.CompileLibraries DependencyContext.CompilationOptions Propriétés et.

cette fonctionnalité est principalement utilisée en interne par ASP.NET Core MVC et les pages razor pour prendre en charge la compilation des fichiers Razor au moment de l’exécution.

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

PreserveCompilationReferences

La PreserveCompilationReferences propriété est semblable à la propriété PreserveCompilationContext , à ceci près qu’elle copie uniquement les assemblys référencés dans le répertoire publish, et non le .deps.jsdans le fichier.

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

Pour plus d’informations, consultez Propriétés du kit de développement logiciel (SDK) Razor.

Restauration par progression

La RollForward propriété contrôle la manière dont l’application choisit un runtime lorsque plusieurs versions du runtime sont disponibles. Cette valeur est la sortie de la .runtimeconfig.jssur en tant que rollForward paramètre.

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

Définissez l' RollForward une des valeurs suivantes :

Valeur Description
Minor Valeur par défaut si elle n’est pas spécifiée.
Restaure la version mineure la plus basse, si la version mineure demandée est manquante. Si la version mineure demandée est présente, la LatestPatch stratégie est utilisée.
Major Rétablir la version principale la plus récente disponible, et la version mineure la plus faible, si la version principale demandée est manquante. Si la version principale demandée est présente, la Minor stratégie est utilisée.
LatestPatch Restauration par progression vers la version de correctif la plus récente. Cette valeur désactive la restauration par progression mineure.
LatestMinor Restauration par progression vers la version mineure la plus élevée, même si la version mineure demandée est présente.
LatestMajor Restauration par progression vers la version mineure la plus élevée et la plus élevée, même si la version principale demandée est présente.
Disable Ne pas effectuer de restauration par progression, lier uniquement à la version spécifiée. Cette stratégie n’est pas recommandée pour une utilisation générale, car elle désactive la possibilité de restaurer les derniers correctifs. Cette valeur est recommandée uniquement à des fins de test.

Pour plus d’informations, consultez contrôler le comportement de restauration par progression.

RuntimeFrameworkVersion

La RuntimeFrameworkVersion propriété spécifie la version du runtime à utiliser lors de la publication. Spécifiez une version du Runtime :

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

Lors de la publication d’une application dépendante du Framework, cette valeur spécifie la version minimale requise. Lors de la publication d’une application autonome, cette valeur spécifie la version exacte requise.

RuntimeIdentifier

La RuntimeIdentifier propriété vous permet de spécifier un identificateur de Runtime unique (RID) pour le projet. Le RID permet de publier un déploiement autonome.

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

RuntimeIdentifiers

La RuntimeIdentifiers propriété vous permet de spécifier une liste délimitée par des points-virgules des identificateurs de Runtime (RID) pour le projet. Utilisez cette propriété si vous devez publier pour plusieurs runtimes. RuntimeIdentifiers est utilisé au moment de la restauration pour s’assurer que les ressources appropriées sont dans le graphique.

Conseil

RuntimeIdentifier (singulier) peut fournir des builds plus rapides quand un seul Runtime est requis.

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

UseAppHost

La UseAppHost propriété contrôle si un exécutable natif est créé ou non pour un déploiement. Un exécutable natif est requis pour les déploiements autonomes.

Dans .NET Core 3,0 et versions ultérieures, un fichier exécutable dépendant du Framework est créé par défaut. Affectez à la propriété la valeur UseAppHost false pour désactiver la génération de l’exécutable.

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

Pour plus d’informations sur le déploiement, consultez déploiement d’applications .net.

les propriétés de MSBuild suivantes sont documentées dans cette section :

les options du compilateur C# peuvent également être spécifiées en tant que propriétés de MSBuild dans votre fichier projet. Pour plus d’informations, consultez Options du compilateur C#.

EmbeddedResourceUseDependentUponConvention

La EmbeddedResourceUseDependentUponConvention propriété définit si les noms des fichiers manifestes de ressources sont générés à partir des informations de type dans les fichiers sources qui sont colocalisés avec les fichiers de ressources. Par exemple, si Form1. resx se trouve dans le même dossier que Form1. cs et que EmbeddedResourceUseDependentUponConvention a la valeur true , le fichier . Resources généré prend son nom du premier type défini dans Form1. cs. Par exemple, si MyNamespace.Form1 est le premier type défini dans Form1. cs, le nom de fichier généré est MyNamespace. Form1. Resources.

Notes

Si LogicalName ManifestResourceName DependentUpon les métadonnées, ou sont spécifiées pour un EmbeddedResource élément, le nom de fichier manifeste généré pour ce fichier de ressources est basé sur ces métadonnées à la place.

Par défaut, dans un nouveau projet .NET, cette propriété a la valeur true . Si la valeur false est définie sur, et si aucune LogicalName ManifestResourceName DependentUpon métadonnée n’est spécifiée pour l' EmbeddedResource élément dans le fichier projet, le nom du fichier manifeste de la ressource est basé sur l’espace de noms racine du projet et le chemin d’accès relatif au fichier . resx . Pour plus d’informations, consultez Comment les fichiers manifestes de ressources sont nommés.

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

Propriétés d’inclusion d’élément par défaut

les propriétés de MSBuild suivantes sont documentées dans cette section :

Pour plus d’informations, consultez include et Exclude par défaut.

DefaultItemExcludes

Utilisez la DefaultItemExcludes propriété pour définir les modèles glob pour les fichiers et les dossiers qui doivent être exclus des modèles glob include, Exclude et Remove. Par défaut, les dossiers ./bin et ./obj sont exclus des modèles glob.

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

DefaultExcludesInProjectFolder

Utilisez la DefaultExcludesInProjectFolder propriété pour définir les modèles glob pour les fichiers et les dossiers dans le dossier du projet qui doivent être exclus des modèles glob include, Exclude et Remove. Par défaut, les dossiers qui commencent par un point ( . ), tels que . git et . vs, sont exclus des modèles glob.

Cette propriété est très similaire à la DefaultItemExcludes propriété, sauf qu’elle considère uniquement les fichiers et les dossiers dans le dossier du projet. Quand un modèle glob correspondrait involontairement à des éléments en dehors du dossier du projet avec un chemin d’accès relatif, utilisez la propriété à la DefaultExcludesInProjectFolder place de la DefaultItemExcludes propriété.

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

EnableDefaultItems

La EnableDefaultItems propriété contrôle si les éléments de compilation, les éléments de ressources incorporés et les None éléments sont implicitement inclus dans le projet. La valeur par défaut est true. Affectez à la propriété la valeur EnableDefaultItems false pour désactiver toute inclusion de fichier implicite.

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

EnableDefaultCompileItems

La EnableDefaultCompileItems propriété contrôle si les éléments de compilation sont inclus implicitement dans le projet. La valeur par défaut est true. Affectez à la propriété la valeur EnableDefaultCompileItems false pour désactiver l’inclusion implicite des fichiers *. cs et d’autres extensions de langage.

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

EnableDefaultEmbeddedResourceItems

La EnableDefaultEmbeddedResourceItems propriété contrôle si les éléments de ressources incorporés sont implicitement inclus dans le projet. La valeur par défaut est true. Affectez à la propriété la valeur EnableDefaultEmbeddedResourceItems false pour désactiver l’inclusion implicite des fichiers de ressources incorporés.

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

EnableDefaultNoneItems

La EnableDefaultNoneItems propriété contrôle si les None éléments (fichiers qui n’ont pas de rôle dans le processus de génération) sont implicitement inclus dans le projet. La valeur par défaut est true. Affectez à la propriété la valeur EnableDefaultNoneItems false pour désactiver l’inclusion implicite d' None éléments.

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

Propriétés de l’analyse du code

les propriétés de MSBuild suivantes sont documentées dans cette section :

AnalysisLevel

La AnalysisLevel propriété vous permet de spécifier un niveau d’analyse du code. Par exemple, si vous souhaitez accéder à l’aperçu des analyseurs de code, affectez à la valeur AnalysisLevel preview .

Valeur par défaut :

  • Si votre projet cible .NET 5,0 ou une version ultérieure, ou si vous avez ajouté la propriété AnalysisMode , la valeur par défaut est latest .
  • Sinon, cette propriété est omise, sauf si vous l’ajoutez explicitement au fichier projet.
<PropertyGroup>
  <AnalysisLevel>preview</AnalysisLevel>
</PropertyGroup>

Le tableau suivant présente les options disponibles.

Valeur Signification
latest Les derniers analyseurs de code qui ont été publiés sont utilisés. Il s’agit de la valeur par défaut.
preview Les derniers analyseurs de code sont utilisés, même s’ils sont en version préliminaire.
5.0 L’ensemble de règles activé pour la version .NET 5,0 est utilisé, même si des règles plus récentes sont disponibles.
5 L’ensemble de règles activé pour la version .NET 5,0 est utilisé, même si des règles plus récentes sont disponibles.

Notes

cette propriété n’a aucun effet sur l’analyse du code dans les projets qui ne font pas référence à un kit de développement logiciel (SDK) de projet, par exemple, des projets de .NET Framework hérités qui font référence au package Microsoft. CodeAnalysis. netanalyzers NuGet.

AnalysisMode

À compter de .NET 5,0, le kit de développement logiciel (SDK) .NET est fourni avec toutes les règles de qualité du code « ca ». Par défaut, seules certaines règles sont activées en tant qu’avertissements de génération. La AnalysisMode propriété vous permet de personnaliser l’ensemble des règles qui sont activées par défaut. Vous pouvez basculer vers un mode d’analyse plus agressif ou un mode d’analyse plus prudent (abonnement). Par exemple, si vous souhaitez activer toutes les règles par défaut en tant qu’avertissements de build, affectez la valeur à AllEnabledByDefault .

<PropertyGroup>
  <AnalysisMode>AllEnabledByDefault</AnalysisMode>
</PropertyGroup>

Le tableau suivant présente les options disponibles.

Valeur Signification
Default le mode par défaut, dans lequel certaines règles sont activées en tant qu’avertissements de build, certaines règles sont activées en tant qu’Visual Studio les suggestions de l’IDE, et le reste est désactivé.
AllEnabledByDefault Mode agressif ou opt-out, où toutes les règles sont activées par défaut en tant qu’avertissements de génération. Vous pouvez choisir de désactiver les règles individuelles de manière sélective pour les désactiver.
AllDisabledByDefault Mode conservateur ou opt-in, où toutes les règles sont désactivées par défaut. Vous pouvez choisir des règles individuelles pour les activer.

Notes

cette propriété n’a aucun effet sur l’analyse du code dans les projets qui ne font pas référence à un kit de développement logiciel (SDK) de projet, par exemple, des projets de .NET Framework hérités qui font référence au package Microsoft. CodeAnalysis. netanalyzers NuGet.

CodeAnalysisTreatWarningsAsErrors

La CodeAnalysisTreatWarningsAsErrors propriété vous permet de configurer si les avertissements d’analyse de la qualité du code (CAXXXX) doivent être traités comme des avertissements et rompre la génération. Si vous utilisez l' -warnaserror indicateur lorsque vous générez vos projets, les avertissements de l’analyse de la qualité du code .net sont également traités comme des erreurs. si vous ne souhaitez pas que les avertissements d’analyse de la qualité du code soient traités comme des erreurs, vous pouvez affecter CodeAnalysisTreatWarningsAsErrors à la propriété MSBuild la valeur false dans votre fichier projet.

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

EnableNETAnalyzers

L’analyse de la qualité du code .net est activée, par défaut, pour les projets qui ciblent .net 5,0 ou une version ultérieure. Vous pouvez activer l’analyse du code .NET pour les projets de type SDK qui ciblent des versions antérieures de .NET en affectant à la propriété la valeur EnableNETAnalyzers true . Pour désactiver l’analyse du code dans un projet, affectez la valeur à cette propriété false .

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

Notes

Cette propriété s’applique spécifiquement aux analyseurs intégrés dans le kit de développement logiciel (SDK) .NET 5 +. elle ne doit pas être utilisée lorsque vous installez un NuGet package d’analyse du code.

EnforceCodeStyleInBuild

Notes

Cette fonctionnalité est actuellement expérimentale et peut changer entre les versions .NET 5 et .NET 6.

L' analyse du style de code .net est désactivée, par défaut, à la génération pour tous les projets .net. Vous pouvez activer l’analyse de style de code pour les projets .NET en affectant à la propriété la valeur EnforceCodeStyleInBuild true .

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

Toutes les règles de style de code qui sont configurées pour être des avertissements ou des erreurs sont exécutées lors des violations de la build et des rapports.

Propriétés de configuration du Runtime

vous pouvez configurer certains comportements au moment de l’exécution en spécifiant MSBuild propriétés dans le fichier projet de l’application. Pour plus d’informations sur les autres méthodes de configuration du comportement au moment de l’exécution, consultez paramètres de configuration du runtime.

ConcurrentGarbageCollection

La ConcurrentGarbageCollection propriété configure si l' garbage collection d’arrière-plan (simultané) est activée. Affectez la valeur false à pour désactiver les garbage collection d’arrière-plan. Pour plus d’informations, consultez Background gc.

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

InvariantGlobalization

La InvariantGlobalization propriété configure si l’application s’exécute en mode de globalisation invariant , ce qui signifie qu’elle n’a pas accès aux données spécifiques à la culture. Affectez à la valeur la valeur true pour qu’elle s’exécute en mode de globalisation-indifférent. Pour plus d’informations, consultez mode indifférent.

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

PredefinedCulturesOnly

Dans .NET 6 et versions ultérieures, la PredefinedCulturesOnly propriété configure si les applications peuvent créer des cultures autres que la culture dite indifférente lorsque le mode invariant de globalisation est activé. Par défaut, il s’agit de true. Affectez la valeur à false pour autoriser la création de toute nouvelle culture en mode globalisation-invariant.

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

Pour plus d’informations, consultez Création de la culture et mappage de la casse en mode globalisation-invariant.

RetainVMGarbageCollection

La RetainVMGarbageCollection propriété configure le garbage collector pour placer les segments de mémoire supprimés sur une liste d’attente pour une utilisation ultérieure ou les libérer. La définition de la valeur true indique au garbage collector de placer les segments sur une liste d’attente. Pour plus d’informations, consultez conserver la machine virtuelle.

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

ServerGarbageCollection

La ServerGarbageCollection propriété configure si l’application utilise des garbage collection de station de travail ou des garbage collection de serveur. Définissez la valeur sur true sur utiliser le garbage collection serveur. Pour plus d’informations, consultez station de travail et serveur.

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

ThreadPoolMaxThreads

La ThreadPoolMaxThreads propriété configure le nombre maximal de threads pour le pool de threads de travail. Pour plus d’informations, consultez nombre maximal de threads.

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

ThreadPoolMinThreads

La ThreadPoolMinThreads propriété configure le nombre minimal de threads pour le pool de threads de travail. Pour plus d’informations, consultez minimum threads.

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

TieredCompilation

La TieredCompilation propriété configure si le compilateur juste-à-temps (JIT) utilise la compilation à plusieurs niveaux. Définissez la valeur sur false pour désactiver la compilation à plusieurs niveaux. Pour plus d’informations, consultez compilation à plusieurs niveaux.

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

TieredCompilationQuickJit

La TieredCompilationQuickJit propriété configure si le compilateur JIT utilise Quick JIT. Définissez la valeur sur false pour désactiver le JIT rapide. Pour plus d’informations, consultez Quick JIT.

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

TieredCompilationQuickJitForLoops

La TieredCompilationQuickJitForLoops propriété configure si le compilateur JIT utilise le JIT rapide sur les méthodes qui contiennent des boucles. Affectez la valeur true à pour activer le JIT rapide sur les méthodes qui contiennent des boucles. Pour plus d’informations, consultez Quick JIT for Loops.

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

Propriétés de référence

les propriétés de MSBuild suivantes sont documentées dans cette section :

AssetTargetFallback

la AssetTargetFallback propriété vous permet de spécifier des versions de framework compatibles supplémentaires pour les références de projet et les packages de NuGet. Par exemple, si vous spécifiez une dépendance de package à l’aide de PackageReference mais que ce package ne contient pas de ressources compatibles avec les projets TargetFramework , la AssetTargetFallback propriété entre en lecture. La compatibilité du package référencé est revérifiée à l’aide de chaque version cible de .NET Framework spécifiée dans AssetTargetFallback . Cette propriété remplace la propriété déconseillée PackageTargetFallback .

Vous pouvez définir la AssetTargetFallback propriété sur une ou plusieurs versions du Framework cible.

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

DisableImplicitFrameworkReferences

La DisableImplicitFrameworkReferences propriété contrôle les FrameworkReference éléments implicites lors du ciblage de .net Core 3,0 et des versions ultérieures. Quand vous ciblez .NET Core 2,1 ou .NET Standard 2,0 et versions antérieures, il contrôle les éléments PackageReference implicites pour les packages dans un sous-package. (Un reconditionnement est un package basé sur une infrastructure qui se compose uniquement de dépendances sur d’autres packages.) Cette propriété contrôle également les références implicites telles que System et System.Core lorsque vous ciblez .NET Framework.

Affectez à cette propriété la valeur true pour désactiver les éléments implicites FrameworkReference ou PackageReference . Si vous affectez à cette propriété true la valeur, vous pouvez ajouter des références explicites uniquement aux frameworks ou aux packages dont vous avez besoin.

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

La restauration d’un package référencé installe toutes ses dépendances directes et toutes les dépendances de ces dépendances. Vous pouvez personnaliser la restauration des packages en spécifiant des propriétés telles que RestorePackagesPath et RestoreIgnoreFailedSources . Pour plus d’informations sur ces propriétés et d’autres, consultez restaurer la cible.

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

ValidateExecutableReferencesMatchSelfContained

La ValidateExecutableReferencesMatchSelfContained propriété peut être utilisée pour désactiver les erreurs liées aux références de projet exécutables. Si .NET détecte qu’un projet exécutable autonome fait référence à un projet exécutable dépendant du Framework, ou vice versa, il génère des erreurs NETSDK1150 et NETSDK1151, respectivement. Pour éviter ces erreurs quand la référence est intentionnelle, affectez ValidateExecutableReferencesMatchSelfContained à la propriété la valeur false .

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

WindowsSdkPackageVersion

la WindowsSdkPackageVersion propriété peut être utilisée pour substituer la version du package de ciblage SDK Windows. Cette propriété a été introduite dans .NET 5 et remplace l’utilisation de l' FrameworkReference élément à cet effet.

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

Notes

nous vous déconseillons de remplacer la version de SDK Windows, car les packages de ciblage SDK Windows sont inclus avec le kit de développement logiciel (SDK) .net 5 +. au lieu de cela, pour référencer le dernier package de SDK Windows, mettez à jour votre version du kit de développement logiciel (SDK) .net. Cette propriété ne doit être utilisée que dans de rares cas tels que l’utilisation de packages d’aperçu ou la nécessité de remplacer la version de C#/WinRT.

Les propriétés suivantes sont utilisées pour lancer une application à l’aide de la dotnet run commande :

RunArguments

La RunArguments propriété définit les arguments passés à l’application lorsqu’elle est exécutée.

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

Conseil

Vous pouvez spécifier des arguments supplémentaires à passer à l’application à l’aide -- de l' dotnet run option pour .

RunWorkingDirectory

La RunWorkingDirectory propriété définit le répertoire de travail pour le processus d’application à démarrer dans. Il peut s’agir d’un chemin d’accès absolu ou d’un chemin d’accès relatif au répertoire du projet. Si vous ne spécifiez pas de répertoire, OutDir est utilisé comme répertoire de travail.

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

les propriétés de MSBuild suivantes sont documentées dans cette section :

EnableComHosting

La EnableComHosting propriété indique qu’un assembly fournit un serveur com. Le EnableComHosting fait d’affecter à la valeur true implique également que EnableDynamicLoading est true .

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

Pour plus d’informations, consultez exposer des composants .net à com.

EnableDynamicLoading

La EnableDynamicLoading propriété indique qu’un assembly est un composant chargé dynamiquement. Le composant peut être une bibliothèque com ou une bibliothèque non-com qui peut être utilisée à partir d’un hôte natif ou être utilisée comme plug-in. L’affectation de la valeur à cette propriété true a les effets suivants :

  • Un .runtimeconfig.jssur le fichier est généré.
  • Restauration par progression a la valeur LatestMinor .
  • les références NuGetes sont copiées localement.
<PropertyGroup>
  <EnableDynamicLoading>true</EnableDynamicLoading>
</PropertyGroup>

Propriétés de fichier générées

Les propriétés suivantes concernent le code dans les fichiers générés :

DisableImplicitNamespaceImports

la DisableImplicitNamespaceImports propriété peut être utilisée pour désactiver les importations d’espaces de noms implicites dans les projets Visual Basic qui ciblent .net 6 ou une version ultérieure. les espaces de noms implicites sont les espaces de noms par défaut qui sont importés globalement dans un projet de Visual Basic. Affectez à cette propriété la valeur true pour désactiver les importations d’espaces de noms implicites.

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

ImplicitUsings

La ImplicitUsings propriété peut être utilisée pour activer et désactiver global using des directives implicites dans les projets C# qui ciblent .net 6 ou une version ultérieure et C# 10,0 ou une version ultérieure. Lorsque la fonctionnalité est activée, le kit de développement logiciel (SDK) .NET ajoute des global using directives pour un ensemble d’espaces de noms par défaut en fonction du type de SDK de projet. Affectez à cette propriété la valeur true ou enable pour activer les directives implicites global using . Pour désactiver global using les directives implicites, supprimez la propriété ou affectez-lui la valeur false .

<PropertyGroup>
  <ImplicitUsings>true</ImplicitUsings>
</PropertyGroup>

Notes

Pour les nouveaux projets C# qui ciblent .NET 6 ou une version ultérieure, ImplicitUsings a la valeur par true défaut.

Éléments

MSBuild éléments sont des entrées dans le système de génération. Les éléments sont spécifiés en fonction de leur type, qui est le nom de l’élément. Par exemple, Compile et Reference sont deux types d’éléments courants. Les types d’éléments supplémentaires suivants sont rendus disponibles par le kit de développement logiciel (SDK) .NET :

Vous pouvez utiliser n’importe quel attribut d’élémentstandard, par exemple Include et Update , sur ces éléments. Utilisez Include pour ajouter un nouvel élément et utilisez Update pour modifier un élément existant. Par exemple, Update est souvent utilisé pour modifier un élément qui a été ajouté implicitement par le kit de développement logiciel (SDK) .net.

PackageReference

l' PackageReference élément définit une référence à un package de NuGet.

L’attribut Include spécifie l’ID du package. L' Version attribut spécifie la version ou la plage de versions. Pour plus d’informations sur la spécification d’une version minimale, d’une version maximale, d’une plage ou d’une correspondance exacte, consultez plages de versions.

L’extrait de code du fichier projet dans l’exemple suivant référence le package System. Runtime .

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

Vous pouvez également contrôler les ressources de dépendance à l’aide de métadonnées telles que PrivateAssets .

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

Pour plus d’informations, consultez références de package dans les fichiers projet.

TrimmerRootAssembly

L' TrimmerRootAssembly élément vous permet d’exclure un assembly du découpage. Le découpage est le processus qui consiste à supprimer des parties inutilisées du runtime d’une application empaquetée. Dans certains cas, la suppression peut supprimer incorrectement les références requises.

Le code XML suivant exclut System.Security de la suppression de l’assembly.

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

Utilisation

L' Using élément vous permet d' inclure globalement un espace de noms dans votre projet C#, de sorte que vous n’avez pas besoin d’ajouter une using directive pour l’espace de noms en haut de vos fichiers sources. cet élément est similaire à l' Import élément qui peut être utilisé dans le cadre de Visual Basic projets. Cette propriété est disponible à partir de .NET 6.

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

Vous pouvez également utiliser l' Using élément pour définir using <alias> des directives et globales using static <type> .

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

Par exemple :

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

Pour plus d’informations sur les directives using et directives using static <type> avec alias, consultez using, directive.

Métadonnées d’élément

en plus des attributs d' élément de MSBuildstandard, les balises de métadonnées d’élément suivantes sont rendues disponibles par le kit de développement logiciel (SDK) .net :

CopyToPublishDirectory

les CopyToPublishDirectory métadonnées d’un élément de MSBuild contrôlent le moment où l’élément est copié dans le répertoire de publication. Les valeurs autorisées sont PreserveNewest , qui copient uniquement l’élément s’il a changé, Always , qui copie toujours l’élément, et Never , qui ne copie jamais l’élément. Du point de vue des performances, PreserveNewest est préférable, car il permet une génération incrémentielle.

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

Ressources

Pour un élément qui se trouve en dehors du répertoire du projet et de ses sous-répertoires, la cible de publication utilise les métadonnées de lien de l’élément pour déterminer où copier l’élément. Linkdétermine également la manière dont les éléments en dehors de l’arborescence du projet s’affichent dans la fenêtre Explorateur de solutions de Visual Studio.

Si Link n’est pas spécifié pour un élément qui se trouve en dehors du cône du projet, la valeur par défaut est %(LinkBase)\%(RecursiveDir)%(Filename)%(Extension) . LinkBase vous permet de spécifier un dossier de base raisonnable pour les éléments en dehors du cône du projet. L’arborescence des dossiers sous le dossier de base est conservée via RecursiveDir . Si LinkBase n’est pas spécifié, il est omis du Link chemin d’accès.

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

L’illustration suivante montre comment un fichier inclus via l’élément précédent Include glob s’affiche dans Explorateur de solutions.

Explorateur de solutions présentant l’élément avec les métadonnées de lienet.

Voir aussi