3

我正在使用 Visual Studio 2012

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

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

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

这使我假设我的 Visual Studio 或我的机器通常会引发此异常,而不是项目本身。

例外情况如下(我删减了一点):

错误 7 运行转换:System.Runtime.InteropServices.COMException (0x800401E3): Vorgang nicht verfü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() 在 C# 中引发 MK_E_UNAVAILABLE 异常)上找到的代码示例,我的 Visual Studio 实例在 ROT 中是可见的。

最好的祝福

4

1 回答 1

3

已经观察到,如果以提升权限运行的进程尝试获取与没有提升权限运行的进程的接口,您将始终收到此错误,反之亦然。

于 2013-10-27T23:52:02.170 回答