InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

.NET 3.5 SP1正破坏一些应用程序

作者 Abel Avram 译者 张善友 发布于 2008年10月17日

领域
语言 & 开发
主题
.NET框架 ,
.NET ,
微软 ,
编程 ,
Castle
8月份发布的.NET 3.5 SP1,理论上来说它不应该破坏之前基于2.0, 3.0, 3.5的CLR的应用程序。但是据报告,一些应用程序还是受到影响,其中包括开源项目Castle
 
微软的一名高级项目经理Scott Hanselman写了.NET 3.5 SP1存在的问题。首先他问道“.NET Framework 3.5 SP1会破坏2.0的应用程序吗?”,然后他肯定地回答“几乎肯定不会。”。然后他解释了为什么3.5 SP1不会影响现有的基于CLR 2.0和更高版本的.NET应用程序,他也承认“存在边界个案”。他建议进行内部测试以确保SP1不会破坏任何应用:
可能存在被破坏的功能,因此对所有SP你应该做兼容性测试确保你不会触及边界情况。
今年加入了微软的Castle项目发起人Hamilton Verissimo de Oliveira也抱怨SP1 破坏了Castle。他解释到破坏了什么和怎么样来解决这个问题:
    • 在创建泛型接口/方法的代理时,SP破坏了DynamicProxy 2
    • 引发异常的代码是处理极端边界的个案的地方
    • 被破坏的DynamicProxy,破坏了使用它的.NET应用(Rhino Mocks、Castle Windsor、NHibernate和Moq是我目前想到主要使用它的应用)
    • 我最近确认了这个问题并修改了DynamicProxy的代码,不再使用这些方法“r5323: 禁止调用GetOptional/RequiredCustomModifiers 方法,因此所有的测试(除了一个之外)都通过了”
Hamilton建议:
如果一些开发团队在SP1上运行Castle的测试用例,他们会发现这个问题。Mono通过收集外部测试案例库来测试他们的平台实现。微软也应该这么做,避免对开源软件项目的伤害,许可证不是一个问题。如果不太可能是因为法律问题影响的话,CLR开发团队可以简化同开源软件项目的沟通并尽早得到他们的反馈。
Scott Hanselman承诺在11月份的某个时间会针对.NET 3.5 SP1的补丁包通过Windows Update方式推出。更新这个补丁的时候,当前运行.NET 2.0的电脑都被升级为.NET 3.5 SP1。在此期间,鼓励那些在使用.NET 3.5 SP1过程中发现的问题的人们,把问题提交到微软Connect网站。
 

查看英文原文:.NET 3.5 SP1 Is Breaking Some Applications

译者 张善友 毕业于兰州大学数学系,现任职于腾讯公司企业IT部,微软多届ASP.NET MVP。