2014-07-04 87 views
0

我最近從TFS 2012升級到TFS 2013,並試圖使用新模板(TfvcTemplate.12.xaml)。我需要將我的.NET應用程序和WiX安裝程序的版本號設置爲此過程的一部分。 在我的TFS 2012過程中,我使用定製TFS社區創建擴展做以下構建模板:TFS 2013 - 從預生成的PowerShell腳本更新MSBuild參數

  1. 生成一個版本號。主版本號和次版本號是靜態的,版本號是自2014-11-25以來的天數,版本號是構建定義今天運行的次數。

  2. 更新新版本號

  3. 更新MsBuildArguments參數所有的AssemblyInfo.cs文件傳遞的版本作爲參數。這樣我就可以在我的WiX安裝程序中設置版本號。

在我重新定製構建模板之前,我想嘗試使用預構建的PowerShell腳本來實現上述目的。

項目1和2在PowerShell中很容易,但我堅持第三個要求。預生成PowerShell腳本是否可以更新MSBuildArguments?

回答

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 
}