我最近从TFS 2012升级到TFS 2013,并尝试使用新模板(TfvcTemplate.12.xaml)。作为此过程的一部分,我需要设置.NET应用程序和WiX安装程序的版本号。 在我的TFS 2012流程中,我使用TFS社区构建扩展来自定义构建模板,以执行以下操作:
生成版本号。主要版本号和次要版本号是静态的,版本号是自2014-11-25以来的天数,内部版本号是构建定义今天运行的次数。
使用新版本号
更新MsBuildArguments参数以将版本作为参数传递。这样我就可以在我的WiX安装程序中设置版本号。
在我再次尝试自定义构建模板之前,我想尝试使用预构建PowerShell脚本来实现上述目标。
PowerShell中的第1项和第2项很容易,但我仍然坚持第三项要求。 Pre-build PowerShell脚本是否可以更新MSBuildArguments?
答案 0 :(得分: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
}