【问题标题】:MMC SnapIn and .Net 4.xMMC 管理单元和 .Net 4.x
【发布时间】:2013-01-15 23:35:06
【问题描述】:

我们最近将所有项目都升级到了 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 运行时程序集?

【问题讨论】:

  • 您使用的是什么版本的 Visual Studio? 2010年对我来说有这个问题。 2013 年修复了它。

标签: c# .net-4.0 mmc


【解决方案1】:

对我来说,告诉 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>

希望对您有所帮助。总帐

【讨论】:

  • 帮助我通过 cmd.exe 设置 COM+ 版本(上面的命令),然后启动 MMC,然后附加调试器,但是很痛苦,因为你不能很好地自动化这个过程......但是至少它奏效了。似乎只发生在 Windows 8.1 中,并且在 Visual Studio 2010 中看到了这个问题。当我尝试在 Visual Studio 2013 中运行我的 MMC 管理单元时,它似乎可以正常工作。谢谢安德烈斯!信息量很大。
  • 检查我的调试属性,调试器非常适合我
【解决方案2】:

看看这个页面上的 cmets (http://msdn.microsoft.com/en-us/library/ms692759%28VS.85%29.aspx)。看起来托管 MMC 管理单元最多可以针对框架 3.5。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多