4

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

它在 Debug 版本中构建和运行完美,但 Release 版本立即退出,并显示“无法启动此应用程序”。以及指向Microsoft 支持页面的链接,提示问题是SHIM_NOVERSION_FOUND.

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

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

4

2 回答 2

3

我遇到了类似的问题,我必须做两件事:使用配置文件,并在目标机器上安装 Framework 4.0。@CurtNichols 指出了这个方向,但这里是最终将它们整合在一起的链接:如何:配置应用程序以支持 .NET Framework 4 或 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。毫不奇怪,我回到“未能正确初始化”。
  • 另一个 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,因为微软),它的工作方式就好像我一开始就应该做的那样。(可能是这样。)

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

于 2013-10-08T18:27:23.947 回答
0

这对我有用:

项目属性 > 构建 > 平台目标:任何 CPU

于 2014-07-24T20:55:57.873 回答