Nous utilisons un fichier global appelé GlobalAssemblyInfo.cs et un fichier 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 fichier AssemblyInfo.cs local 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 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 le bouton d'ajout en cliquant sur cette petite flèche vers le bas à droite
- Sélectionnez "Ajouter en tant que lien" dans la liste déroulante des boutons
AssemblyCultureAttribute
mérite une meilleure explication. Il est préférable que l'attribut soit complètement absent (sauf s'il s'agit d'un assemblage satellite). Lorsque vous utilisez des assemblys satellites à grande échelle, il se peut que vous ayez besoin de trois, et non de deux niveaux de fichiers d'informations d'assemblage (global, assemblage principal et assemblage satellite qui spécifie uniquement la culture dans ce cas).Dans mon cas, nous construisons un produit pour lequel nous avons une solution Visual Studio, avec divers composants dans leurs propres projets. Les attributs communs disparaissent. Dans la solution, il y a environ 35 projets et une information d'assemblage commune (CommonAssemblyInfo.cs), qui a les attributs suivants:
Les autres attributs tels que AssemblyTitle, AssemblyVersion, etc., nous fournissons sur une base par assemblage. Lors de la création d'un assembly, AssemblyInfo.cs et CommonAssemblyInfo.cs sont intégrés à chaque assembly. Cela nous donne le meilleur des deux mondes où vous voudrez peut-être avoir des attributs communs pour tous les projets et des valeurs spécifiques pour certains autres.
J'espère que cela pourra aider.
la source
<Compile Include="$(MSBuildThisFileDirectory)..\Common\CommonAssemblyInfo.cs"/>
, une directive MSBuild qui peut même être dans unCommon.targets
fichier partagé . Réutilisation du code Yay.La solution présentée par @JRoppert est presque la même que ce que je fais. La seule différence est que j'ai mis les lignes suivantes dans le fichier AssemblyInfo.cs local car elles peuvent varier avec chaque assembly:
J'utilise également (généralement) une information d'assemblage commune par solution, en supposant qu'une solution est une seule ligne de produits / produit libérable. Le fichier d'informations d'assemblage commun contient également:
Ce qui définira la valeur "ProductVersion" affichée par l'Explorateur Windows.
la source
MSBuild Community Tasks contient une tâche personnalisée appelée AssemblyInfo que vous pouvez utiliser pour générer votre assemblyinfo.cs. Cela nécessite une petite édition manuelle de vos fichiers csproj à utiliser, mais cela en vaut la peine.
la source
À mon avis, utiliser un GlobalAssemblyInfo.cs est plus problématique qu'il n'en vaut la peine, car vous devez modifier chaque fichier de projet et n'oubliez pas de modifier chaque nouveau projet, alors que vous obtenez un AssemblyInfo.cs par défaut.
Pour les changements de valeurs globales (c'est-à-dire la société, le produit, etc.), les changements sont généralement si rares et simples à gérer que je ne pense pas que DRY devrait être une considération. Exécutez simplement le script MSBuild suivant (en fonction du pack d'extension MSBuild ) lorsque vous souhaitez modifier manuellement les valeurs de tous les projets de manière unique:
la source
Pour partager un fichier entre plusieurs projets, vous pouvez ajouter un fichier existant en tant que lien.
Pour ce faire, ajoutez un fichier existant et cliquez sur "Ajouter en tant que lien" dans le sélecteur de fichiers. (source: free.fr )
Quant à ce qu'il faut mettre dans le fichier partagé, je suggérerais de mettre des éléments qui seraient partagés entre les assemblys. Des choses comme le droit d'auteur, la société, peut-être la version.
la source
L'utilisation d'un seul fichier AseemblyInfo.cs pour plusieurs projets n'est pas recommandée. Le fichier AssemblyInfo comprend des informations qui peuvent être pertinentes uniquement pour cet assembly spécifique. Les deux éléments d'information les plus évidents sont le
AssemblyTitle
etAssemblyVersion
.Une meilleure solution pourrait être d'utiliser un
targets
fichier, qui est géré par MSBuild, afin d '«injecter» des attributs d'assembly à plusieurs projets.la source
Une chose que j'ai trouvée utile est de générer les éléments AssemblyVersion (etc.) en appliquant la substitution de jetons dans la phase de pré-construction.
J'utilise TortoiseSvn, et il est facile de l'utiliser
SubWCRev.exe
pour transformer un modèleAssemblyInfo.wcrev
enAssemblyInfo.cs
. La ligne appropriée dans le modèle peut ressembler à ceci:Le troisième élément est alors le numéro de révision. J'utilise le quatrième élément pour vérifier que je n'ai pas oublié de valider des fichiers nouveaux ou modifiés (le quatrième élément est 00 si tout est OK).
Au fait, ajoutez
AssemblyInfo.wcrev
à votre contrôle de version et ignorezAssemblyInfo.cs
si vous l'utilisez.la source