Sunday, February 14, 2010

Changing build system file and AssemblyInfo

Hi all!

I just committed a change to our file in order to easy
package distribution generation as well as integration with
CruiseControl. Yes, Npgsql is going to have a cruisecontrol server.
More details later.

The biggest change is that our AssemblyInfo.cs file can be generated
automatically. This will be needed in order to generate assembly
versions with a value cruise control server will assign to each build.

So, now, in order to generate a build, you will need to specify the
CCNetLabel property. You don't have to, but if you don't, Npgsql build
will have a version value.

You just need to do:

./ -D:CCNetLabel= ccnet

And it will generate an AssemblyInfo.cs like this:

using System;
using System.Reflection;
using System.Resources;

// ------------------------------------------------------------------------------
// <autogenerated>
// This code was generated by a tool.
// Mono Runtime Version: 2.0.50727.1433
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </autogenerated>
// ------------------------------------------------------------------------------

[assembly: CLSCompliantAttribute(true)]
[assembly: AssemblyTitleAttribute("Npgsql - .Net Data Provider for PostgreSQL")]
[assembly: AssemblyDescriptionAttribute(".Net Data Provider for PostgreSQL")]
[assembly: AssemblyCompanyAttribute("Npgsql Development Team")]
[assembly: AssemblyProductAttribute("Npgsql")]
[assembly: AssemblyCopyrightAttribute("Copyright © 2002 - 2010 Npgsql Development Team")]
[assembly: AssemblyTrademarkAttribute("")]
[assembly: AssemblyVersionAttribute("")]
[assembly: AssemblyFileVersionAttribute("")]
[assembly: NeutralResourcesLanguageAttribute("en", UltimateResourceFallbackLocation.MainAssembly)]

This ccnet doesn't only generate the AssemblyInfo.cs file. This is in fact done by the createAssemblyInfo which ccnet depends on.

ccnet builds everything. It cleans up the build folder, builds, run the analysis tools and create the
packages. As its name implies, it will be called by cruisecontrol server in order to create the builds.

This is the first shot on this issue, so if you have comments or
suggestions, please let me know.

Thanks in advance.