Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to update only version info in assemblyinfo.cs using cake?

Tags:

c#

cakebuild

I am very new to cakebuild. I want to update the version info of assemblyinfo.cs using cakebuild.

public static void CreateAssemblyInfo() method overwrites the entire content of the assemblyinfo file. But I need just version info to be updated.

How can I achieve this.?

Regards, Aradhya

like image 533
shobha aradhya Avatar asked Nov 02 '16 13:11

shobha aradhya


2 Answers

If you do not want to have separate files you can also use a regex replace:

#addin "Cake.FileHelpers"
var yourVersion = "1.0.0.0";

Task("SetVersion")
   .Does(() => {
       ReplaceRegexInFiles("./your/AssemblyInfo.cs", 
                           "(?<=AssemblyVersion\\(\")(.+?)(?=\"\\))", 
                           yourVersion);
   });

Depending on your AssemblyInfo file you may want to also replace the values of AssemblyFileVersion or AssemblyInformationalVersion

like image 65
Philipp Grathwohl Avatar answered Nov 15 '22 17:11

Philipp Grathwohl


Have 2 files, one for static stuff and one for the auto generated bits.

The pattern I usually apply is to have an SolutionInfo.cs that's shared between projects and a AssemblyInfo.cs per project which are unique per project.

An example folder structure could be

src
|    Solution.sln
|    SolutionInfo.cs
|    
\--- Project
    |   Project.csproj
    |
    \---Properties
            AssemblyInfo.cs

And basically your csproj file would instead of:

<Compile Include="Properties\AssemblyInfo.cs" />

Be something like:

<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="..\SolutionInfo.cs">
  <Link>Properties\SolutionInfo.cs</Link>
</Compile>

This way you keep any manual edits to your AssemblyInfo.cs and can safely auto generate without risk of overwriting that info.

This also lets you share things like version / copyright / company between projects in a solution.

The Cake build script part of this would look something like this:

Task("SolutionInfo")
    .IsDependentOn("Clean")
    .IsDependentOn("Restore")
    .Does(() =>
{
    var file = "./src/SolutionInfo.cs";
    CreateAssemblyInfo(file, assemblyInfo);
});
like image 34
devlead Avatar answered Nov 15 '22 18:11

devlead