如何通过MSTest在集成测试期间托管VS IDE?

我已经创建了一个集成测试项目来测试VS Extension。 如果我从Visual Studio IDE运行测试,所有测试都运行得很好,每个方法都会生成一个新的VS IDE。 测试方法标有以下属性:

[HostType("VS IDE")] [TestMethod] public void TestWhateverMethod() { ... } 

但是,如果我尝试自动化测试,并通过MSTest(或VSTest)从命令行运行它,我得到以下错误消息,对于VS IDE中托管的测试:

无法加载主机类型“VS IDE”,原因如下:找不到“VS IDE”键。 确保计算机上安装了适当的主机适配器。

因此,我试图在以下位置找到解决方案: MSDN – 如何:安装主机适配器 。 但它仅针对VS2005和2008进行了记录。

我想询问有关VS 2013的指示,我在哪里可以找到更多信息? 或者我错过了什么? 从VS IDE外部运行集成测试的正确方法是什么? 如何以编程方式托管IDE?

先感谢您!

我没有使用HostType属性,我意识到了如何做到这一点。 希望以下代码片段也可以帮助其他人:

 Type visualStudioType = Type.GetTypeFromProgID("VisualStudio.DTE.12.0", true); DTE env = Activator.CreateInstance(visualStudioType, true) as DTE; 

这将获得具有指定版本的VS的类型,并将在出错时抛出exception。 DTE将是EnvDTE的接口,可以使用。

要获取服务,请执行以下操作,例如获取UI Shell:

 ServiceProvider serviceProvider = new ServiceProvider(env as Microsoft.VisualStudio.OLE.Interop.IServiceProvider); IVsUIShell uiShell = (IVsUIShell)serviceProvider.GetService(typeof(SVsUIShell)); 

应该跟踪服务,获取rcw句柄并在使用之后正确释放COM对象。