Не удается отладить PowerShell через Visual Studio - PullRequest
4 голосов
/ 05 ноября 2010

Я разрабатываю бинарный модуль PowerShell.Я настроил вкладку отладки проекта модуля, чтобы запустить консоль PowerShell и импортировать мой модуль.Если я нажимаю F5, он делает это, как ожидалось.

Проблема, с которой я столкнулся, заключается в том, что Visual Studio на самом деле не «привязан» к процессу.Окно «Модули» пустое, и ни одна из моих точек останова не была достигнута.

Если я запускаю PowerShell вручную и присоединяюсь к процессу ... BOOM! Я могу отладить.

F5ing будет лучше, чем Build + Launch + Attach снова и снова: |

Есть идеи?

РЕДАКТИРОВАТЬ:

Я нашелчто если я включу отладку неуправляемого кода, то увижу загруженные модули.Это имеет смысл, потому что PowerShell.exe неуправляемый.Теперь проблема в том, что в окне «Модули» все мои состояния символов сборки «Нет собственных символов в файле символов».Процесс "powershell.exe" является "собственным", а не "управляемым (v2.0.50727)".Похоже, что VS решает отладку в исходном, а не в управляемом режиме.Есть ли способ изменить это?

1 Ответ

6 голосов
/ 05 ноября 2010

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

Создайте файл C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe.config:

<?xml version="1.0"?>
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0.30319"/>
        <supportedRuntime version="v2.0.50727"/>
    </startup>
</configuration>

x64 машина: файл также необходимо скопировать в C: \ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0

Примечание: вы можете удалить строку<supportedRuntime version="v4.0.30319"/> во избежание загрузки .NET 4 (с другой стороны, вам действительно может понадобиться именно это, например, если PowerShell собирается работать со сборками .NET 4).

Если вы используете PowerShell в своем приложении, которое размещаетсяЗатем PowerShell создает аналогичный файл your_app.exe.config в домашнем каталоге приложения.

Насколько я помню, строка <startup useLegacyV2RuntimeActivationPolicy="true"> действительно помогает отладчику VS работать правильно.

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