2017-04-01 46 views
1

我有一個項目託管在VSTS中,我正在試驗構建定義。我正在嘗試執行一個PowerShell腳本,在Project構建之前更新AssemblyVersion.cs。當我在本地運行腳本時,它可以正常工作,但是當它在構建過程中運行時,腳本無錯地運行,但AssemblyVersion.cs不會更新。VSTS中的Powershell腳本構建定義不更新AssemblyVersion.cs

$regex = '\[assembly: AssemblyVersion\("(.*)"\)\]' 
$assemblyInfoPath = "..\Properties\AssemblyInfo.cs" 

(Get-Content $assemblyInfoPath) | ForEach-Object { 
    if($_ -match $regex) 
    { 
     # Get current version, and update revision number 
     $version = [version]$matches[1] 
     $newVersion = "{0}.{1}.{2}.{3}" -f $version.Major, $version.Minor, $version.Build, ($version.Revision + 1) 
     '[assembly: AssemblyVersion("{0}")]' -f $newVersion 

     Write-Host "Version updated to: $newVersion" 
    } 
    else 
    { 
     $_ 
    } 
} | Set-Content $assemblyInfoPath 

生成輸出指出版本已更新,但是當我在文件查看器中查看AssemblyInfo.cs時,它顯示舊版本。

+0

你在說什麼文件查看器?來自源代碼控制的一個?那個人工製品呢?或者生成機器上的Windows資源管理器? – baywet

+0

@baywet源代碼管理文件查看器 – DeepDuck

+0

您現在是否解決了這個問題? –

回答

0

構建過程不會檢入/提交在過程結束時自動對源代碼所做的更改。你必須寫一個腳本來做到這一點。

0

您需要簽入或將更改推送到遠程存儲庫。

如果您正在使用TFVC,則有TFVC Build Tasks extension,其中包含可以檢入更改的TFVC簽入更改步驟/任務。

如果您正在使用Git,你可以將這些步驟添加/任務,推動變化:

  1. 命令行(工具:git;參數:add **\*.*;工作文件夾:$(build.sourcesdirectory))
  2. 命令行(工具:git ;參數:commit -m "update";工作文件夾:$(build.sourcesdirectory))
  3. 命令行(工具:混帳;參數:push origin HEAD:$(Build.SourceBranchName);工作文件夾:$(build.sourcesdirectory))

另一方面,您也可以構建自定義構建/發佈任務,並將其用於構建/發佈。有關自定義構建/發佈任務的更多信息,請參閱:Add a build task

注意:不建議在構建版本或發行版中籤入/推送對遠程存儲庫的更改。

相關問題