2016-11-29 12 views
0

Я использую System.Management.Automation.PowerShell, чтобы программно выполнить сценарий PowerShell из приложения C#. Скрипт PowerShell загружает DLL .Net, который он использует для выполнения своих действий.Отладка - шаг в скрипт PowerShell, выполняемый с помощью API

var script = "Add-Type -Path 'MyLibrary.dll'; ...."; 

using (var powershell = PowerShell.Create()) { 
    powershell.AddScript(script); 

    powershell.Invoke(); 
} 

Можно ли каким-то образом подключить отладчик Visual Studio для экземпляра объекта PowerShell, так что отладчик может легко выйти из C# приложения в сценарий PowerShell и из этого сценария в MyLibrary.dll (предполагая, что у меня есть символы для dll)?

Редактировать: На основании ниже показано, что не может быть способа беспрепятственного потока отладки в Visual Studio от C# до PowerShell. Тем не менее, можно использовать VS для отладки кода C#, который запускается и запускается PowerShell.

+1

вы имеете в виду, что вы хотите использовать API Windows PowerShell Отладчик, как этот образец? https://code.msdn.microsoft.com/windowsapps/Windows-PowerShell-f5c03f2d. Чтобы отладить файл dll, вы могли бы подумать об использовании настраиваемого вспомогательного класса: http://stackoverflow.com/questions/8062407/debug-c-sharp-dll-when-loaded-into-powershells-process-is-it- даже возможно –

+0

@ JackZhai-MSFT, спасибо за полезные ссылки! Использование 'System.Diagnostics.Debugger.Launch();' (упомянутое во второй ссылке) позволило мне отлаживать код .Net, вызываемый PowerShell в Visual Studio. Я надеялся, что есть способ сделать то же самое с самим скриптом PowerShell, но хорошо. :-) –

+0

@ JackZhai-MSFT, не могли бы вы отменить свой комментарий (по крайней мере, часть, относящуюся к 'System.Diagnostics.Debugger.Launch();'), в ответ, чтобы я мог ее принять. :-) –

ответ

1

Вы можете отладить файл DLL, вызвав его в вашем вспомогательном классе:

System.Diagnostics.Debugger.Launch();