Visual Studio предварительно собирает сценарий PowerShell, который завершается с кодом 9009 и не может быть собран - PullRequest
0 голосов
/ 26 сентября 2019

В моем проекте я установил событие перед сборкой, которое обновляет содержимое файлов * .cs и * .xaml (которые включены в создаваемый проект).

Я использую Set-Content команду Powershell для него.

Когда я тестирую его в консоли Powershell, все работает отлично.

Но когда я вставляю как событие перед сборкой, это генерирует ошибку с кодом 9009 и мешает VS успешно построить мой проект.

Я установил выходную подробность сборки на Diagnostic, но больше информации об этом нет.

В чем может быть проблема?

В настоящее время я предполагаю, что VS блокируетсяфайлы для сборки, поэтому команды Powershell не могут их изменить.

1 Ответ

2 голосов
/ 27 сентября 2019

Я использую для этого команду Set-Content Powershell.В чем может быть проблема?

Причина проблемы:

1.VS вызовет что-то вроде cmd.exe для выполнения введенной вами командыBuild Events.

Это означает, что вы пытаетесь запустить команду Set-content в cmd.exe.

2. Как boxdog сказал, code9009 в VS указывают the command is not recognized.

Более конкретно, Set-content - это команда PowerShell, а не команда, распознаваемая cmd.exe. (См. # 1, VS вызывает cmd.exe для запуска команды).

Итак, проблема возникает: Type a PowerShell command in build events => VS calls cmd.exe to execute it => cmd.exe can't recognize a PS command. and throw error=> VS output log displays error code9009.

Предложения:

Вы не можете напрямую введите Set-content inстроить события для запуска (оборудование для запуска Set-content непосредственно в CMD, и это вызовет ошибку).

Вместо этого мы можем вызвать powershell для запуска сценария PS или команды PS в cmd.exe, вы можете найти много связанных с этим тем о том, как запустить сценарий PS из CMD онлайн.См. Запуск команды PS в cmd , Запуск PS из CMD , Как запустить PS в CMD .Но это больше похоже на другую проблему, поэтому я не буду здесь много говорить:)

В итоге: вы можете создать новый сценарий PS и перенести в него команду Set-content, а затем ввести команду, например:powershell -file path\xx.ps1 или просто powershell - command в событиях сборки.Тогда Error9009 уйдет.(Я полагаю, что Error9009 исчезнет, ​​но я видел слишком много проблем с другими кодами ошибок, большинство из которых связаны с проблемами пути, поэтому позаботьтесь о пути, определенном в вашем сценарии.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...