微软打破了.NET兼容性?

时间:2010-06-28 06:19:30

标签: .net windows auto-update

几天前,我的.NET 3.5应用程序在开始发出错误时开始失败

“无法找到运行此应用程序的运行时版本”。

由于我没有对他们做任何事情,这对我来说很奇怪。经过一番调查,我发现,原因是Windows自动更新,它将.NET 3.5或.NET 4的Service Pack安装到我的计算机上(我没想到两个中的哪一个是有罪的)。由于控制面板的“已安装的Windows更新”列表中未显示该更新,因此无法卸载该更新。我不得不恢复到系统还原点!

今天我的一位客户抱怨同样的问题。我不能强迫他恢复系统恢复,所以我需要知道如何克服这个愚蠢的微软的事情。任何人都可以分享你的想法吗?

P.S。该软件受CodeVeil 1.2保护,这可能很重要。

3 个答案:

答案 0 :(得分:2)

在我们建议解决此问题之前,我们需要了解这里发生了什么。解决这个问题的第一步是获取更多信息

  • 您的应用程序编译的CLR版本是什么版本?
  • 机器上安装了哪些版本的CLR?
  • 该机器的操作系统是什么?

通常,在为计算机上未安装的CLR版本编译应用程序时会出现此错误消息。例如,具有2.0应用程序但仅具有4.0 CLR。

答案 1 :(得分:1)

感谢大家的帮助!

我终于发现这是旧的CodeVeil,它在破坏应用程序时犯了罪。安装.NET 4.0更新后,受CodeVeil 1.2保护的所有应用程序都完全被破坏。我购买了该产品的最新版本,现在可以使用了。

答案 2 :(得分:-1)

在我的情况下,问题很容易解决,在app.config文件中添加以前的运行时版本,如此处所述 https://msdn.microsoft.com/en-us/library/jj152935(v=vs.110).aspx

<?xml version="1.0"?>
<configuration>
    <startup>
        <supportedRuntime version="<YOUR_VERSION>"/>
    </startup>
</configuration>

在你的情况下,遵循上面的doc应该是“v2.0.50727”,因为这个字符串也被映射为.NET 3.5。

有可能的版本列表 https://msdn.microsoft.com/en-us/library/jj152935(v=vs.110).aspx