如何解决SHIM_NOVERSION_FOUND错误消息

时间:2013-04-01 18:27:31

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

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

它在Debug版本中构建和运行完美,但Release版本立即退出,“此应用程序无法启动”。以及一个指向Microsoft Support page的链接,表明问题是SHIM_NOVERSION_FOUND

相关页面指出“您无法自行解决配置问题。请与应用程序供应商联系以解决问题。”作为有问题的应用程序供应商,我很难发现有关如何纠正此应用程序的任何信息。

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

2 个答案:

答案 0 :(得分:3)

我遇到了类似的问题,我不得不做两件事:使用配置文件,并在目标机器上安装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点需要花费很多步骤,所以这里是“故事的其余部分”:

  • 我开始收到“无法正确初始化”错误,我在装载XP的虚拟PC上通过安装Framework 4.0来纠正错误。
  • 所以我尝试在目标计算机(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。毫不奇怪,我回到“未能正确初始化”。
  • 另一个Stack Overflow帖子(我现在找不到,抱歉)建议检查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,因为微软),它的工作原理就像我本来应该做的那样。 (可能是它。)

希望这个过程的细节可以帮助别人!

答案 1 :(得分:0)

这对我有用:

项目属性&gt;构建&gt;平台目标:任何CPU