2017-04-01 47 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

注意:不建议在构建版本或发行版中签入/推送对远程存储库的更改。

相关问题