0

一些信息:我正在使用 .Net 4.5,并尝试扩展Visual Studio 2013.

这行代码工作正常,我得到一个对象

object vce = dte2.GetObject("Microsoft.VisualStudio.TeamFoundation.VersionControl.VersionControlExt");

类型是,根据观察窗口: Microsoft.VisualStudio.TeamFoundation.VersionControl.VersionControlExt vce 类型是 VersionControlExt

但是,当我尝试使用此语句强制转换为这种类型时

VersionControlExt vceCast = vce as Microsoft.VisualStudio.TeamFoundation.VersionControl.VersionControlExt;

我越来越空 vceCast 为空

奇怪的部分:

当我尝试在监视窗口上投射时,我收到了这个搞笑的错误消息: 类型存在于两者中 The type 'Microsoft.VisualStudio.TeamFoundation.VersionControl.VersionControlExt' exists in both 'Microsoft.VisualStudio.TeamFoundation.VersionControl.dll' and 'Microsoft.VisualStudio.TeamFoundation.VersionControl.dll'

如您所见 - 它是同一个DLL!

我试过用dynamic,然后我得到了RuntimeBinderInternalCompilerException An unexpected exception occurred while binding a dynamic operation

我正在使用的参考文献列表:

在此处输入图像描述

我的结论:

我很确定这是由于我使用了一些错误的引用而发生的。知道如何找到它们吗?


附带问题:如何遍历 COM 对象(如 DTE/DTE2)以获取有关“活动”实例及其属性的信息?

4

1 回答 1

2

对于 VS 2013,您需要参考 .NET Framework 4.x 的全局程序集缓存 (GAC) 版本 12.0.0.0 在此处输入图像描述

c:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.VisualStudio.TeamFoundation.VersionControl\v4.0_12.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.TeamFoundation.VersionControl.dll

然后演员阵容就好了。

于 2015-03-11T23:02:56.067 回答