MMC .Net运行时版本

时间:2009-07-13 10:38:50

标签: .net clr c#-4.0 mmc

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

使用旧版本的运行时并不是一个选项,因为整个项目是为4.0编写的(到目前为止为5000 LOC);这仅仅是一个管理前端(看中:P)。

我检查了MMC注册表项,它的版本是v4.0.20506。我无法在任何地方找到任何其他MMC .Net互操作配置。

有什么想法吗?

4 个答案:

答案 0 :(得分:3)

在进一步阅读此事后,我可以确认主机进程必须通过.NET 4.0中的some new APIs显式支持多个运行时。

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

<configuration>
   <startup>
      <supportedRuntime version="v4.0.20506"/>
   </startup>
</configuration>
但是,如果不这样做,我恐怕你运气不好。您唯一的选择是将项目更改为目标.NET 2.0。

或者,您可以编写一个非托管MMC管理单元,该管理单元承载它自己的运行时并加载您的托管运行时。你需要那些.NET 4.0功能有多糟糕?

答案 1 :(得分:1)

答案 2 :(得分:1)

...或者您可以强制MMC将v4.0与以下环境变量一起使用:

set COMPLUS_Version=v4.0.30319

答案 3 :(得分:1)

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

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