2009-09-01 16 views
0

我为CC.Net创建了一个自定义标签器,它几乎完美地工作,但看起来标签器在构建应用程序之前运行。我遇到的问题是我希望我的构建标签是我的AssemblyVersion的标签。CruiseControl.Net - 贴标机可以在MSBuild之后运行吗?

我在贴标机以下内容:

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。

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

回答

0

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

0

这倒退于大多数人如何做到这一点;你使ccnet自动设置你的代码&组件的版本,从配置文件中拉出版本并说出svn rev#。

这就是为什么标签打印机在任务之前运行至关重要。

相关问题