Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio Visual Studio 2012是否可以使用cmdlet实现自动化?_Visual Studio_Powershell_Visual Studio 2012_Cmdlets - Fatal编程技术网

Visual studio Visual Studio 2012是否可以使用cmdlet实现自动化?

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实现

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

我看到一个人试图用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;