2013-05-30 8 views
4

Je souhaite utiliser VersionTask à partir des tâches de communauté MSBuild pour définir le type de calcul Révision. Cependant, j'ai de la difficulté à comprendre comment câbler la tâche dans mon fichier csproj.Comment utiliser Msbuild.Community.Tasks.Version dans un fichier csproj

Le projet a un AssemblyInfo.cs qui a l'attribut suivant défini:

[assembly: AssemblyVersion("3.2.5.*")] 

Ce que je veux faire est trop monter la génération du numéro de révision de manutention avec ma propre gestion personnalisée.

J'ai mis la tâche version personnalisée dans le fichier csproj comme suit:

<UsingTask TaskName="MyCo.Build.Tasks.Version" AssemblyFile="$(SolutionDir)\..\Build\.build\MyCo.Build.Tasks.dll" /> 

La tâche réelle est alors appelé comme suit:

<Target Name="BeforeBuild"> 
<Message Text="Setting Revision Number to $(BuildNumber)" /> 
<MyCo.Build.Tasks.Version RevisionType="BuildServerNumber" Revision="$(BuildNumber)" /></Target> 

Je peux voir la cible BeforeBuild étant appelé parce que de la tâche de message, mais le fichier exe a toujours la numérotation générée standard comme suit: Version du fichier: 3.2.5.27547

Je m'attendais à quelque chose comme 3.2.5.1 11 (le numéro de build passé dans MSBuild en tant que paramètre). Comme la tâche Version remplace la gestion par défaut de la valeur '*' pour Révision, je ne pense pas qu'il soit nécessaire de modifier réellement le fichier AssemblyInfo.cs. Dois-je transmettre la valeur de sortie de la tâche Version dans un paramètre MSBuild? Dois-je réellement utiliser la tâche AssemblyVersion pour mettre à jour les valeurs dans le fichier?

Évidemment, j'essaie d'éviter d'avoir à changer le AssemblyInfo.cs, je veux juste remplacer la gestion des numéros de version.

Quelqu'un peut-il vous conseiller s'il vous plaît?

EDIT: Je viens de trouver l'exemple d'utilisation suivant dans le fichier chm du programme d'installation qui répond en partie à ma question.

  <Version BuildType="Automatic" RevisionType="Automatic" Major="1" Minor="3" > 
      <Output TaskParameter="Major" PropertyName="Major" /> 
      <Output TaskParameter="Minor" PropertyName="Minor" /> 
      <Output TaskParameter="Build" PropertyName="Build" /> 
      <Output TaskParameter="Revision" PropertyName="Revision" /> 
     </Version> 
     <Message Text="Version: $(Major).$(Minor).$(Build).$(Revision)"/> 

Cependant, quand je lance la construction que je peux sortie généré Version Assemblée dans une tâche de message, mais le fichier exe a encore la révision par défaut comme avant

Répondre

2

j'ai eu une résolution à cette ici: How to override the revision number

En fin de compte que je devais réellement mettre à jour le fichier AssemblyInfo pour chaque projet pendant la construction. Ainsi, sur le serveur de génération (TeamCity), j'ai placé le code dont j'avais besoin dans le fichier Microsoft.Common.targets afin qu'il ne soit pas requis dans chaque annonce de projet puis transmis le numéro de version et le numéro de build TeamCity à chaque tâche de build.

0

La révision est le nombre de jours depuis 1/1/2000 lorsque vous le réglez sur Automatique - vous pouvez fournir votre propre "StartDate" si vous le souhaitez.

Questions connexes