错误“无法将类型为“ System.RuntimeType”的对象转换为类型为“ 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自动化接口的最新示例,您可以查看以下两个项目之一: