我目前正在开发一个MMC管理单元,但遇到了一个很大的障碍--它是使用.Net 4.0框架完成的;而MMC正在加载以前版本的运行时。
使用旧版本的运行时并不是一个真正的选择,因为整个项目都是为4.0 (到目前为止是5000 LOC)编写的;这只是一个管理前端(想象一下:P)。
我检查了MMC注册表项,它的版本是v4.0.20506。我找不到任何其他的MMC .Net互操作配置。
有什么想法吗?
发布于 2009-07-22 06:00:21
进一步了解这个问题后,我可以确认主机进程必须通过.NET 4.0中的some new APIs显式支持多个运行时。
我怀疑MMC (甚至在Windows7中)是否支持这些API,因为.NET 4.0也处于测试阶段。在不太可能的情况下,您可以通过在配置中使用supportedRuntime元素强制它使用它:
<configuration>
<startup>
<supportedRuntime version="v4.0.20506"/>
</startup>
</configuration>然而,如果做不到这一点,恐怕你就不走运了。那么您唯一的选择就是将您的项目更改为目标.NET 2.0。
或者,您可以编写一个非托管MMC管理单元来承载它自己的运行库并加载您的托管运行库。你有多需要这些.NET 4.0的特性?
发布于 2012-05-25 04:29:49
...or您可以使用以下环境变量强制MMC使用v4.0:
set COMPLUS_Version=v4.0.30319发布于 2012-10-29 01:29:27
微软已经发布了这篇关于MMC和CLR版本http://msdn.microsoft.com/en-us/library/windows/desktop/gg983006(v=vs.85).aspx的文章,基本上,您可以创建一个神奇的环境变量,将CLR启动引导到特定于您的MMC管理单元的配置文件。
就我个人而言,我认为如果他们只是简单地将MMC.EXE改为使用CLR4,那么每个人的生活都会变得更容易,但出于某种原因,他们决定不这么做。
https://stackoverflow.com/questions/1118754
复制相似问题