2011-08-31 13 views
15

現在、アセンブリのバージョン番号は2.0.831.0です。私が理解しているように、メジャーバージョン、マイナーバージョン、日付、ビルド番号です。同じ日に変更して再度ビルドすると、2.0.831.1,2.0.831.2などです。TeamCityのバージョンを.NETアセンブリのバージョンと一致させる

私のTeamCityビルド番号のフォーマットは、単純に2です。{0}は、自動増分された番号です永遠に(2.195,2.196など)。

TeamCityをアセンブリバージョンとまったく同じように見えるようにするにはどうすればよいですか?変更ログをアセンブリバージョンに関連付けることで、誰でもアセンブリバージョン2.0.831.2がこれらのファイルにこれらの変更を加えたと言うことができるようにしたいと考えています。

追加情報: ビルドステップでは、「MSBuild」ではなく「Visual Studio(sln)」オプションを使用します。 ソース管理にSubversionを使用しています。 TeamCityのバージョンは6.5.1(ビルド17834)です。

+0

http://stackoverflow.com/questions/1041153/teamcity-labeling-vcs-subversion-with-an-artifacts-file-version – sylvanaar

答えて

21

semantic versioning scheme{major}.{minor}.{patch}を採用し、ビルド番号{major}.{minor}.{patch}.{build}に4番目の要素を追加することをお勧めします。 これは、ビルド日をバージョン管理スキームに含めるほど便利です。

TeamCity 6.5(バージョンを指定していません)にはビルド時にAssemblyInfo.csのバージョンにパッチを適用するために使用できるビルド機能があります。 AssemblyInfo Patcherのドキュメントを参照してください。

AssemblyInfo patcher dialog (TeamCity documentation)

あなたは、あなたがあなたのアセンブリであり、また、パッチ適用機能のように、ビルド自体のフォーマットを使用したい方法でビルド番号の形式を定義することができます。

+0

コメントするには十分な評判がないので、答えとしてccellarにコメントしてください。バージョンの文字列形式は次のとおりです。 major.minor [.build [.revision]] ビルド番号は4番目ではなく3番目の要素です。 AssemblyVersionにこの形式がない場合、VersionクラスのBuildプロパティとRevisionプロパティに不正な値が設定されます。 http://msdn.microsoft.com/en-us/library/system.versionaspx – jbtibor

+2

@jbtiborマイクロソフトでは異なるバージョン番号体系がありますが、ccellarの体系がより理にかなっていると主張します。それは私が使用する体系です。それについて考えてみましょう:TeamCityビルド番号を使用する場合、ビルド番号は常に一意なので、複数のビルドで同じリビジョンを持つことはできますが、同じビルドで複数のリビジョンを持つことはできません。 –

+0

AssemblyInfo.csのAssemblyInformationalVersionAttribute属性を使用してセグバーバージョンを指定できます(この属性で任意の文字列をバージョンとして指定できます)。この値は、ビルドプロセスで取得して使用することができます。私は、自分がチェックインするもののバージョン情報を決定する変更を行う前に、開発者次第であるという考えが好きです。 –

6

MSBuildランナーを使用し、AssemblyInfoファイルからバージョン情報を読み取り、ビルドを実行している間TeamCityビルドバージョンをその値に設定してから、そのバージョンのビルド番号部分をインクリメントするMSBuildスクリプトを作成する方法があります、その値をAssemblyInfoに書き戻します。

カスタムMSBuildスクリプトの作成を理解する必要があり、バージョン情報の読み書きにコミュニティタスクなどのいくつかを使用する必要があるため、これは特に些細なことではありません。

グローバルAssemblyInfoファイルのコンセプトも使用しています。すべてのアセンブリで参照(VSでリンクを追加)しているため、ビルド中に1つのファイルを更新するだけです。

優れた記事hereがあります。これは、MSBuildで一般的なCIタスクを実行することについて説明しています。彼はCruiseControl.NETを使用していますが、その多くはまだ適用されています。 TeamCity 6.5を使用している場合は、ビルド機能を排他的に使用する方法を検討します。これは、カスタムMSBuildスクリプトよりも保守がずっと簡単です。

+1

これはすべて意味があります。これを達成するためのチュートリアルはありますか?以前はMSBuildで作業していませんでした。具体的な事例はありますか? – Dzejms

+0

答えが更新されました。 – devdigital

関連する問題