2009-09-01 9 views
0

CC.Net用のカスタムラベラーを作成しましたが、これはほぼ完璧に動作しますが、アプリケーションがビルドされる前にラベラーが動作しているようです。私が持っている問題は、ビルドラベルをAssemblyVersionのものにしたいということです。CruiseControl.Net - MSBuildの後にlabellerを実行することはできますか?

私は私のラベラに次き:

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になります。残念ながら、.255に変更されると強制ビルドが呼び出されるまで、CC.Netは.254のビルド・ラベルを生成します。

は、私がビルドプロセスが完了するまで待機するラベラーを強制することができます方法はありますか?または、これをやるべきである別の方法がありますか?

答えて

0

この回答は私が信じていません。私がやったことは、CC.Netのプロジェクト設定のMSBuildタスクの前にassemblyinfo.csファイルを更新する独自のコンソールアプリケーションを作成することでした。問題(種類)が解決されました。

0

これはほとんどの人がこれを行う方法から逆方向です。 ccnetはあなたのコード&アセンブリのバージョンを自動的に設定し、configからバージョンを取り出してsvn rev#と言う。

これは、タスクの前にラベラーが実行されることが非常に重要である理由です。

関連する問題