最近,我们将所有项目升级到了Visual Studio 2012和.Net 4.5。我们的大多数项目都有处理产品配置的自定义MMC管理单元。现在,我了解到MMC 3.0本身并不处理.Net 4.0运行时,因为运行时是在MMC 3.0发布之后很久才发布的。

我正在寻找一种修复我们的管理单元的方法,以使MMC在加载时不会崩溃,并且我遇到了很多提到添加mmc.exe.config文件的页面。我已经尝试过了,但是无法正常工作。

我创建了一个文件作为其内容:

<configuration>
  <startup>
    <supportedRuntime version='v4.0.20506' />
    <requiredRuntime version='v4.0.20506' safemode='true' />
  </startup>
</configuration>


我在Windows \ system32和Windows \ sysWOW64目录中都将其另存为mmc.exe.config,但是此文件的存在没有区别。我的管理单元仍然崩溃,并显示相同的错误消息:

Could not load file or assembly 'xxxx, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d62dabb4275ffafc' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.


我需要怎么做才能使MMC正确加载.Net 4.0运行时程序集?

最佳答案

对我来说,它可以告诉MMC使用v4框架,我有v4.0.30319

set COMPLUS_version=v4.0.30319
start SomeConsole.msc


检查解决方法:
http://connect.microsoft.com/VisualStudio/feedback/details/474039/can-not-use-net-4-0-to-create-mmc-snapin

这是我的调试设置:

我使用的是32位版本的控制台,还必须将以下内容添加到“ c \ Windows \ SysWOW64 \ mmc.exe.config”中:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version='v4.0' />
    </startup>
</configuration>


希望对您有帮助。 GL

10-07 23:54