【问题标题】:Change drop folder of Visual Studio Team Services / Visual Studio Online Build to Assembly Version将 Visual Studio Team Services / Visual Studio Online Build 的放置文件夹更改为 Assembly Version
【发布时间】:2016-04-26 09:14:23
【问题描述】:

我希望我的 Visual Studio Team Services Build 使用我的可执行文件的程序集版本。有什么简单的方法可以实现吗?

我知道可以将参数传递到构建过程中,但是如何一步定义参数并在以后使用呢?

【问题讨论】:

    标签: build msbuild azure-devops


    【解决方案1】:

    不确定我是否正确理解了您的问题。您可以通过调用 task.servariable Logging Command 将变量从构建任务传回 VSTS:

    ##vso[task.setvariable variable=testvar;]testvalue
    

    因此您可以编写一个 PowerShell 脚本来获取程序集版本并将其传递回 VSTS。

    【讨论】:

      【解决方案2】:

      首先,将内部版本号格式设置为您想要的格式。我使用:$(BuildDefinitionName)_1.0.0$(Rev:.r)。 然后,在构建解决方案之前在 PowerShell 脚本构建步骤中调用它:

      Param(
        [string]$pathToSearch = $env:BUILD_SOURCESDIRECTORY,
        [string]$buildNumber = $env:BUILD_BUILDNUMBER,
        [string]$searchFilter = "AssemblyInfo.*",
        [regex]$pattern = "\d+\.\d+\.\d+\.\d+",
        [regex]$pattern2 = "AssemblyProduct(\()("".*?"")",
        [regex]$pattern3 = "AssemblyCopyright(\()("".*?"")",
        [Parameter(Mandatory=$true)]
        [string]$assemblyProduct,
        [Parameter(Mandatory=$true)]
        [string]$Copyright
      )
      # Pattern: "AssemblyProduct(\()("".*?"")"
      # Replace: "AssemblyProduct(""$assemblyProduct"""
      
      try
      {
          if ($buildNumber -match $pattern -ne $true) {
              Write-Host "Could not extract a version from [$buildNumber] using pattern [$pattern]"
              exit 1
          } else {
              $extractedBuildNumber = $Matches[0]
              Write-Host "Using version $extractedBuildNumber"
      
              gci -Path $pathToSearch -Filter $searchFilter -Recurse | %{
                  Write-Host "  -> Changing $($_.FullName)"
      
                  # remove the read-only bit on the file
                  sp $_.FullName IsReadOnly $false
      
                  # Get the copyright string from a local file
                  #$Copyright = Get-Content TeamBuildScripts\PSScripts\Copyright.txt
      
      
                  # run the regex replace
                  (gc $_.FullName) | % { $_ -replace $pattern, $extractedBuildNumber } | sc $_.FullName
                  (gc $_.FullName) | % { $_ -replace $pattern2, "AssemblyProduct(""$assemblyProduct""" } | sc $_.FullName
                  (gc $_.FullName) | % { $_ -replace $pattern3, "AssemblyCopyright(""$Copyright""" } | sc $_.FullName
              }
      
              Write-Host "Done!"
          }
      }
      catch {
          Write-Host $_
          exit 1
      }
      

      【讨论】:

        猜你喜欢
        • 2017-03-10
        • 2016-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多