確認 SVN リビジョン番号をASP.NET Web サイトと同期するにはどうすればよいですか。




tortoisesvn 日本語 (6)

あなたのコードのどこかに以下を追加することによってそれをすることができます

$Id:$

それで例えば@Jeffはしました:

<div id="svnrevision">svn revision: $Id:$</div>

そして、サーバにチェックインされた時に$ Id:$を現在のリビジョン番号に置き換えました。 私も この参照を見つけました

$ Date:$ $ Rev:$ $ Revision:$もあります。

スタックオーバーフローの一番下には、Subversionのバージョン番号があります。

SVNのリビジョン:679

私の .NET Web Site/Application 、Windowsフォーム、WPDプロジェクト/ソリューションでこのような自動バージョン管理を使用したいです。

どうやってこれを実装するのですか?


JeffがPodcastのトランスクリプトを通したリーフィングに基づいて CruiseControl.NET を使用しているようです。 これには、ソース管理から本番まで自動展開機能があるようです。 これは挿入が起こっているところでしょうか?


@Balloon TortoiseSVNを使用している場合は、パッケージ化された SubWCRev プログラムを使用できます。 それは作業コピーを問い合わせ、あなたに最高のリビジョン番号だけを伝えます。 確かに、これはサーバーサイドの問題に対するクライアントサイドのアプローチのようですが、これは素晴らしいコマンドラインプログラムであるため、かなり簡単に使用するためにその出力を取得できるはずです。



自動ビルドのために xUnit.net でこれを xUnit.net ます。 私たちは CruiseControl.net を使用しています(そしてTeamCityを試しています)。 継続的インテグレーションのために実行するMSBuildタスクは自動的にビルド番号を変更します。そのため、生成されるビルドZIPファイルには適切にバージョン管理されたDLLとEXEのセットが含まれています。

私たちの MSBuildファイルに は、正規表現の置き換えを行うDLLのUsingTask参照が含まれています。(このDLLを使用しても大丈夫です、MS-PLライセンスにも含まれています)

  <UsingTask
     AssemblyFile="3rdParty\CodePlex.MSBuildTasks.dll"
     TaskName="CodePlex.MSBuildTasks.RegexReplace"/>

次に、CIシステムによって自動的に提供されるビルド番号を抽出します。 必要に応じてソース管理プロバイダにソースリビジョン番号を提供させることもできますが、CIビルド番号による統合結果を確認できるだけでなく、CIシステムのbuild#の方が便利であることもわかりました。ビルドに含まれていたチェンジセットにリンクします。

 <!-- Cascading attempts to find a build number -->

 <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タスクを使用してビルド結果を圧縮し、自動ビルドごとにバイナリの履歴を記録します。


$rev など、個々のファイルのリビジョンなので、ファイルが変更されない限り変更されません。 Webページ上の番号は(たぶん私がここで仮定している)プロジェクト全体のためのSVNリビジョン番号です。 それは他の人が指摘してきたファイルのリビジョンとは異なります。

この場合、CCNETがプロジェクトのリビジョン番号を取得し、その番号を使ってWebページの一部を書き換えていると思います。 どのCIソリューションでもこれを実行できるはずで、CCNETとTeamcityを使用してこれを設定します(Webページではありませんが、デプロイメント/アセンブリバージョンの自動バージョン管理)。

これを行うには、それをサポートするCIソリューションを使用するか、ビルドプロセス(MSbuild / Nant)を使用してそのバージョンを保存し、それを「デプロイ」する前にファイルに書き込みます。





versioning