Критические изменения in.NET 4.0


существует много информации о новых функциях и классах в new 4.0 однако есть также изменения, которые могут повлиять на существующие приложения, например

  1. Timespan теперь реализует IFormattable и old строку.Формат() С недопустимыми параметрами будет выдавать исключение вместо вызова простой ToString (). Однако команда CLR предоставляет хорошую функцию для включения поведения Из предыдущей версии с настройкой конфигурации-TimeSpan_LegacyFormatMode .

    CLR наизнанку

  2. доступ к событиям внутри класса, где они объявлены с помощью += или -= приведет к вызову add / remove сгенерированных методов доступа, которые возвращают void. Некоторые коды даже не компилируются в 4.0.

    Блог Криса Берроуза

  3. CAS устарел и для его включения все еще нужно использовать специальную настройку в конфигурации - NetFx40_LegacySecurityPolicy

поэтому мне интересно, какие еще изменения и можно ли найти хотя бы предварительный список изменений, которые будут или могут нарушить существующую функциональность с выпуском .NET 4.0 ?

5 58

5 ответов:

команда документации по языкам публикует отдельные документы для C# и VB breaking changes:

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 и включил ковариационные и контравариантные изменения, упомянутые Эриком Липпертом, и изменения событий, обсуждаемые Крисом Берроузом. Есть также некоторые критические изменения вокруг необязательных параметров, внедренных типов взаимодействия и вывода типа группы методов.

обновление:

еще один полезный документ (от команды документации .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. И автор предлагает найти их с помощью FxCop на вашем коде.

просто добавить в список, вот ASP.Net официальный список для RC, Я еще не сталкивался с RTM.

Я только что исправил ошибку в производственном приложении, которое недавно перешло на .NET 4.0.

привязка данных, использующая вложенные свойства, бросала:

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

Это известная проблема С обходной. Я не мог найти его ни в каких официальных списках, и ошибка в Microsoft Connect была закрыта как "не воспроизводимая".

вложенные свойства все определены в строках, поэтому мне пришлось искать их все вручную.