如何获得当前正在运行的Visual Studio实例的实例?我需要在Visual Studio之外访问Visual Studio对象模型(DTE)。
我想从powershell ise运行一个nuget安装脚本-以便能够更好地理解脚本正在做什么以及为什么它没有做我期望的
所以我想输入安装的所有参数。Ps1接收
param(
[Parameter(Mandatory=$true)] [string] $installPath,
[Parameter(Mandatory=$true)] [string] $toolsPath,
[Parameter(Mandatory=$true)] $package,
[Parameter(Mandatory=$true)] $project
)
设置字符串参数很容易,但是
project和package是比较棘手的
我可以访问nuget cmdlet。我遵循这篇文章来实现这个目标。
所以我导入-module packagmanagement . cmdlets .dll
一切正常
现在当我尝试输入
$project = Get-Project -name SmartCom.Registration.Logic
我得到这个消息"必须打开一个项目来运行这个命令。"所以我想我首先需要通过DTE连接到vs,打开一个解决方案,然后加载一个项目,以便这个工作?
我知道有像PowerConsole这样的东西可以自动连接vs,但在这种情况下,我想让它在vs之外工作,这样我就可以用powershell isa
来调试它。任何想法?
假设Visual Studio正在运行(并且只有一个实例),那么您可以这样做:
PS> $dte = [runtime.interopservices.marshal]::GetActiveObject("visualstudio.dte")
PS> $dte
Name : Microsoft Visual Studio
...
您链接到的帖子使用SharpDevelop允许在Visual Studio之外使用NuGet PowerShell cmdlet。它不依赖于Visual Studio,所以我不相信打开一个Visual Studio实例会对你有帮助。
由于当前没有打开的解决方案而显示错误。要打开一个解决方案,可以使用set-project cmdlet:
set-project MyProject d:ProjectsMyProjectMySolution.sln
那么您应该能够调用get-project cmdlet