89


16

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

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

_ svnリビジョン:679 _

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

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

7 Answer


31


Jeffが CruiseControl.NET。 これには、ソース管理から本番まで自動展開機能があるようです。 これは挿入が起こっているところでしょうか?


27


自動ビルドの場合は、http://www.codeplex.com/xunit[xUnit.net]を使用します。 私たちは `CruiseControl.net`を使用しています(そしてTeamCityを試しています)。 継続的インテグレーションのために実行するMSBuildタスクは自動的にビルド番号を変更します。そのため、生成されるビルドZIPファイルには適切にバージョン管理された一連のDLLとEXEが含まれています。


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

   $(BUILD_NUMBER)


   $(ccnetlabel)


   0

(TeamCityからのBUILD_NUMBER、次にCC.netからのccnetlabelを試してみます。どちらも存在しない場合は、デフォルトで0になるので、自動ビルドスクリプトを手動でテストできます。)

次に、ビルド番号をGlobalAssemblyInfo.csファイルに設定し、それをすべてのプロジェクトにリンクするタスクがあります。


これによりAssemblyVersion属性が見つかり、a.b.c.dのバージョン番号がa.b.cc.BuildNumberに置き換えられます。 通常、ビルダー番号の最初の3つの部分は固定され、4つ目はゼロに固定された状態でソースがツリーにチェックインされたままになります(たとえば、今日は1.0.2.0です)。

ビルドプロセスで、SetVersionNumberタスクがビルドタスクの前にあることを確認してください。 最後に、Zipタスクを使用してビルド結果を圧縮し、自動ビルドごとにバイナリの履歴を記録します。


25


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

$ Id:$

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

svn revision:$ Id:$

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

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


17


(StackOverflowがそうであるように) `ASP.Net MVC`を使っているなら、私はhttp://www.fatlemon.co.uk/2008/12/automatic-svn-revision-numbering-in-aspnet-を書きました。 mvc / [最新のSVNリビジョンを自動的に取得して表示する方法に関する3ステップガイドに従うのが簡単]。 ガイドは、このまさしくその質問について私自身に考えることによって促されました! :o)


10


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


9


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

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

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


5


@ BradWilsonの回答に追加するには、次のようにします。_ "必要に応じて、ソース管理プロバイダにソースリビジョン番号を提供させることもできます" _

SubversionとMSBuildを接続するには: MSBuildコミュニティタスクプロジェクト