从.net 2.0升级到3.5时的兼容性

时间:2009-05-22 20:29:51

标签: .net compatibility

目前我们仍在使用2.0框架,虽然2.0提供了我们目前所需的所有必要条件,但我们迟早要继续使用3.5。 前几天有一个内部讨论正在讨论这次升级是否存在任何风险,并且由于我们所有的客户仍在使用2.0框架,因此不能掉以轻心。 曾有一位同事表示,只需重新编译3.5框架的所有产品就更安全了。这将解决任何兼容性问题。 很多工作确实也许是不必要的,我相信微软的受让人认为框架是向后兼容的,为什么我们应该对它有任何疑问? 我是对的吗?

5 个答案:

答案 0 :(得分:9)

它不是100%....最重要的是,3.5和3.5SP1都包括2.0和(后来)3.0的服务包;这些变化并非都是微不足道的。

作为关键词;如果你开始使用SP1中的类型即使你认为是2.0 ,它也会在“正确的”2.0客户端上失败。有一个外汇警察工具来帮助避免这种情况,IIRC。其次,(在Service Pack中)对核心内部的东西进行了更改 - 例如池线程的数量(或者是池线程的堆栈大小......在该区域中的某些东西)如果你可能会咬你不幸的是。

此外,2.0代码中还有错误修复;如果您(偶然)发生依赖于Service Pack(SP1 / SP2)中更改的行为......

也不要忘记你有这个问题现在;如果您的客户已经安装了.NET 3.5,那么他们已经使用了2.0服务包;-p

所以不要完全忽视它 - 但是如果你采取适当的预防措施(通过测试),它应该是可以实现的。

答案 1 :(得分:2)

我注意到的最重要的事情是安装.net 3.5,你得到.net 2.0 SP1。汉塞尔曼有post显示变化(“红点”)。

就个人而言,如果能让你感觉更好,我没有任何问题。

答案 2 :(得分:1)

当我们从2.0 Framework迁移到3.5时,我们能够解决任何问题。原因是3.5框架本质上是2.0框架的扩展,这就是为什么当你进入IIS为网站设置.NET框架时你看到.NET 2.0而不是3.0 / 3.5(作为例子)。

现在关于仍然使用2.0框架的客户的关注,你需要确保发生的事情是你的开发人员设置他们的IDE在VS2008中针对2.0框架而不是3.5,直到你的客户升级。这是为了确保任何3.5版本的功能(如LINQ)不会被利用并编译到应用程序中,并在部署应用程序时导致错误。

答案 3 :(得分:0)

不完全。 .NET 3.5为.NET 2.0安装了一个Service Pack,因此风险不为零。我们有一个自升级到.NET 3.5后失败的应用程序 - 在某些我们尚未完全分析的情况下,WinForms应用程序中绑定源的当前行的行为有所不同。

我认为重新编译不会产生任何影响(在上述情况下肯定没有),但升级会导致问题的风险很小,您需要进行一些回归测试。

答案 4 :(得分:0)

需要注意的一点是,.NET 3.0,3.5和3.5SP1不是新的运行时。所有四个“框架”都在.NET 2.0运行时(CLI,CLR,GC)上运行。 .NET 3.0和3.5框架实际上是.NET 2.0框架的扩展。使用.NET 3.0和3.5通常不会出现问题......但.NET 3.5 SP1包含现有.NET 2.0类的一些更新版本,这些版本在少数(极少数)情况下添加或更改了方法签名或行为。您遇到其中一个问题的可能性非常低,但机会就是:

http://forums.asp.net/t/1305800.aspx http://www.hanselman.com/blog/UpdateOnNETFramework35SP1AndWindowsUpdate.aspx