打破.NET 4.0的变化

新4.0中有很多关于新function和类的信息,但是也有一些可能影响现有应用程序的更改

  1. Timespan现在实现IFormattable和旧的string.Format()与无效的选项将抛出exception,而不是调用简单的ToString()。 但是,CLR团队提供了一个很好的function,可以使用configuration设置 – TimeSpan_LegacyFormatMode从以前的版本启用行为。

    CLR里面

  2. 在使用+ =或 – =声明的类中访问事件将导致调用add / remove生成的访问器返回void。 一些代码甚至不会在4.0中编译。

    克里斯·伯罗斯博客

  3. CAS已弃用,为了使其仍然需要在configuration中使用特殊设置 – NetFx40_LegacySecurityPolicy

所以我想知道还有什么其他的变化,是否有可能find至less初步的变化列表,可能会或可能会打破现有的function与.NET 4.0的发布?

语言文档团队为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#之一,包括由Eric Lippert提到的协变和逆变突变,以及由Chris Burrows讨论的事件变化。 围绕可选参数,embedded式互操作types和方法组types推断还有一些突破性的变化。

更新:

一个更有用的文档(来自.NET文档团队): http : //msdn.microsoft.com/en-us/library/ee941656%28VS.100%29.aspx

协变和逆变转换在重编译时引入了一些模糊但可能的重大变化:

http://blogs.msdn.com/ericlippert/archive/2007/11/02/covariance-and-contravariance-in-c-part-nine-breaking-changes.aspx

C#用户教育团队编译新版本编译器中已知的潜在重大更改列表,请参阅上面的答案以获取详细信息。

另外请注意,SmtpClient现在实现了IDisposable,所以你现在应该使用这样的东西:

using (var smtpclient = new SmtpClient()) { smtpclient.Send(message); } 

根据这个页面 ,.NET 4.0框架中可能会有更多这样的“隐藏的阻塞”。 作者build议通过在你的代码中使用FxCop来find它们。

只是添加到列表中, 这里是RC的ASP.Net官方列表 ,我还没有遇到RTM。

我刚刚修复了一个最近转移到.NET 4.0的生产应用程序中的错误。

使用嵌套属性的数据绑定是抛出:

ArgumentException: Cannot bind to the property or column 'SomeProperty' on the DataSource.

这似乎是一个解决方法已知的问题 。 我无法在任何官方列表上find它,并且Microsoft Connect上的错误已被closures为“不可重现”。

嵌套属性全部在string中定义,所以我必须手动search它们。