.NET 3.5 SP1 新引入的缺陷

  • Jonathan Allen
  • 张善友

2008 年 8 月 31 日

话题:.NET语言 & 开发

在.NET 3.5 SP1 发布不到一个月的时间内, 针对.NET 3.5 SP 1 的缺陷报告就开始堆积。虽然缺陷是任何一个发布版本不可避免的一部分,每个公司对他们的回应方式有很大的不同。微软的.NET 部门通常要求用户拨打产品支持热线获取热修复程序,一年或者两年才发布一次广泛可用的补丁包。

为了用户之前能正常工作的程序,开发商需要花很大的努力,来找出程序现在无法正常工作的罪魁祸首是微软而不是开发商本身。一旦问题确定下来,仍然需要找出是否有 KB 文章提到了所需要的热修复程序。如果用户或者开发人员不能马上找到文章,无数个人工就被白白浪费了。

下面是我们所知已经被核实的问题:



序列化

当一个实现 ISerializable 的泛型类和有一个使用泛型类型参数的静态委托成员,(在 32 位的 Windows Server 2003 上)二进制序列化会挂起或者(在 64 位的 Windows Server 2008)会引发 OutOfMemoryException 异常。



WinForms

在某些情况下用户可以把 toolstrips 从一个 MDI 子窗口移动到另一个子窗口。这样的话,假设单击一个文档上的按钮,会产生一个完全不同的反应。



反射

3.5 SP1 下 ParameterInfo.GetOptionalCustomModifiers 和 GetRequiredCustomModifiers 方法会引发 ExecutionEngineException 异常。这对方法所具有的缺陷影响到了广受欢迎的框架,

Rhino Mocks



WPF

.NET 3.5 SP1 破坏了 WPF 在 IIS 下的使用。似乎已经有些人在网站里使用 WPF 来实时生成图像。可惜,WPF 再也不能在 IIS 下工作了。



类型检查

在某些情况下,在 3.5 下正常工作的类在 3.5 SP1 不会传递给 PEVerify。这基本上意味着如果你在运行时使用这个类你将得到的是一个类型加载异常。



数字

伪“在检查模式下编译时操作溢出”,这是一个新的 C# 语义错误检查器(Semantic Error Checker)的缺陷。当 ulong.MaxValue 减 2 的时候触发。



查看英文原文:Newly Minted Bugs for .NET 3.5 SP1
.NET语言 & 开发