Нарушение изменений в .NET 4.0

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

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

    CLR Inside Out

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

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

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

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

Обновить:

Еще один полезный документ (из группы документации .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 была закрыта как «Не воспроизводимая».

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

  • Почему WCF возвращает myObject вместо List , как я ожидал?
  • C # производитель / потребитель
  • Linq to Entities соединяются с groupjoin
  • Почему class производных шаблонов не имеет доступа к идентификаторам базового шаблона?
  • Почему исключения следует использовать консервативно?
  • Свойство «имя» является частью ключевой информации объекта и не может быть изменено. Основы Entity Framework
  • Вызов метода с использованием тернарного оператора
  • Преобразование char * в float или double
  • Convert.ChangeType () не работает в Nullable Types
  • Сравните std :: wstring и std :: string
  • Cmake не может найти библиотеку, используя "link_directories"
  • Давайте будем гением компьютера.