ADO管道变量使用已安装的nuget版本作为变量

时间:2020-04-22 16:22:10

标签: azure-devops azure-pipelines

我正在尝试配置Azure DevOps管道,并且我有一个yaml文件,其步骤如下:

steps:
- task: NuGetCommand@2
  displayName: 'Install'
  inputs:
    command: custom
    arguments: install PKGNAME -source PKGSOURCE -outputDirectory F:\CSsyn
- task: CmdLine@2
  inputs:
    script: 'F:\CSsyn\PKGNAME.16.0.12817.30000\lib\net45\Runner.exe Run --arg1 test1 --arg2 test2

它只是安装nuget软件包,然后从该软件包运行可执行文件。唯一的问题是我的CmdLine任务中的命令取决于所安装软件包的特定版本。由于我正在安装最新的nuget软件包,其中版本发生了变化,因此我想获取它,以便CmdLine任务的路径基于已安装软件包的版本变量。像这样:

script: 'F:\CSsyn\PKGNAME.$(PKGVERSION)\lib\net45\Runner.exe Run --arg1 test1 --arg2 test2

我做了一些挖掘,发现some tasks can reference output variables of other tasks,但是NuGet task似乎没有任何输出变量(至少从我的观察中可以看出)。有什么想法可以代替$(PKGVERSION)吗?

1 个答案:

答案 0 :(得分:1)

我不知道您是否可以通过NuGet任务创建变量,但是我有另一个想法,您可以使用PowerShell使用通配符获取.exe文件,然后运行它:

- powershell: |
   $file = Get-ChildItem "F:\CSsyn\*\lib\net45\Runner.exe"
   & $file Run --arg1 test1 --arg2 test2