AssemblyInfo.csサブバージョンとTortoiseSVN
-
06-07-2019 - |
質問
TortoiseSVNとVisual Studio 2008を使用しています。 すべてのビルドでプロジェクトのassemblyinfo.csをsvnのバージョンで更新する方法はありますか?
たとえば、1.0.0。[svn's version]-> 1.0.0.12
解決
TortoiseSVNに付属の SubWCRev ツールを使用することもできます(また、個別に利用可能)。
コマンドラインから実行するか、 COM-それが提供するオブジェクト。
SubWCRevコマンドラインツールキーワードを置換あなたのsvn作業コピーからの情報を使って。 例がドキュメントに示されています。
他のヒント
<SvnInfo LocalPath=".">
<Output TaskParameter="Revision" PropertyName="BuildRev" />
</SvnInfo>
<FileUpdate Files="protobuf-net\Properties\AssemblyInfo.cs"
Regex='(\[\s*assembly:\s*AssemblyVersion\(\s*"[^\.]+\.[^\.]+)\.([^\.]+)(\.)([^\.]+)("\)\s*\])'
ReplacementText='$1.$2.$(BuildRev)$5' />
コミュニティビルドタスクを使用します。これは、基本的に、AssemblyInfo.csに正規表現を適用し、現在のリビジョンをsvnリビジョンに置き換えます。
$ Rev $
svnを使用できます。キーワードがファイルの最終リビジョンを提供しますが、 HEAD
リビジョン番号を取得したいと思います。
この質問を見てください:
Visual Studioのアドインについてどう思いますか
はい、スクリプトを呼び出すビルド前イベントを追加できます
-
svn info
を呼び出して現在のリビジョン番号を抽出します(以前に更新を行った場合は、ファイルにキーワード$ Revision $
を直接含めることができます。また、< a href = "https://stackoverflow.com/questions/1620598/how-to-get-the-current-revision-number-into-a-file-after-export/1620624#1620624">この投稿); - それに応じてProperties \ AssemblyInfo.csファイルを変更します。
私が通常していることは、プロジェクトのビルド時にAssemblyInfo.csテンプレートを変換することです。残念ながら、このファイルの構文に$ Revision $の形式を適合させるには、スクリプトが必要です。
興味深いプロパティは次のとおりです(テンプレート文字列は「$」の間にあります):
[assembly: AssemblyVersion("$v$.$build$.$Last Changed Rev<*>quot;)]
[assembly: AssemblyFileVersion("$v$.$build$.$Last Changed Rev<*>quot;)]
編集: svn info
は標準SVNクライアントの一部であり、別の投稿で指摘されているTortoiseSVNではありません。でも簡単にインストールできます。ただし、TortoiseSVNには、キーワード置換を使用してファイルを変換する SubWCRev.exe
が付属しているため、ローカルコピーを更新すると、トリックが実行されます。
Visual Studio 2008では、スクリプトまたは小さなプログラムを起動できるビルド前イベントを定義できます。このスクリプトまたはプログラム内で、 svnversion コマンドを使用してリポジトリリビジョンを取得し、AssemblyInfo.csを解析して、バージョン番号を必要なものに変更できます。
TortoiseSVNにsvnversionが付属するかどうかはわかりませんが、 Windowsには付属していますCollabNetが提供するSVNビルド