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