我很好奇这是否可以使用 PowerShell 完成。
就个人而言,我想要自动化:将现有的本地 IIS 网站添加到解决方案中
我看到一个人试图使用 COM 来做到这一点,但显然没有任何运气。 使用 Powershell 自动化 Visual Studio 2012,做错了吗?
我很好奇这是否可以使用 PowerShell 完成。
就个人而言,我想要自动化:将现有的本地 IIS 网站添加到解决方案中
我看到一个人试图使用 COM 来做到这一点,但显然没有任何运气。 使用 Powershell 自动化 Visual Studio 2012,做错了吗?
您可以使用 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。
我意识到这是一个老问题,但对于那些仍然对此感兴趣的人......
实际上,编写您自己的 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
。