Как добавить файловую зависимость в VisualStudioRemoteDeployer в удаленном сеансе PowerShell, запущенном из задачи развертывания TFS

Я использую задачу развертывания TFS "PowerShell на удаленных машинах". Он запускает сценарий PowerShell, который я ранее скопировал на целевой компьютер. Сценарий PowerShell вызывает командлет, который зависит от.exe. Я получаю следующую ошибку при выполнении скрипта:

System.IO.FileNotFoundException: C:\Windows\DtlDownloads\VisualStudioRemoteDeployer3be2a227-e8d4-4e1f-b155-d1a53666793b\NeuronExplorer.exe

Я не могу понять, как на самом деле получить NeuronExplorer.exe в этот временный каталог, чтобы быть доступным для выполнения.

Я попытался GACing это. Это GAC успешно, но я получаю ту же ошибку.

Я попытался добавить путь к переменной среды PATH, что также привело к той же ошибке.

Я был успешным, если я скопировал NeuronExplorer.exe в временную папку, но мне нужно было быть очень быстрым, чтобы заставить его работать. НЕОБХОДИМО, чтобы этот файл был доступен в удаленном контексте.

2 ответа

Решение

В итоге я решил скопировать .exe в мой System.AppDomain.CurrentDomain.BaseDirectory до вызова любого кода API, который зависит от .exe,

let fileName = (FileInfo pathToExe).Name
let targetFile = sprintf "%s\\%s" System.AppDomain.CurrentDomain.BaseDirectory fileName
File.Copy(pathToExe, targetFile, true)

Я мог бы сделать то же самое, используя System.AppDomain.CurrentDirectory.Load(assemblyBytes), но File.Copy работает для меня.

Надеюсь, это поможет кому-то еще не бороться с этим конкретным вопросом.

Самый простой обходной путь - вызвать исполняемый файл по полному явному пути.

Кроме того, вы не указали, изменили ли вы переменную среды PATH на уровне компьютера, но если вы это сделали, вам, скорее всего, потребуется перезапустить агент на этом компьютере, чтобы изменения отразились в процессе агента.

Другие вопросы по тегам