Срочные изменения в .NET 4.0 - PullRequest
58 голосов
/ 30 марта 2010

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

  1. Timespan теперь реализует IFormattable и старый string.Format () с недопустимыми параметрами вызовет исключение вместо вызова простого ToString (). Тем не менее, команда CLR предоставляет хорошую функцию для включения поведения из предыдущей версии с настройкой конфигурации - TimeSpan_LegacyFormatMode.

    CLR Inside Out

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

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

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

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

Ответы [ 5 ]

31 голосов
/ 01 апреля 2010

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

Обновление:

Еще один полезный документ (от команды по документации .NET): http://msdn.microsoft.com/en-us/library/ee941656%28VS.100%29.aspx

15 голосов
/ 31 марта 2010

Ковариантные и контравариантные преобразования вносят некоторые неясные, но возможные критические изменения после перекомпиляции:

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

Команда обучения пользователей C # составляет список известных потенциальных критических изменений в новой версиикомпилятора, см. ответ выше для деталей.

5 голосов
/ 01 июля 2010

Также обратите внимание, что SmtpClient теперь реализует IDisposable, поэтому вы должны теперь использовать что-то вроде этого:

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

Согласно этой странице может быть больше таких «скрытых замятий» внутри .NET 4.0 framework. И автор предлагает найти их с помощью FxCop в вашем коде.

2 голосов
/ 30 марта 2010

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

0 голосов
/ 20 июня 2014

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

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

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

Похоже, известная проблема с обходным решением. Я не смог найти его ни в одном официальном списке, и ошибка в Microsoft Connect была закрыта как «Невозможно воспроизвести».

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

...