2016-03-10 3 views
2

Я пишу Команду PowerShell в C# с помощью Visual Studio 2015. Отладка работает отлично, но я не могу восстановить DLL, пока не закрою окно PowerShell. Возможно, эта DLL используется и поэтому не может быть удалена (не в командной строке, ни при использовании проводника). Я попробовал remove-module. Это успешно удаляет мой Cmdlet, но я все еще не могу удалить/перезаписать его.Отладка/выгрузка PowerShell Cmdlet

Очень сложно закрыть PowerShell, перестроить DLL, а затем снова открыть новый PowerShell, cd на путь к DLL (обычно глубоко вложенный), повторно импортировать его, запустить команду для отладки и т. Д. Для каждого один сеанс отладки ...

Нет ли лучшего решения для разгрузки DLL?

+0

AFAIK, выгрузка невозможна. Я тоже столкнулся с этим. –

+0

Является ли новый профиль powershell опцией? – dfundako

+0

Возможный дубликат [Powershell Unload Module ... полностью] (http://stackoverflow.com/questions/1337961/powershell-unload-module-completely) – beavel

ответ

1

Боюсь, что вы не можете сделать это по-моему, насколько я знаю. Один из трюков - немедленно начать новый сеанс PowerShell внутри существующего сеанса перед загрузкой библиотеки DLL. Затем вы можете выйти из второго, и у вас есть новый, без загрузки DLL. Просто не забудьте начать новую «вторичную» сессию, прежде чем загружать ее снова, если вам нужно снова ее выгрузить.

+0

Я думаю, что вы правы (к сожалению). Для отладки правильная процедура также должна быть подключена в Visual Studio. Поэтому для начала сеанса отладки требуется всегда «ручная работа». – ThommyB

6

В любое время я вижу что-то вроде этого:

Это очень неудобное, чтобы закрыть PowerShell, восстановить DLL, а затем снова открыть новый PowerShell, компакт-диск с путем длл (обычно глубоко вложенный), реимпорт еще раз, запустите команду для дебюта и т. д. для каждой отдельной сессии отладки ...

Я сразу же думаю: «Я должен создать сценарий для выполнения этих задач для меня».

Есть решения. Вы можете запустить второй PowerShell (как и другой ответ). Еще одно решение - использовать скрипт для выполнения некоторых работ для вас, и, прежде всего, вы можете добавить это в свой проект VS.

Создать скрипт в вашем профиле, чтобы начать PowerShell

function Start-DebugPowerShell 
{ 
    PowerShell -NoProfile -NoExit -Command { 
     function prompt { 
      $newPrompt = "$pwd.Path [DEBUG]" 
      Write-Host -NoNewline -ForegroundColor Yellow $newPrompt 
      return '> ' 
     } 
    } 
} 
Set-Alias -Name sdp -Value Start-DebugPowerShell 

Изменить настройки отладки для вашего проекта командлета

Начало внешней программы:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

аргументы командной строки:

-NoProfile -NoExit -Command "Import-Module .\MyCoolCmdlet.dll"

отладки вашего модуля

Теперь из Visual Studio, запустите отладчик F5, и у вас есть новое окно PowerShell с вашей Cmdlet загружен, и вы можете отлаживать его, как вам нравится.

Используйте «SDP» псевдоним из любого окна PowerShell

Поскольку функция Start-DebugPowerShell в нашем профиле, и мы дали ему псевдоним sdp, вы можете использовать это, чтобы запустить второй экземпляр PowerShell в любое время Вы нуждаетесь в этом.

Смежные вопросы