CruiseControl.Net - 可以让贴标机在MSBuild之后运行吗?

时间:2009-09-01 13:42:57

标签: cruisecontrol.net

我为CC.Net创建了一个自定义贴标机,它几乎完美地工作,但看起来贴标机在构建应用程序之前运行。我对此的问题是我希望我的构建标签是我的AssemblyVersion。

我的贴标机中有以下内容:

public string Generate(IIntegrationResult previousResult)
{

    if (File.Exists(this.OutputExecutable))
    {

        Assembly assembly = System.Reflection.Assembly.Load(System.IO.File.ReadAllBytes(this.OutputExecutable));
        string version = assembly.GetName().Version.ToString();
        assembly = null;

        return version;

    }
    else
    {
        return "0.0.0.0";
    }

}

这将获取所提供的DLL / Exe的版本,以便我可以将其用作我的构建标签。我可能会在以后添加实际的内部版本号,但我只是想让这一点先工作。

问题是我的版本号的格式为2.0.93601.254 major.minor.date.svnrevision。当签入时,我构建代码库,修订版号将转到2.0.93601.255。不幸的是,CC.Net仍会生成.254的构建标签,直到成功更改为.255时调用强制构建。

有什么方法可以强制贴标机等到构建过程完成?或者我有没有其他方法可以做到这一点?

2 个答案:

答案 0 :(得分:0)

我相信答案是否定的。我所做的是创建我自己的控制台应用程序,在CC.Net的项目配置中的MSBuild任务之前更新assemblyinfo.cs文件。问题(种类)解决了。

答案 1 :(得分:0)

这是大多数人这样做的倒退;你让ccnet设置你的代码和版本的版本;自动装配,从配置中提取版本并说出svn rev#。

这就是贴标机在任务之前运行至关重要的原因。