Visual Studio 2012可以使用cmdlet自动化吗?

时间:2013-07-25 20:34:36

标签: visual-studio powershell visual-studio-2012 cmdlets

我很好奇是否可以使用PowerShell完成。

就个人而言,我想自动化的是:将现有的本地IIS网站添加到解决方案

我看到有人试图用COM做这件事,但显然没有任何运气。 Automating Visual Studio 2012 with Powershell, doing it wrong?

2 个答案:

答案 0 :(得分:2)

您可以使用PowerShell自动化Visual Studio 2012。程序包管理器控制台实际上是PowerShell主机。在包管理器控制台中,变量$ dte是用于自动化大多数Visual Studio的COM自动化对象。

有关详细信息和一些示例,请参阅http://www.wintellect.com/blogs/jrobbins/using-nuget-powershell-to-replace-missing-macros-in-dev-11

答案 1 :(得分:0)

我意识到这是一个老问题,但对那些仍对此感兴趣的人......

实际上,编写自己的cmdlet以获取用于PowerShell脚本的DTE对象的COM绑定所涉及的代码实际上并不多。有关工作Get-DTE ... cmdlet源代码的相关问题,请参阅my answer。一旦你拥有了DTE绑定,它就像你在别处可能看到的所有例子一样。

实施例

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;


cmdlet的源代码可能有点过分,除非您想要像我一样从前/后构建步骤访问DTE。但是,它应该足以让你开始。

而且,如果您真的想避免深入构建自己的cmdlet,那么您可以在同一个问题上看到this answer,它基本上在PowerShell Add-Type -TypeDefinition @"..."@命令中包含cmdlet中的C#代码,以便你根本不需要GetDTECmdlet.dll