12

ファイルのリビジョン番号のみを変更する必要がありAssemblyInfo.csます。バージョン番号は、Major.Minor.Build.Revision1.4.6.0の形式です。例:

FileUpdate現在、タスク(MSBuild Community Tasks Projectから)と次の正規表現を使用してバージョンを変更しています。

<FileUpdate Files="@(AssemblyResult)"
    Regex='(\[\s*assembly:\s*AssemblyVersion\(\s*"[^\.]+\.[^\.]+)\.([^\.]+)(\.)([^\.]+)("\)\s*\])'
    ReplacementText='[assembly: AssemblyVersion("$(AssemblyMajorNumber).$(AssemblyMinorNumber).$(AssemblyBuildNumber).$(Revision)")]' />

ここで、リビジョン番号のみを更新し、メジャー、マイナー、ビルドを変更しないでおく必要があります。それで、これを行うためのタスクはありますか?または、正規表現を使用して実行できますか?では、正規表現は何でしょうか?

4

2 に答える 2

16

これはどう:

<FileUpdate Files="Properties/AssemblyInfo.cs"
   Regex="(\d+)\.(\d+)\.(\d+)\.(\d+)"
   ReplacementText="$1.$2.$3.$(Revision)" />
于 2010-01-08T13:12:58.197 に答える
7

これを行うには、次のターゲットを使用します。

<Target Name="UpdateAssemblyInfoVersion" DependsOnTargets="GetRevision">
    <CreateItem Include="**\AssemblyInfo.vb">
          <Output TaskParameter="Include" ItemName="AssemblyFiles"/>
    </CreateItem>
<Time>
  <Output TaskParameter="Year" PropertyName="Year" />
</Time>
    <FileUpdate Files="@(AssemblyFiles)"
        Multiline="true"
        Singleline="false"
        Regex="(AssemblyVersion|AssemblyFileVersionAttribute|AssemblyFileVersion)\(&quot;([0-9]+\.[0-9]+\.[0-9]+)(\.[0-9]+)?&quot;\)"
        ReplacementText="$1(&quot;$2.$(Revision)&quot;)" />
    <FileUpdate Files="@(AssemblyFiles)"
        Multiline="true"
        Singleline="false"
        Regex="AssemblyCompany\(&quot;.*&quot;\)"
        ReplacementText="AssemblyCompany(&quot;My Company&quot;)" />
    <FileUpdate Files="@(AssemblyFiles)"
        Multiline="true"
        Singleline="false"
        Regex="AssemblyCopyright\(&quot;.*&quot;\)"
        ReplacementText="AssemblyCopyright(&quot;Copyright &#169; 2009-$(Year) My Company&quot;)" />
</Target>

これにより、AssemblyInfo ファイル (複数のプロジェクト) のいずれかのリビジョン (4 番目の番号) が置き換えられます。AssemblyVersion の AssemblyFileVersionAttribute タグと AssemblyFileVersion タグを調べ、番号に $(Revision) MSBuild プロパティを使用します (SVN からこれを取得してプロパティを設定する GetRevision という別のターゲットがあるため、これはそのターゲットに依存します)。正規表現の置換は、3 桁または 4 桁のバージョン番号を処理します (何らかの理由で、3 桁のみのバージョン番号がたくさんありました)。

また、会社情報や著作権情報を設定・上書きし、「My Company」に設定します。著作権については、怠け者で、常に現在の年を使用するように作成したため、毎年更新することを覚えておく必要はありません (たとえば、「Copyright (c) 2009-2010 My Company」と表示されます)。

このターゲットには、MSBuild コミュニティ タスク拡張機能が必要です。


ポリシーの問題として、SVN にチェックインされたものはすべて最後の番号として .0 を持ち、CI サーバーのみがビルド中にこの値を変更します。これにより、開発者が作成したビルド (顧客に提供することは決して許可されません) と CI サーバーによって作成された「公式」のビルドの違いをすぐに知ることができます。

于 2010-06-11T20:08:22.923 に答える