什么时候.NET 2-3.5 WinForms/WPF桌面应用程序不能在.NET 4/4.5上正常工作?

什么时候.NET 2-3.5 WinForms/WPF桌面应用程序不能在.NET 4/4.5上正常工作?,.net,windows-8,.net-4.0,compatibility,.net,Windows 8,.net 4.0,Compatibility,如果您有一个.NET 2.0、3.0或3.5桌面应用程序(WinForms/WPF),并且希望在Windows 8.0及更高版本上运行,而其中未预装.NET Framework 3.5,则有必要将以下内容添加到app.config文件中: <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v2.0.50727"/> <supportedRunt

如果您有一个.NET 2.0、3.0或3.5桌面应用程序(WinForms/WPF),并且希望在Windows 8.0及更高版本上运行,而其中未预装.NET Framework 3.5,则有必要将以下内容添加到app.config文件中:

<startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v2.0.50727"/>
    <supportedRuntime version="v4.0"/>
</startup>

这样,您的应用程序就可以运行,而无需用户启用/安装.NET 3.5

现在,我的问题是,由于该应用程序无法在.NET4上运行,人们何时才能真正启用/安装.NET3.5?也就是说:应用程序应该做什么,或者应该引用哪些程序集,或者运行哪些代码以使其与.NET 4不兼容?在什么情况下会这样?或者它总是兼容的,只需将上述内容添加到配置文件就可以了


谢谢。

.NET 4.0是微软认为安全的第一个版本,可以从.NET 2.0.50727版本对CLR和基类库进行重大更改。并修复一些模糊的bug,这种bug如果不影响程序,就无法修复,而程序可能会无意中依赖于bug行为

这种谨慎是有先例的。在微软内部臭名昭著的是.NET2.0版本。经过多次测试,证实它不会破坏现有的.NET1.1程序,它在公司内部发布。并迅速破解了一个由实习生编写的电子邮件分发程序。其中包含一个线程竞赛错误,以前从未检测到。直到2.0线程池调度程序的改进改变了计时并触发了竞争。每个人都有两天没有电子邮件:)

您的程序在.NET4上出现类似问题的几率非常低。但不是零。通过在.config文件中添加条目,您确认您确实没有这样做,并且已经测试了您的程序,以验证它是否仍然正常工作。实际上,这是对Microsoft支持的一种逃避,他们没有义务为您提供修补程序。他们可以简单地告诉您从.config文件中删除该行:)


获得信心,你没有这样的问题。将“v4.0”放在第一位。

感谢您的快速响应。一个小问题:把“v4.0”放在第一位会有什么不同?我的意思是,如果v4是所有可用的,那么应用程序运行在v4上,如果v2也可用,或者v2是唯一可用的,那么应用程序运行在v4上,因为它是根据v4编译的。换句话说,我的问题是,将v4放在第一位会带来什么好处?除了测试之外,如果没有问题,您会更快地获得信心。因为您将获得更多的用户在v4运行时上运行您的程序。