3

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

4

5 回答 5

9

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

作为关键;如果您开始在 SP1 中使用类型,即使在您认为是 2.0的情况下,它也会在“正确的”2.0 客户端上失败。IIRC 有一个 FX cop 工具可以帮助避免这种情况。其次,(在服务包中)对核心深处的事物进行了更改 - 例如,池线程的数量(或者是池线程的堆栈大小......该区域的某些东西)如果你会咬你不走运。

此外,在 2.0 代码中有错误修复;如果您碰巧(偶然)依赖于服务包(SP1/SP2)中更改的行为......

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

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

于 2009-05-22T20:35:15.400 回答
2

我注意到的最重要的事情是安装 .net 3.5,你会得到 .net 2.0 SP1。Hanselman 有一篇文章显示了这些变化(“红色位”)。

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

于 2009-05-22T20:35:10.783 回答
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,直到您的客户升级。这是为了确保 LINQ 等任何 3.5 功能都不会被使用并编译到应用程序中,并在部署应用程序时导致错误。

于 2009-05-22T20:35:16.947 回答
0

不完全的。.NET 3.5 为 .NET 2.0 安装了一个服务包,因此风险不为零。我们有一个应用程序在升级到 .NET 3.5 后出现故障 - WinForms 应用程序中绑定源的当前行在我们尚未完全分析的某些情况下表现不同。

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

于 2009-05-22T20:35:15.400 回答
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

于 2009-05-23T19:04:28.113 回答