Используйте макросы Visual Studio в сценариях powershell, вызываемых из события сборки

Я хочу использовать скрипт powershell в событии сборки в Visual Studio, и мне нужно использовать некоторый макрос, определенный в самой Visual Studio.

Это мой пример сценария powershell:

"Updating version for Project:"
"$ProjectDir"

Затем в предварительном событии проекта я называю это так:

powershell.exe -file "$(SolutionDir)Resources\UpdateVersion.ps1" -path $(SolutionDir)

Когда я строю проект, я правильно вызываю скрипт, но строка, содержащая путь к проекту, пуста.

Есть ли способ передать все макросы visual studio в скрипт powershell, не передавая их явно в качестве аргументов скрипта (я должен использовать их много, и это будет утомительно)?

1 ответ

Поздний ответ, но я надеюсь, что это поможет кому-то.

В событии Pre-Build вы передаете $(SolutionDir) с использованием аргумента «-path», но в сценарии PowerShell вы никогда не используете аргумент «-path». Похоже, вы пытались сослаться на него как "$ProjectDir".

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

Измените свой сценарий PowerShell следующим образом:

      param($solution, $project)
Write-Host $solution
Write-Host $project

Затем измените событие сборки на:

      powershell.exe -file "$(SolutionDir)Resources\UpdateVersion.ps1" $(SolutionDir) $(ProjectDir)
Другие вопросы по тегам