Получить дескриптор работающего экземпляра Visual Studio (DTE) из powershell - PullRequest
2 голосов
/ 21 декабря 2011

Как получить экземпляр запущенного в данный момент экземпляра Visual Studio? Мне нужно получить доступ к объектной модели Visual Studio (DTE) вне Visual Studio.

Я хочу запустить скрипт установки nuget из powershell ise - чтобы лучше понять, что делает скрипт и почему он не выполняет то, что я ожидаю

Итак, я хочу указать все параметры, которые install.ps1 принимает в

param(
    [Parameter(Mandatory=$true)] [string]   $installPath,
    [Parameter(Mandatory=$true)] [string]   $toolsPath,
    [Parameter(Mandatory=$true)]            $package,
    [Parameter(Mandatory=$true)]            $project
)

Параметры строк легко установить, однако

проект и пакет хитрые

У меня есть доступ к командлетам nuget. Я подписался на этот пост, чтобы добиться этого.

Итак, я импортирую модуль PackageManagement.Cmdlets.dll

Это все отлично работает

теперь, когда я пытаюсь что-то вроде

$project = Get-Project -name SmartCom.Registration.Logic

Я получаю это сообщение "Для запуска этой команды должен быть открыт проект". поэтому я предполагаю, что сначала мне нужно подключиться к vs через DTE и открыть решение, а затем загрузить проект, чтобы это заработало?

Я знаю, что есть такие вещи, как PowerConsole, которые автоматически подключаются к vs, но в этом случае я хочу, чтобы он работал вне vs, чтобы я мог отлаживать его с powershell isa

Есть идеи?

Ответы [ 2 ]

4 голосов
/ 21 декабря 2011

Если Visual Studio запущена (и есть только один экземпляр), то вы можете сделать это:

PS> $dte = [runtime.interopservices.marshal]::GetActiveObject("visualstudio.dte")
PS> $dte

Name                   : Microsoft Visual Studio
...

Надеюсь, это поможет.

1 голос
/ 21 декабря 2011

В публикации, на которую вы ссылаетесь, используется SharpDevelop, чтобы разрешить использование командлетов NuGet PowerShell вне Visual Studio.Он не зависит от Visual Studio, поэтому я не верю, что открытие экземпляра Visual Studio поможет вам.

Отображается ошибка, поскольку в настоящее время нет открытого решения.Чтобы открыть решение, вы можете использовать командлет set-project :

    set-project MyProject d:\Projects\MyProject\MySolution.sln

Затем вы сможете вызвать командлет get-project .

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