Как запустить exe с параметрами в задаче в Azure Devops?

Я хотел бы знать, есть ли у нас способ запустить исполняемый файл в Azure DevOps и передать для этого необходимые параметры. Я использую ниже задачу PowerShell, и это дает мне ошибку

**

C: \ windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command. «D: \ a_temp \ 5f91c58a-381d-4c41-9969-3038116adefa.ps1» &: термин «MyProject.exe» не распознается как имя командлета, функции, файла сценария или работающей программы. Проверьте написание имени или, если был включен путь, убедитесь, что путь правильный, и повторите попытку. В D: \ a_temp \ 5f91c58a-381d-4c41-9969-3038116adefa.ps1: 5 знаков: 3

**

Ниже представлена ​​задача, созданная в YAML.

- task: PowerShell@2
  displayName: Execute .exe file with parameters
  inputs:
    targetType: 'inline'
    script: |
      [String]$myrev = $Env:BUILD_BUILDNUMBER
      $args = @($myrev)
      & 'MyProject.exe' $args

Заранее благодарим за ответы.


Немного дополнительной информации, попытался получить доступ к пути, по которому создается сборка. Прежде чем получить доступ к пути для запуска exe, мы создаем проект и сохраняем его в каталоге сборки Azure по умолчанию. Все еще та же ошибка, но с полным путем.

- task: MSBuild@1
  inputs:
    solution: '**/*.csproj'
    clean: true

- task: PowerShell@2
  displayName: Execute .exe file with parameters
  inputs:
    targetType: 'inline'
    script: |
      [String]$myrev = $Env:BUILD_BUILDNUMBER
      $args = @($myrev)
      & '$(Build.SourcesDirectory)\MyProject\bin\Release\MyProject.exe' $args 

person Pravesh Pesswani    schedule 16.03.2021    source источник


Ответы (2)


Вы уверены, что ваше приложение доступно по текущему пути? Проверьте содержимое папки:

trigger:
- master

pool:
  vmImage: windows-2019

steps:
- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      & cmd /c dir . 
    

Обновление:

Ваше решение должно работать. Тестируемый пример:

trigger:
- master

pool:
  vmImage: windows-2019

steps:
- task: VSBuild@1
  inputs:
    solution: 'ConsoleApp\ConsoleApp.sln'
    platform: 'Any CPU'
    configuration: 'Release'
- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      [String]$myrev = $(Build.BuildNumber)      
      $args = @($myrev)
      & '$(Build.SourcesDirectory)\ConsoleApp\ConsoleApp\bin\Release\ConsoleApp.exe' $args 

Результат сборки:

введите описание изображения здесь

Проверьте свой путь здесь:

введите описание изображения здесь

person Shamrai Aleksander    schedule 16.03.2021
comment
Прежде чем получить доступ к exe, я создаю проект и получаю доступ к exe с помощью $ (Build.SourceDirectory). Ниже приведены 2 задачи: - задача: входные данные MSBuild @ 1: решение: '* / .csproj 'clean: true - task: PowerShell @ 2 displayName: Выполнить файл .exe с входными параметрами: targetType:' inline 'script: | [String] $ myrev = $ Env: BUILD_BUILDNUMBER $ args = @ ($ myrev) & '$ (Build.SourcesDirectory) \ MyProject \ bin \ Release \ MyProject.exe' $ args Нужно ли нам предоставлять доступ к этому пути в Уровень задачи? - person Pravesh Pesswani; 16.03.2021
comment
@PraveshPesswani, ваше решение должно работать. Я это тестировал. Проверьте путь на этапе сборки. - person Shamrai Aleksander; 16.03.2021
comment
@PraveshPesswani, дополнительно проверьте параметр configuration в задаче msbuild. По умолчанию он может использовать Debug. - person Shamrai Aleksander; 16.03.2021
comment
Вы правы, я не смог получить доступ к исходному каталогу, добавил шаг для копирования всех файлов в постановку, и тогда это сработало! Большое спасибо. - person Pravesh Pesswani; 17.03.2021

вы можете использовать Start-Process для выполнения файла .exe с аргументами (https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-process?view=powershell-7.1)

В вашем коде кажется, что он не может найти файл .exe. Сначала проверьте, действительно ли существует файл .exe (вы можете использовать Get-ChildItem, чтобы получить список всех файлов, находящихся в вашем текущем рабочем каталоге)

BR

person Joschi    schedule 16.03.2021
comment
Пытался следить за этим. но не работает в сценарии Yaml в DevOps Azure. У вас есть какой-нибудь пример? - person Pravesh Pesswani; 16.03.2021
comment
Пример Start-Process будет следующим: Start-Process -FilePath. \ FILENAME.exe -ArgumentList arg1 arg2 arg3 и т. Д. С Get-ChildItem я имел в виду, что вы перечисляете только свои файлы, поэтому вы можете увидеть, действительно ли ваш файл .exe существует в правильная папка. Я думаю, что указанный выше пользователь уже решил вашу проблему :) - person Joschi; 16.03.2021