.net - 如何解决 SHIM_NOVERSION_FOUND 错误消息

标签 .net c++-cli .net-4.5

我正在将 C++/CLI 混合模式可执行文件从 VS 2010 更新到 VS 2012。我们的目标是 .NET 4.5 和 VS2012 工具集。

它在调试版本中构建和运行完美,但发布版本立即退出并显示“此应用程序无法启动”。以及指向 Microsoft Support page 的链接提示问题是SHIM_NOVERSION_FOUND .

有问题的页面指出“您无法自己解决配置问题。请联系应用程序供应商解决问题。”作为有问题的应用程序供应商,我很难找到有关如何更正此应用程序的任何信息。

应用程序从哪里去发现 C++ 项目中正确的 .NET 版本,以及如何将正确的信息添加到 .vcxproj 或解决方案文件中以使其正确构建?

最佳答案

我遇到了类似的问题,我必须做两件事:使用配置文件,并在目标机器上安装 Framework 4.0。 @CurtNichols 指出了那个方向,但这里是最终将它们整合在一起的链接:How to: Configure an Application to Support .NET Framework 4 or 4.5 .

下面是我结束了在app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>

实际上,从 A 点到 B 点需要很多步骤,所以这里是“故事的其余部分”:
  • 我一开始遇到“无法正确初始化”错误,我已通过在其上安装 Framework 4.0 在加载 XP 的 Virtual PC 上更正了该错误。
  • 所以我尝试在目标机器(Windows 7 机器)上安装 Framework 4.5
  • 现在我得到了 SHIM_NOVERSION_FOUND错误。
  • 我尝试安装 Framework 4.0,但当然这是多余的,因为 4.5 升级了 4.0。
  • 我尝试安装 Framework 3.5,但安装程序已初始化,然后什么也没做。糟糕,我不知道 Windows 7 中包含 3.5。
  • 所以我卸载了Framework 4.5。毫不奇怪,我又回到了“无法正确初始化”。
  • 另一个堆栈溢出帖子(我现在找不到,抱歉)建议检查 Windows 功能,以确保“Microsoft Framework 3.5.1”已完全启用。在目标计算机上,未选中“Windows Communication Foundation”子选项。所以我检查了它们......并得到了相同的结果。
  • 我安装了 Framework 4.0(我现在可以这样做,因为我卸载了 4.5)。可以肯定的是,我重新启动了。仍然有类似“无法找到运行时的版本”之类的信息。
  • 现在,我终于放弃并添加了 MSDN 条目中引用的 app.config 设置。但首先,我是这样尝试的,应该说我可以使用 3.5 或 4.0:
    <supportedRuntime version="v2.0.50727"/> 
    <supportedRuntime version="v4.0"/>
    
  • 那是个错误……可能是因为我最初是在 4.0 环境中编译的。我收到了“已停止工作”之类的错误。
  • 所以我摆脱了 3.5 规范(又名 2.0.5xxx,因为微软),它的工作方式就好像我应该首先做的那样。 (大概是这样。)

  • 希望过程的细节对某人有所帮助!

    关于.net - 如何解决 SHIM_NOVERSION_FOUND 错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15749255/

    相关文章:

    c++-cli - 为什么 Finalize 应该受到保护?

    asp.net-mvc - 程序 '[4432] iisexpress.exe' 已退出,代码为 -2147023895 (0x800703e9)

    .net - 如何解决 “Cross-thread operation not valid”问题?

    c# - 如何改进短字符串的散列以避免冲突?

    c# - 更改图表中的图例文本?

    visual-studio-2012 - InterlockedIncrement64 与托管 C++

    database - 混合 C++/CLI 代码与 Berkeley DB

    c# - CRM 插件 : Custom Exception in Sandbox

    c# - 更改了 .NET 4.5 中 string.Empty(或 System.String::Empty)的行为

    .net - 检查 log4net XmlConfigurator 是否成功