Критические изменения in.NET 4.0
существует много информации о новых функциях и классах в new 4.0 однако есть также изменения, которые могут повлиять на существующие приложения, например
-
Timespan теперь реализует IFormattable и old строку.Формат() С недопустимыми параметрами будет выдавать исключение вместо вызова простой ToString (). Однако команда CLR предоставляет хорошую функцию для включения поведения Из предыдущей версии с настройкой конфигурации-TimeSpan_LegacyFormatMode .
-
доступ к событиям внутри класса, где они объявлены с помощью += или -= приведет к вызову add / remove сгенерированных методов доступа, которые возвращают void. Некоторые коды даже не компилируются в 4.0.
CAS устарел и для его включения все еще нужно использовать специальную настройку в конфигурации - NetFx40_LegacySecurityPolicy
поэтому мне интересно, какие еще изменения и можно ли найти хотя бы предварительный список изменений, которые будут или могут нарушить существующую функциональность с выпуском .NET 4.0 ?
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
ковариантные и контравариантные преобразования вводят некоторые неясные, но возможные критические изменения при перекомпиляции:
команда обучения пользователей 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 была закрыта как "не воспроизводимая".
вложенные свойства все определены в строках, поэтому мне пришлось искать их все вручную.