Visual studio Visual Studio 2012是否可以使用cmdlet实现自动化?
我很好奇这是否可以通过PowerShell实现 就个人而言,我想自动化的是:将现有的本地IIS网站添加到解决方案中 我看到一个人试图用COM做这件事,但显然没有任何运气。Visual studio Visual Studio 2012是否可以使用cmdlet实现自动化?,visual-studio,powershell,visual-studio-2012,cmdlets,Visual Studio,Powershell,Visual Studio 2012,Cmdlets,我很好奇这是否可以通过PowerShell实现 就个人而言,我想自动化的是:将现有的本地IIS网站添加到解决方案中 我看到一个人试图用COM做这件事,但显然没有任何运气。 您可以使用PowerShell自动化Visual Studio 2012。包管理器控制台实际上是PowerShell主机。在PackageManager控制台中,变量$dte是用于自动化大部分VisualStudio的COM自动化对象 有关更多详细信息和一些示例,请参阅。我意识到这是一个老问题,但对于那些仍然对此感兴趣的人来说
您可以使用PowerShell自动化Visual Studio 2012。包管理器控制台实际上是PowerShell主机。在PackageManager控制台中,变量$dte是用于自动化大部分VisualStudio的COM自动化对象
有关更多详细信息和一些示例,请参阅。我意识到这是一个老问题,但对于那些仍然对此感兴趣的人来说 实际上,编写自己的cmdlet来获取DTE对象的COM绑定以在PowerShell脚本中使用时,并没有那么多代码。有关正在工作的
Get DTE…
cmdlet的源代码,请参阅关于相关问题的。一旦您拥有了DTE绑定,它的过程与您在别处可能看到的所有示例几乎相同
例子:
cmdlet的源代码可能有点过火,除非您希望像我一样从构建前/构建后步骤访问DTE。但是,这应该足以让你开始
而且,如果您真的不想深入构建自己的cmdlet,那么您可以在同一个问题上看到,它本质上是将cmdlet中的C#代码封装在PowerShell
Add Type-TypeDefinition@“…”
命令中,这样您就根本不需要GetDTECmdlet.dll
。当您提到COM时,是指EnvDTE吗?([System.Runtime.InteropServices.Marshall]::GetActiveObject(“visualstudio.dte.11.0”)
)有人在我的问题中建议project:我还没有尝试过,但看看它看起来很有希望!Csaba,我不知道:)
PS C:\> Import-Module .\GetDTECmdlet.dll;
PS C:\> $dte = Get-DTE | Select-Object -First 1;
PS C:\> $dte = Get-DTE -ProcID 8547 | Select-Object -First 1;
PS C:\> $dte = Get-DTE -FromAncestorProcs | Select-Object -First 1;
PS C:\> $dte.ExecuteCommand('Help.About');
PS C:\> [Runtime.InteropServices.Marshal]::ReleaseComObject($dte); | Out-Null;