BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

注意:迁移到.NET 4.0会有问题

| 作者 Abel Avram 关注 10 他的粉丝 ,译者 侯伯薇 关注 0 他的粉丝 发布于 2010年5月8日. 估计阅读时间: 5 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

日前,微软发布了一个列表,其中完整描述了从.NET Framework 3.5 SP1 迁移到.NET 4.0会出现的问题。该列表包含了六个方面的变化:核心、ASP.NET、 ADO.NET、WCF, WPF以及XML。

如果你是在同一台计算机上安装了.NET Framework 4.0,那么在.NET 3.5下编译的.NET应用程序运行时不会有任何问题,因为这两个框架是并行安装,彼此不会产生影响。但是,如果你在.NET 4.0下对应用程序重新进行了编译,那么就会出问题,因为最新的微软运行时在做出改善的同时也引入了一些破坏性的改变。

这些改变表现在六个方面:

该列表相对较长,所以在此只会列出其中的一部分,如下:

核心

应用程序配置文件名称的改变 “如果你的应用程序配置文件名是application-name.config,那么需要将其重命名为application-name.exe.config。例如,你需要将MyApp.config重命名为MyApp.exe.config。”
关闭了代码访问策略。 参见代码访问安全策略的兼容性和迁移

ASP.NET

由于CAS策略的改变,在全局缓存中运行受信代码的应用程序可能会失败。 参见ASP.NET 4应用程序中的代码访问安全
在安装了.NET 4.0之后,安装在IIS 6.0上的ASP.NET 2.0程序可能会出现错误。 要解决这个问题,你需要禁用ASP.NET 4.0,或者将ASP.NET 2.0的应用移动到未安装ASP.NET 4的IIS实例中。
ASP.NET 4.0中的页面解析器更加严格。 你将必须修正由无效标签所产生的错误。

数据

WCF数据服务不会再为读写操作关闭底层的数据流。
事件 现在,(TEntity的) System.Data.Linq.EntitySet 除了会在载入的时候引发事件之外,如果(TEntity的) EntitySet 被卸载,那么在执行增加和删除操作的时候还会引发ListChanged事件。
查询 在LINQ to SQL 查询中,Skip(0)不会再被忽略。从而导致拥有这个方法的查询的行为会有所不同。例如,在某些情况下,需要使用带有Skip(0)的OrderBy子句,现在,如果没有包含OrderBy子句,那么查询就会抛出NotSupportedException异常。

WCF

配置文件 WCF支持配置文件之间的合并。
服务托管

你将再无法通过在属性定义上添加allowDefinition='MachineToApplication'来在服务级别指定<serviceHostingEnvironment>配置选项。在服务级别指定<serviceHostingEnvironment>元素在技术上是错误的,并且会导致不一致的行为。

WPF

异常处理 “为了能够更早地侦测到错误,WPF会抛出TargetInvocationException并且对重要的异常——如NullReferenceExceptionOutOfMemoryExceptionStackOverflowExceptionSecurityException——设定InnerException属性,而不会捕获最原始的异常”
窗口样式 “如果你试图将WindowStyle设置为一个值而不是None,而此时AllowsTransparency的值为true且WindowState的值是Minimized,那么就会抛出InvalidOperationException异常”;
对话框 “为了提高可靠性,CommonDialog.ShowDialog方法会在创建Microsoft.Win32.FileDialog控件的同一线程中调用”;

XML

命名空间解析器 XmlReader.ReadContentAs方法不会再忽略传递给它的IXmlNamespaceResolver 解析器”;
空格 “为了防止在你创建reader时数据的丢失,XmlReader.Create方法不再会删除重要的空格”;

查看英文原文:The Complete List of Migration Issues Upgrading to .NET 4.0

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

嗯很好,每次升级都这样 by ge zuo

嗯很好,每次升级都这样,太强大了,重来不考虑兼容性,强大,一个编程语言怎么能这么草率!!!!!!!!!!!!!!11

Re: 嗯很好,每次升级都这样 by wang yi

这已经很兼容了,升级基本不费什么事. 而且4.0支持side by side运行.

Re: 嗯很好,每次升级都这样 by 陈 实

就我现在使用来看,升级过程还是很平稳的,可能我没有用到上面所说的功能吧。

Re: 嗯很好,每次升级都这样 by Wei Fisher

很多变动本身就是之前的设计缺陷

升级要看白皮书地 by ke huang

好像是有个升级白皮书的,有些注意事项。最后先看看ASP.NET 4 Breaking Changes

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

5 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT