0

我目前正在开发一个 MMC 管理单元,但遇到了一个很大的障碍——它是使用 .Net 4.0 框架完成的;并且 MMC 正在加载以前版本的运行时。

使用旧版本的运行时并不是一个真正的选择,因为整个项目都是为 4.0 编写的(到目前为止 5000 LOC);这只是一个管理前端(幻想:P)。

我检查了 MMC 注册表项,那里有 v4.0.20506 版本。我在任何地方都找不到任何其他 MMC .Net 互操作配置。

有任何想法吗?

4

3 回答 3

3

在进一步阅读了这个问题之后,我可以确认主机进程必须通过.NET 4.0 中的一些新 API显式支持多个运行时。

我怀疑 MMC(即使在 Windows 7 中)是否支持这些 API,因为 .NET 4.0 也处于测试阶段。在不太可能的情况下,您可以通过在配置中使用 supportedRuntime 元素来强制它使用它:

<configuration>
   <startup>
      <supportedRuntime version="v4.0.20506"/>
   </startup>
</configuration>

但是,如果做不到这一点,恐怕你就不走运了。您唯一的选择就是将您的项目更改为面向 .NET 2.0。

或者,您可以编写一个托管它自己的运行时并加载您的托管运行时的非托管 MMC 管理单元。您对这些 .NET 4.0 功能的需求有多严重?

于 2009-07-22T06:00:21.437 回答
1

...或者您可以强制 MMC 使用具有以下环境变量的 v4.0:

set COMPLUS_Version=v4.0.30319
于 2012-05-24T20:29:49.150 回答
1

微软已经发布了这篇关于 MMC 和 CLR 版本的文章http://msdn.microsoft.com/en-us/library/windows/desktop/gg983006(v=vs.85).aspx 基本上,你创建了一个神奇的环境变量,将 CLR 启动定向到特定于 MMC 管理单元的配置文件。

就个人而言,我认为如果他们只是将 MMC.EXE 更改为使用 CLR 4,这会使每个人的生活更轻松,但出于某种原因,他们决定不朝那个方向发展。

于 2012-10-28T17:29:26.557 回答