Visual Studio 2012上的Env.DTE使用有时会抛出MK_E_UNAVAILABLE

时间:2013-03-13 12:31:18

标签: visual-studio exception marshalling envdte

我正在使用Visual Studio 2012

我在项目中有一个T4模板,用于从现有代码生成代码。 为此,我使用Visual Studio Env.DTE-API。 与描述相同的错误将在简单的控制台应用程序中抛出,因此它在我的项目中不会成为问题。

几个星期以来,一切运行良好。

今天我遇到的只有一个例外。同样的项目在同事机器上运行,就像魅力一样,没有例外。

这导致我假设我的Visual Studio或我的机器一般会引发这个异常,而不是项目本身。

例外内容如下(我将其剪掉了一点):

错误7运行转换:System.Runtime.InteropServices.COMException(0x800401E3):Vorgangnichtverfügbar。 (HRESULT异常:0x800401E3(MK_E_UNAVAILABLE))    在System.Runtime.InteropServices.Marshal.GetActiveObject(Guid& rclsid,IntPtr reserved,Object& ppunk)    在System.Runtime.InteropServices.Marshal.GetActiveObject(String progID)

将抛出异常的代码如下:

DTE dte =(DTE)Marshal.GetActiveObject(“VisualStudio.DTE”);

我的问题是: 我使用的代码通常有什么错误或关键吗? 而且,也许有人知道Visual Studio或运行它的机器会出现什么问题。

我已经运行了可以在(Marshal.GetActiveObject() throws MK_E_UNAVAILABLE exception in C#)上找到的代码示例,我的Visual Studio实例可见并且在ROT中。

最好的问候

1 个答案:

答案 0 :(得分:3)

据观察,如果以提升权限运行的进程尝试获取没有提升权限的进程的接口,则会始终出现此错误,反之亦然。