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

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

如果你是在同一台计算机上安装了.NET Framework 4.0,那么在.NET3.5下编译的.NET应用程序运行时不会有任何问题,因为这两个框架是并行安装,彼此不会产生影响。但是,如果你在.NET4.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

posted @   温景良(Jason)  Views(492)  Comments(0Edit  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
历史上的今天:
2009-05-09 在本地电脑和局域网电脑的SQLServer2000之间-自动-备份数据库(收藏)
2009-05-09 用Linq 实现动态多条件查询(转载)
点击右上角即可分享
微信分享提示