Stuart Prestonは、彼のブログでアセンブリ情報を設定する簡単な方法について説明しています。http:
//stuartpreston.net/blog/2010/05/02/simple-assembly-versioning-with-team-build-2010/
編集:
上記のリンクは無効です。キャッシュされたバージョンは次のとおりです。
2010年5月2日にTeamFoundationServerの下でStuartPrestonによって投稿されました
これを実現するためのより洗練された方法はたくさんありますが、私が望んでいたものを正確に提供するものはないようでした。そこで、ここでは、TeamBuild2010を使用してアセンブリバージョン管理を行う別の方法を紹介します。チームビルド番号をアセンブリバージョンの番号と正確に一致させたいと思いました。 (そして派生しない)、このように:
(画像)
これが私のやり方です。まず、ビルド定義内でBuildNumber形式をカスタマイズします。
(画像)
私の場合、メジャーバージョン番号とマイナーバージョン番号「0.1」が明示的に追加されるようにカスタマイズすることにしました。これにより、達成したいバージョン番号の最初の2つの部分を制御できます。また、前にマクロ$(Month)$(DayOfMonth)
を追加しまし1
た。2010年5月2日の場合、これにより10502という番号が生成されます(ここで通年を使用しない理由は、今日は100502のビルド番号を生成し、ファイルのバージョン番号は65335を超えることはできないためです)。
バージョン0.2、0.3、または1.0で作業することにした場合、ここでビルド番号をインクリメントして定義を保存するだけで、年が変わったときに番号をインクリメントできます。簡単だと言った!
ビルド番号形式の最後の部分はそのままにしました(つまり、その日のビルドごとに1ずつ増加し、翌日にリセットされるリビジョン番号)。
これで、ソリューションに対して実行されたときにこのバージョン番号を取得しMSBuild
、バージョン番号を分割して数値部分をProperties\AssemblyVersion.cs
ファイルに取り込むだけです(最初にそのファイルの行をコメントアウトしてAssemblyFileVersion
チェックインする必要があります)。
ファイルに挿入する必要のあるフラグメントは次のとおり.csproj
です(チェックアウトしてから、メモ帳またはお気に入りのテキストエディターで開く必要があります)。
<UsingTask
TaskName="Microsoft.TeamFoundation.Build.Tasks.GetBuildProperties"
AssemblyFile="$(MSBuildProgramFiles32)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\Microsoft.TeamFoundation.Build.ProcessComponents.dll"
Condition="' $(BuildUri) '!=' '"/>
<Target Name="BeforeBuild" Condition="' $(BuildUri) '!=' '">
<GetBuildProperties TeamFoundationServerUrl="$(TeamFoundationServerUrl)" BuildUri="$(BuildUri)">
<Output TaskParameter="BuildNumber" PropertyName="BuildNumber" />
</GetBuildProperties>
<PropertyGroup>
<BuildNumberSplitLocation>$([MSBuild]::Add($(BuildNumber.LastIndexOf('_')),1))</BuildNumberSplitLocation>
</PropertyGroup>
<ItemGroup>
<AssemblyVersionLines Include="[assembly:AssemblyFileVersion("$(BuildNumber.Substring($(BuildNumberSplitLocation)))")]" />
</ItemGroup>
<Exec Command="attrib -r "$(ProjectDir)\Properties\AssemblyInfo.cs"" ContinueOnError="false" />
<Message Text="Lines being added: @(AssemblyVersionLines)" Importance="high" />
<WriteLinesToFile File="$(ProjectDir)\Properties\AssemblyInfo.cs" Lines="@(AssemblyVersionLines)" />
</Target>
(参照の終わり)
彼はファイルを変更して、ビルド前に渡された値でcsproj
ファイルを更新し、アセンブリが次の順列に従ってバージョン管理されるようにします。AssemblyInfo.cs
TFS
MMDDRev
カスタムビルド番号が必要なという点で、状況は少し異なります。これを行うには、をに変更BuildNumberFormat
します3.8.0.$(Rev:.r)
。変更するのはリビジョンだけなので、TFS
自動的に増分します。
部分を更新したい場合は3.8.0.
、ビルド番号フォーマットを手動で再度編集できます。BeforeBuild
それ以外の場合は、のタスクの一部としてビルド番号を保存および解析するためのソリューションが必要になりますcsproj
。