Stack Overflowの下部にはSubversionのバージョン番号があります。
SVNリビジョン:679
このような自動バージョン管理を.NET Web Site/Application
、Windowsフォーム、WPDプロジェクト/ソリューションで使用したいと思います。
これを実装するにはどうすればよいですか?
Stack Overflowの下部にはSubversionのバージョン番号があります。
SVNリビジョン:679
このような自動バージョン管理を.NET Web Site/Application
、Windowsフォーム、WPDプロジェクト/ソリューションで使用したいと思います。
これを実装するにはどうすればよいですか?
回答:
ジェフはポッドキャストのトランスクリプトを介したリーフに基づいてCruiseControl.NETを使用しているようです。これには、ソース管理から本番までの自動デプロイメント機能があるようです。これは挿入が行われている場所でしょうか?
これは、自動ビルドのためにxUnit.netを使用して行います。私たちは使用していますCruiseControl.net
(そしてTeamCityを試しています)。継続的インテグレーションのために実行するMSBuildタスクは、ビルド番号を自動的に変更するため、結果のビルドZIPファイルには、適切にバージョン管理された一連のDLLおよびEXEが含まれています。
私たちのMSBuildファイル正規表現置換を行い、DLLのUsingTask参照が含まれています(あなたがしている歓迎、それも同様にMS-PLライセンスによってカバーされていますように、このDLLを使用します)
<UsingTask AssemblyFile = "3rdParty \ CodePlex.MSBuildTasks.dll" TaskName = "CodePlex.MSBuildTasks.RegexReplace" />
次に、CIシステムによって自動的に提供されるビルド番号を抽出します。また、必要に応じてソース管理プロバイダーにソースリビジョン番号を提供させることもできますが、CIシステムのビルド番号の方が便利であることがわかりました。これは、CIビルド番号で統合結果を確認できるだけでなく、ビルドに含まれていたチェンジセットにリンクします。
<!-カスケードはビルド番号を見つけようとします-> <PropertyGroup Condition = "'$(BuildNumber)' == ''"> <BuildNumber> $(BUILD_NUMBER)</ BuildNumber> </ PropertyGroup> <PropertyGroup Condition = "'$(BuildNumber)' == ''"> <BuildNumber> $(ccnetlabel)</ BuildNumber> </ PropertyGroup> <PropertyGroup Condition = "'$(BuildNumber)' == ''"> <BuildNumber> 0 </ BuildNumber> </ PropertyGroup>
(TeamCityのBUILD_NUMBERを試し、次にCC.netのccnetlabelを試します。どちらもない場合は、デフォルトで0に設定されているため、自動ビルドスクリプトを手動でテストできます。)
次に、すべてのプロジェクトにリンクするGlobalAssemblyInfo.csファイルにビルド番号を設定するタスクがあります。
<Target Name = "SetVersionNumber"> <RegexReplace Pattern = 'AssemblyVersion \( "(\ d + \。\ d + \。\ d +)\。\ d +" \)' Replacement = 'AssemblyVersion( "$ 1。$(BuildNumber)")' Files = 'GlobalAssemblyInfo.cs' /> <Exec Command = "attrib -r xunit.installer \ App.manifest" /> </ Target>
これにより、AssemblyVersion属性が見つかり、abcdバージョン番号がabcBuildNumberに置き換えられます。通常は、ビルダー番号の最初の3つの部分を固定し、4番目の部分をゼロにして、ソースをチェックインしたままにします(fe、今日は1.0.2.0)。
ビルドプロセスでは、SetVersionNumberタスクがビルドタスクの前にあることを確認してください。最後に、Zipタスクを使用してビルド結果を圧縮し、すべての自動ビルドのバイナリの履歴を取得します。
あなたはコードのどこかに以下を追加することでそれを行うことができます
$Id:$
たとえば、@ Jeffは次のようにしました。
<div id="svnrevision">svn revision: $Id:$</div>
チェックインすると、サーバーは$ Id:$を現在のリビジョン番号に置き換えます。この参考文献も見つけました。
あり、$日付:$、$リビジョン:$、$リビジョン:$
ASP.Net MVC
(StackOverflowと同じように)を使用している場合は、最新のSVNリビジョンを自動的に取得して表示する方法について、わかりやすい3ステップのガイドを作成しました。このガイドは、この質問そのものを自分で考えて発想を得たものです。:o)
$rev
その他、個別ファイルのリビジョンなので、ファイルが変更されない限り変更されません。Webページの番号は、プロジェクト全体のsvnリビジョン番号です(ほとんどの場合、私はここで想定しています)。これは、他の人が指摘しているファイルリビジョンとは異なります。
この場合、CCNETがプロジェクトのリビジョン番号を取得し、Webページの一部をその番号で書き換えていると想定しています。任意のCIソリューションでこれを行うことができるはずです。これをCCNETおよびTeamcityで自分で設定します(ただし、Webページではなく、デプロイメント/アセンブリバージョンの自動バージョン管理)。
これを行うには、それをサポートするCIソリューションを使用するか、ビルドプロセス(MSbuild / Nant)を使用してそのバージョンを保存し、「デプロイ」する前にファイルに書き込みます。
@BradWilsonの回答に追加するには:「必要に応じて、ソース管理プロバイダーにソースリビジョン番号を提供させることもできます。」
SubversionとMSBuildを接続するには: MSBuild Community Tasks Project