有很多关于新4.0中的新功能和类的信息,但也有可能影响现有应用程序的更改,例如
Timespan现在实现了IFormattable,而带有无效选项的旧 string.Format()将抛出异常,而不是调用简单的ToString()。但是,CLR团队提供了一个很好的功能,可以通过配置设置启用以前版本的行为 - TimeSpan_LegacyFormatMode。
使用+ =或 - =访问声明它们的类中的事件将导致调用添加/删除生成的返回void的访问器。有些代码甚至无法在4.0中编译。
CAS已被弃用,要启用它,仍需要在配置中使用特殊设置 - NetFx40_LegacySecurityPolicy
所以我想知道其他更改是什么,是否有可能找到至少初步的更改列表,这些更改将会或可能会破坏.NET 4.0发布的现有功能?
答案 0 :(得分:31)
语言文档团队为C#和VB发布单独的文档:
VB:http://msdn.microsoft.com/en-us/library/cc714070%28VS.100%29.aspx
C#:http://msdn.microsoft.com/en-us/library/ee855831%28VS.100%29.aspx
我编写了C#one,其中包括Eric Lippert提到的协方差和逆变突破变化,以及Chris Burrows讨论的事件变化。围绕可选参数,嵌入式互操作类型和方法组类型推断也存在一些重大变化。
<强>更新强>
另一个有用的文档(来自.NET文档团队):http://msdn.microsoft.com/en-us/library/ee941656%28VS.100%29.aspx
答案 1 :(得分:15)
协变和逆变转换在重新编译时引入了一些模糊但可能的重大变化:
C#用户教育团队在新版本的编译器中编译已知潜在重大变化的列表,详见上面的答案。
答案 2 :(得分:5)
另请注意,SmtpClient现在实现了IDisposable,因此您现在应该使用以下内容:
using (var smtpclient = new SmtpClient())
{
smtpclient.Send(message);
}
根据这个page,.NET 4.0框架中可能会有更多这些“隐藏的堵塞”。作者建议在代码中使用FxCop找到它们。
答案 3 :(得分:2)
只是要添加到列表here's the ASP.Net official list for the RC,我还没有遇到过RTM。
答案 4 :(得分:0)
我刚刚修复了最近转移到.NET 4.0的生产应用程序中的错误。
使用嵌套属性的数据绑定抛出:
ArgumentException: Cannot bind to the property or column 'SomeProperty' on the DataSource.
它似乎是一个known issue,有一个解决方法。我无法在任何官方列表中找到它,并且Microsoft Connect上的错误已被关闭为“不可重现”。
嵌套属性都是在字符串中定义的,所以我必须手动搜索它们。