167 votes

Quelles sont les méthodes conseillées pour l’utilisation des attributs d’Assembly ?

J'ai une solution avec plusieurs projets. Je suis en train d'optimiser AssemblyInfo.cs fichiers en reliant une solution à l'échelle de l'assemblée info fichier. Quelles sont les meilleures pratiques pour faire cela? Quels attributs doivent être en solution à l'échelle de fichier et un projet/montage spécifique?


Edit: Si vous êtes intéressé il y a une question de suivi Quelles sont les différences entre AssemblyVersion, AssemblyFileVersion et AssemblyInformationalVersion?

213voto

JRoppert Points 2558

Nous sommes à l'aide d'un fichier global appelé GlobalAssemblyInfo.cs et un local appelé AssemblyInfo.cs. Le fichier global contient les attributs suivants:

[assembly: AssemblyProduct("Your Product Name")]

[assembly: AssemblyCompany("Your Company")]
[assembly: AssemblyCopyright("Copyright © 2008 ...")]
[assembly: AssemblyTrademark("Your Trademark - if applicable")]

#if DEBUG
[assembly: AssemblyConfiguration("Debug")]
#else
[assembly: AssemblyConfiguration("Release")]
#endif

[assembly: AssemblyVersion("This is set by build process")]
[assembly: AssemblyFileVersion("This is set by build process")]

Le local AssemblyInfo.cs contient les attributs suivants:

[assembly: AssemblyTitle("Your assembly title")]
[assembly: AssemblyDescription("Your assembly description")]
[assembly: AssemblyCulture("The culture - if not neutral")]

[assembly: ComVisible(true/false)]

// unique id per assembly
[assembly: Guid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")]

Vous pouvez ajouter la GlobalAssemblyInfo.cs à l'aide de la procédure suivante:

  • Sélectionnez Ajouter/Élément Existant... dans le menu contextuel du projet
  • Sélectionnez GlobalAssemblyInfo.cs
  • Développez l'Add-Buton en cliquant sur la petite flèche en bas à droite
  • Sélectionnez "Ajouter en tant Que Lien" dans les boutons dans la liste déroulante

21voto

Krishna Points 2422

Dans mon cas, nous construisons un produit pour lequel nous avons une solution Visual Studio, avec des composants différents dans leurs propres projets. Les attributs communs aller. Dans la solution, il y a environ 35 projets, et une assemblée commune info (CommonAssemblyInfo.cs), qui a les attributs suivants:

[assembly: AssemblyCompany("Company")]
[assembly: AssemblyProduct("Product Name")]
[assembly: AssemblyCopyright("Copyright © 2007 Company")]
[assembly: AssemblyTrademark("Company")]

//This shows up as Product Version in Windows Explorer
//We make this the same for all files in a particular product version. And increment it globally for all projects.
//We then use this as the Product Version in installers as well (for example built using Wix).
[assembly: AssemblyInformationalVersion("0.9.2.0")]

Les autres attributs tels que AssemblyTitle, AssemblyVersion etc, nous offre par l'assemblée. Lors de la construction d'une assemblée à la fois AssemblyInfo.cs et CommonAssemblyInfo.cs sont intégrées dans chaque assemblée. Cela nous donne le meilleur des deux mondes où vous voudrez peut-être avoir certains attributs communs à tous les projets et des valeurs spécifiques pour certains autres.

Espérons que cela aide.

16voto

Scott Dorman Points 25000

La solution présentée par @JRoppert est presque la même chose que ce que je fais. La seule différence est que j'ai mis les lignes suivantes dans le local AssemblyInfo.cs fichier, car ils peuvent varier avec chaque assemblée:

#if DEBUG
[assembly: AssemblyConfiguration("Debug")]
#else
[assembly: AssemblyConfiguration("Release")]
#endif
[assembly: AssemblyVersion("This is set by build process")]
[assembly: AssemblyFileVersion("This is set by build process")]
[assembly: CLSCompliant(true)]

J'ai aussi (en général), utiliser une assemblée commune info par solution, avec l'hypothèse que la seule solution est un seul et même produit line/détachable produit. L'assemblée commune le fichier d'information a également:

[assembly: AssemblyInformationalVersion("0.9.2.0")]

Qui va définir le "ProductVersion" valeur affichée par l'Explorateur Windows.

8voto

jlew Points 5666

Tâches de communauté MSBuild contient une tâche personnalisée appelée AssemblyInfo que vous pouvez utiliser pour générer votre assemblyinfo.cs. Elle nécessite la modification un peu manuelle de vos fichiers csproj à utiliser, mais vaut la peine.

3voto

Cameron MacFarland Points 27240

Pour partager un fichier entre plusieurs projets, vous pouvez ajouter un fichier existant comme un lien.

Pour ce faire, ajoutez un fichier existant, puis cliquez sur "Ajouter en tant que Lien" dans le sélecteur de fichier.Add As Link

Comme pour ce qu'il faut mettre dans le fichier partagé, je suggère de mettre des choses qui seraient partagés entre les assemblées. Des choses comme le droit d'auteur, société, peut-être la version.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X