3

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

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

我看到一个人试图使用 COM 来做到这一点,但显然没有任何运气。 使用 Powershell 自动化 Visual Studio 2012,做错了吗?

4

2 回答 2

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

于 2013-09-24T21:17:55.317 回答
0

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

实际上,编写您自己的 cmdlet 以获取 DTE 对象的 COM 绑定以在 PowerShell 脚本中使用实际上并不需要太多代码。有关工作cmdlet的源代码,请参阅我对相关问题的回答。Get-DTE ...一旦有了 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,您可以在同一个问题上看到此答案,该问题基本上将 cmdlet 中的 C# 代码包装在 PowerShellAdd-Type -TypeDefinition @"..."@命令中,因此您根本不需要GetDTECmdlet.dll

于 2016-09-21T23:54:10.143 回答