【问题标题】:TFS 2013 - Update MSBuild Parameters from pre-build PowerShell scriptTFS 2013 - 从预构建 PowerShell 脚本更新 MSBuild 参数
【发布时间】:2014-08-25 23:07:16
【问题描述】:

我最近从 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?

【问题讨论】:

    标签: powershell wix tfsbuild wix3.8


    【解决方案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
    }
    

    【讨论】:

    • 在哪里包含这个 powershell 脚本?它是如何从汇编文件中读取版本的?
    猜你喜欢
    • 2015-12-18
    • 2018-03-06
    • 2015-12-15
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    • 2019-12-13
    • 2016-01-04
    • 1970-01-01
    相关资源
    最近更新 更多