错误“无法将类型 'System.RuntimeType' 的对象转换为类型 'EnvDTE80.DTE2'

Error 'Unable to cast object of type 'System.RuntimeType' to type 'EnvDTE80.DTE2'

我正在尝试模仿 what is done here。我添加了所有必需的参考,并使用与示例中相同版本的 VS (2017),以及相同的代码行。尝试 运行 以下代码行时:

EnvDTE80.DTE2 dte = System.Type.GetTypeFromProgID("VisualStudio.DTE.15.0");

出现错误,“无法将类型 'System.Type' 隐式转换为 'EnvDTE80.DTE2'。

好的,那我试试这个,

EnvDTE80.DTE2 dte = (EnvDTE80.DTE2)System.Type.GetTypeFromProgID("VisualStudio.DTE.15.0");

然后运行宁代码时出现这个错误,“无法将类型'System.RuntimeType'的对象转换为类型'EnvDTE80.DTE2'

有人可以帮忙吗?我的猜测是它非常简单,因为我是 C# 的新手。

非常感谢!

您链接到此处的网页的作者:-P

这样做:

Type type = System.Type.GetTypeFromProgID("VisualStudio.DTE.15.0");
EnvDTE80.DTE2 dte = (EnvDTE80.DTE2)System.Activator.CreateInstance(type);

有关如何使用 DTE 和 TwinCAT 自动化接口的更多最新示例,您可以查看以下两个项目之一: