Friday, March 4, 2011

Automatic tracking of build number in VS 2005?

In Visual Studio 2005, is there an easy way to automatically increment the assembly/file build numbers after a successful build?

Emphasis on easy. I would like to track my build version, without having to set up CruiseControl or some similar tool.

From stackoverflow
  • What about writing a little macro, which increments the version?

    Or what about this VS AddIn ?

    Treb : What kind of macro, and how is it triggered?
  • You can use this project and include it your .proj file

    This url might be of use Updating Porj build number

    This didn't fit my needs and I took to adding this as a build.proj which works a treat

    <?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="Build"  
             xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    
      <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/> <PropertyGroup>
        <Major>1</Major>
        <Minor>0</Minor>
        <Build>0</Build>
        <Revision>0</Revision>   </PropertyGroup>   <PropertyGroup>
        <BuildDir>C:\svn\Infrastructure</BuildDir> </PropertyGroup>
    
      <ItemGroup>
        <SolutionsToBuild Include="Infrastructure.sln"/>   </ItemGroup>
    
      <Target Name="Build" DependsOnTargets="ChangeDataAccessAssemblyInfo">
        <RemoveDir Directories="$(BuildDir)\Builds" Condition="Exists('$(BuildDir)\Builds')" />
        <MSBuild Projects="@(SolutionsToBuild)" Properties="Configuration=Debug" Targets="Rebuild" />   </Target>
    
      <ItemGroup>
        <TestAssemblies Include="Build\Logging\Logging.UnitTests.dll" />   </ItemGroup>
    
    
    
      <Target Name="ChangeDataAccessAssemblyInfo" >
        <Message Text="Writing ChangeDataAccessAssemblyInfo file for 1"/>
        <Message Text="Will update $(BuildDir)\DataAccess\My Project\AssemblyInfo.vb" />
        <AssemblyInfo CodeLanguage="VB"
           OutputFile="$(BuildDir)\DataAccess\My Project\AssemblyInfo_new.vb"          
    
           AssemblyTitle="Data Access Layer"
           AssemblyDescription="Message1"
           AssemblyCompany="http://somewebiste"
           AssemblyProduct="the project"
           AssemblyCopyright="Copyright notice"
           ComVisible="true"
           CLSCompliant="true"
           Guid="hjhjhkoi-9898989"
           AssemblyVersion="$(Major).$(Minor).1.1"
           AssemblyFileVersion="$(Major).$(Minor).5.7"
           Condition="$(Revision) != '0' "
           ContinueOnError="false" />
    
        <Message Text="Updated Assembly File Info" 
                 ContinueOnError="false"/>   </Target>   </Project>
    
  • The Publish options might be what you want... (def. available for C#, not sure abuut C++).

    In studio, right click on the project file, and go to Properties, then select the "Publish" tab. There is an option there for auto-incrementing revision number.

    Treb : Does not work for me :-( My project is a module that is compiled to a class library, and you can not publish those. But thanks anyway!
    xan : Ah - sorry that can't help then.

0 comments:

Post a Comment