どこでこれを見つけたのかわかりません。しかし、私はこれをインターネット上の「どこか」で見つけました。
これにより、ビルドが行われる前にすべての AssemblyInfo.cs ファイルが更新されます。
魅力のように機能します。すべての exe と dll は 1.2.3.333 として表示されます (「333」が当時の SVN リビジョンの場合) (AssemblyInfo.cs ファイルの元のバージョンは「1.2.3.0」としてリストされていました)。
$(ProjectDir) (.sln ファイルが存在する場所)
$(SVNToolPath) (svn.exe を指します)
は私のカスタム変数であり、それらの宣言/定義は以下では定義されていません。
http://msbuildtasks.tigris.org/
および/または
https://github.com/loresoft/msbuildtasks
には ( FileUpdate および SvnVersion ) タスクがあります。
<Target Name="SubVersionBeforeBuildVersionTagItUp">
<ItemGroup>
<AssemblyInfoFiles Include="$(ProjectDir)\**\*AssemblyInfo.cs" />
</ItemGroup>
<SvnVersion LocalPath="$(MSBuildProjectDirectory)" ToolPath="$(SVNToolPath)">
<Output TaskParameter="Revision" PropertyName="MySubVersionRevision" />
</SvnVersion>
<FileUpdate Files="@(AssemblyInfoFiles)"
Regex="(\d+)\.(\d+)\.(\d+)\.(\d+)"
ReplacementText="$1.$2.$3.$(MySubVersionRevision)" />
</Target>
編集 - - - - - - - - - - - - - - - - - - - - - - - - - -
上記は、SVN リビジョン番号が 65534 以上に達すると失敗し始める可能性があります。
見る:
警告 CS1607 をオフにする
これが回避策です。
<FileUpdate Files="@(AssemblyInfoFiles)"
Regex="AssemblyFileVersion\("(\d+)\.(\d+)\.(\d+)\.(\d+)"
ReplacementText="AssemblyFileVersion("$1.$2.$3.$(SubVersionRevision)" />
この結果は次のようになります。
Windows/エクスプローラー//ファイル/プロパティで……。
アセンブリ バージョンは 1.0.0.0 になります。
333 が SVN リビジョンの場合、ファイル バージョンは 1.0.0.333 になります。