0

我最近从 TFS 2012 升级到 TFS 2013 并尝试使用新模板 (TfvcTemplate.12.xaml)。作为此过程的一部分,我需要设置我的 .NET 应用程序和 WiX 安装程序的版本号。在我的 TFS 2012 过程中,我使用 TFS Community Build Extensions 自定义了构建模板以执行以下操作:

  1. 生成版本号。主要和次要版本号是静态的,发布号是自 2014-11-25 以来的天数,内部版本号是构建定义今天运行的次数。

  2. 使用新版本号更新所有 AssemblyInfo.cs 文件

  3. 更新 MsBuildArguments 参数以将版本作为参数传递。这样我就可以在我的 WiX 安装程序中设置版本号。

在我再次求助于自定义构建模板之前,我想尝试使用 Pre-build PowerShell 脚本来实现上述目标。

第 1 项和第 2 项在 PowerShell 中很容易,但我坚持第三个要求。Pre-build PowerShell 脚本是否可以更新 MSBuildArguments?

4

1 回答 1

1

我认为有一种更简单的方法可以做到这一点。这就是我们所做的。

创建了一个名为 Version.wsi 的包含文件。该文件包含以下 4 行:

<?xml version="1.0" encoding="utf-8"?>
<Include>
  <?define CurrVersion="1.0.0.0" ?>
</Include>

在我们的 wxs 文件中,就在该行之后

<Wix xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" xmlns="http://schemas.microsoft.com/wix/2006/wi" >

添加以下内容:

  <?include Version.wxi ?>

在您的 wxs 文件中,使用您当前指定版本的变量$(var.CurrVersion) 。

现在,您需要在 powershell 脚本中包含一些代码,以使用正确的版本号修改 wxi 文件。我就是这样做的:

function UpdateVersion($newVersion)
{
    $wxiFile = gci "$Somedir\Version.wxi"
    #clear the read-only bit just in case
    Set-ItemProperty $wxiFile -name IsReadOnly -value $false -Force

    $newContent = $content -replace "1.0.0", $prodVersion
    Set-Content -Path $wxiFile -Value $newContent
}
于 2014-07-05T21:57:47.303 回答