1

現在、Windows 8 Metro アプリケーションを開発しており、ステージング ブランチへのチェックインごとに新しい ARM および x86 アプリ パッケージを作成するように正しくセットアップしています。

ただし、問題は、パッケージ作成プロセスが 1.0.0.0 のバージョンを与え続けることです。これにより、アプリケーションが既にインストールされているタブレットやコンピューターにパッケージをインストールできなくなります。これは、同じバージョンでインストールされているが実際のアプリケーションが異なるためです。

を に設定しようとしAssemblyVersionまし1.0.*たが、アセンブリ バージョンとパッケージ バージョンが完全に異なるため (これは最悪です)、TFS チーム ビルドをビルド時にパッケージ バージョンを自動的に設定して、新しいビルドを Windows 8 システムにインストールできるようにするにはどうすればよいでしょうか?

4

1 に答える 1

1

私は Win 8 アプリに詳しくありませんが、アセンブリ バージョンの設定は、通常の .Net と同じはずです。ビルドで毎回バージョンを設定しますが、リビジョンはビルドに使用される実際の変更セットと同じです。そうすれば、誰かがプロジェクト コレクションに何かをチェックインすると、自動的に増加します。最初のステップは、チェンジセット番号を取得し、他のバージョンを設定することです:

<PropertyGroup>
 <incMajorVersion>6</incMajorVersion>
 <incMinorVersion>1</incMinorVersion>
 <incBuildNumber>3</incBuildNumber>
 <incRevision>$(SourceGetVersion.Replace("C",""))</incRevision>
</PropertyGroup>

次のステップは、アセンブリ ファイルを見つけて、バージョンを指定されたものに変更することです。これを行うには、MSBuild タスクが Extensionpack ( http://www.msbuildextensionpack.com/help/4.0.5.0/Index.html ) から使用されます。ここで、タスク ファイルをインポートし、アセンブリ ファイルを見つけて変更する必要があります。これは、何かが起こる前に行う必要があるため、AfterGet ターゲットをオーバーライドします。

<Import Project="C:\Program Files (x86)\MSBuild\ExtensionPack\4.0\MSBuild.ExtensionPack.tasks"/>

<Target Name="AfterGet" DependsOnTargets="$(AfterGetDependsOn)">
 <ItemGroup>
  <AssemblyInfoFiles Include="$(BuildDirectory)\**\AssemblyInfo.cs"/>
 </ItemGroup>

 <MSBuild.ExtensionPack.Framework.AssemblyInfo
  AssemblyInfoFiles="@(AssemblyInfoFiles)"
  AssemblyMajorVersion="$(incMajorVersion)"
  AssemblyMinorVersion="$(incMinorVersion)"
  AssemblyBuildNumber="$(incBuildNumber)"
  AssemblyRevision="$(incRevision)"
  AssemblyFileMajorVersion="$(incMajorVersion)"
  AssemblyFileMinorVersion="$(incMinorVersion)"
  AssemblyFileBuildNumber="$(incBuildNumber)"
  AssemblyFileRevision="$(incRevision)" />
</Target>

出力ファイルには、定義したバージョン番号が含まれているはずです。

于 2013-07-03T10:31:05.197 に答える