Vous pouvez utiliser la msbuild community tasks version classe par exemple
<PropertyGroup>
<MinorIncrement Condition=" '$(ReleaseType)' == 'Internal' ">None</MinorIncrement>
<MinorIncrement Condition=" '$(MinorIncrement)' == '' ">Increment</MinorIncrement>
<BuildIncrement>Increment</BuildIncrement>
<BuildIncrement Condition=" '$(MinorIncrement)' == 'Increment' ">Reset</BuildIncrement>
</PropertyGroup>
<Target Name="BumpVersion">
<Version VersionFile="version.txt" MinorType="$(MinorIncrement)" BuildType="$(BuildIncrement)">
<Output TaskParameter="Major" PropertyName="Major"/>
<Output TaskParameter="Minor" PropertyName="Minor"/>
<Output TaskParameter="Build" PropertyName="Build"/>
<Output TaskParameter="Revision" PropertyName="Revision"/>
</Version>
<AssemblyInfo CodeLanguage="CS" OutputFile="VersionInfo.cs" AssemblyVersion="$(Major).$(Minor).$(Build).$(Revision)" AssemblyFileVersion="$(Major).$(Minor).$(Build).$(Revision)"/>
<Message Text="Version: $(Major).$(Minor).$(Build).$(Revision)"/>
</Target>
Dans la section supérieure, je définis des valeurs pour les types de version. Malheureusement, ceux-ci semblent seulement être documentés dans le code.
CruisControl.Net définit le ReleaseType de manière externe.
Si nous avons un ReleaseType de 'Internal' alors l'incrément mineur n'est pas fait mais le numéro de build est dépassé et si ce n'est pas le cas, nous incrémentons le numéro mineur et réinitialisons le numéro de build. L'élément Version lira la version à partir de version.txt, sous la forme "1.0.1.3", y ajoutera des choses, puis la lira dans certaines variables, c'est ce que le bit de sortie est à propos de (je pense!) Pour l'utilisation dans le bit qui modifie les informations d'assemblage
Utilisez-vous déjà un outil d'intégration continue? Si c'est le cas, ça va être plus facile si vous nous dites lequel; Si ce n'est pas le cas, vous voudrez peut-être examiner cela en premier. TeamCity est assez efficace pour gérer les numéros de build. – pdr