Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
Vous pouvez utiliser une propriété MSBuild pour transformer les propriétés de projet liées au package en attributs d’assembly dans un fichier de code généré. En outre, vous pouvez utiliser des éléments MSBuild pour ajouter des attributs d’assembly arbitraires au fichier généré.
Utiliser des propriétés de package en tant qu’attributs d’assembly
La propriété MSBuild contrôle GenerateAssemblyInfo la AssemblyInfo génération d’attributs pour un projet. Lorsque la GenerateAssemblyInfo valeur est true (qui est la valeur par défaut), les propriétés de projet associées au package sont transformées en attributs d’assembly. Le tableau suivant répertorie les propriétés du projet qui génèrent les attributs. Il répertorie également les propriétés que vous pouvez utiliser pour désactiver cette génération par attribut, par exemple :
<PropertyGroup>
<GenerateNeutralResourcesLanguageAttribute>false</GenerateNeutralResourcesLanguageAttribute>
</PropertyGroup>
| Propriété MSBuild | Attribut d’assemblage | Propriété pour désactiver la génération d’attributs |
|---|---|---|
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 :
-
AssemblyVersionetFileVersionont par défaut la valeur de$(Version)sans suffixe. Par exemple, si$(Version)est1.2.3-beta.4, alors la valeur serait1.2.3. -
InformationalVersionest défini par défaut sur la valeur de$(Version). - Si la
$(SourceRevisionId)propriété est présente, elle est ajoutée àInformationalVersion. Vous pouvez désactiver ce comportement à l’aideIncludeSourceRevisionInInformationalVersionde . - Les propriétés
CopyrightetDescriptionsont également utilisées pour les métadonnées NuGet. -
Configuration, qui est par défautDebug, est partagé avec toutes les cibles MSBuild. Vous pouvez le définir via l’option--configurationdes commandesdotnet, par exemple dotnet pack. - Certaines des propriétés sont utilisées lors de la création d’un package NuGet. Pour plus d’informations, consultez Propriétés du package.
Définir des attributs arbitraires
Il est également possible d’ajouter vos propres attributs d’assembly au fichier généré. Pour ce faire, définissez les <AssemblyAttribute> éléments MSBuild qui indiquent au Kit de développement logiciel (SDK) le type d’attribut à créer. Ces éléments doivent également inclure tous les paramètres de constructeur requis pour cet attribut. Par exemple, l’attribut System.Reflection.AssemblyMetadataAttribute a un constructeur qui accepte deux chaînes :
- Nom permettant de décrire une valeur arbitraire.
- Valeur à stocker.
Si vous aviez une Date propriété dans MSBuild qui contenait la date de création d’un assembly, vous pouvez l’utiliser AssemblyMetadataAttribute pour incorporer cette date dans les attributs d’assembly à l’aide du code MSBuild suivant :
<ItemGroup>
<!-- Include must be the fully qualified .NET type name of the Attribute to create. -->
<AssemblyAttribute Include="System.Reflection.AssemblyMetadataAttribute">
<!-- _Parameter1, _Parameter2, etc. correspond to the
matching parameter of a constructor of that .NET attribute type -->
<_Parameter1>BuildDate</_Parameter1>
<_Parameter2>$(Date)</_Parameter2>
</AssemblyAttribute>
</ItemGroup>
Cet élément indique au Kit de développement logiciel (SDK) .NET d’émettre le code C# (ou F# ou Visual Basic équivalent) en tant qu’attribut au niveau de l’assembly :
[assembly: System.Reflection.AssemblyMetadataAttribute("BuildDate", "01/19/2024")]
(La chaîne de date réelle correspond à celle que vous avez fournie au moment de la compilation.)
Si l’attribut a des types de paramètres autres que System.String, vous pouvez spécifier les paramètres à l’aide d’un modèle particulier d’éléments XML pris en charge par la tâche MSBuild WriteCodeFragment . Consultez la tâche WriteCodeFragment - Générer des attributs au niveau de l’assembly.
Migrer à partir de .NET Framework
Si vous migrez votre projet .NET Framework vers .NET 6 ou version ultérieure, vous risquez de rencontrer une erreur liée aux fichiers d’informations d’assembly dupliqués. Cela est dû au fait que les modèles de projet .NET Framework créent un fichier de code avec des attributs d’informations d’assembly définis. Le fichier se trouve généralement à l’emplacement .\Properties\AssemblyInfo.cs ou .\Properties\AssemblyInfo.vb. Toutefois, les projets de style SDK génèrent également ce fichier pour vous en fonction des paramètres du projet.
Lors du portage de votre code vers .NET 6 ou version ultérieure, effectuez l’une des opérations suivantes :
- Pour désactiver la génération du fichier de code temporaire qui contient les attributs d'informations d'assemblage, définissez
GenerateAssemblyInfosurfalsedans votre fichier de projet. Cela vous permet de conserver votre fichier AssemblyInfo . - Migrez les paramètres dans le fichier AssemblyInfo vers le fichier projet, puis supprimez le fichier AssemblyInfo .