Casser les modifications dans .NET 4.0

Il y a beaucoup d’informations sur les nouvelles fonctionnalités et les nouvelles classes dans la nouvelle version 4.0, mais il y a aussi des modifications qui peuvent affecter les applications existantes, par exemple

  1. Timespan implémente maintenant IFormattable et l’ancien ssortingng.Format () avec des options non valides lancera une exception au lieu d’appeler le simple ToSsortingng (). Cependant, l’équipe CLR fournit une fonctionnalité intéressante pour activer le comportement de la version précédente avec le paramètre de configuration – TimeSpan_LegacyFormatMode.

    CLR Inside Out

  2. L’access aux événements à l’intérieur de la classe où ils sont déclarés en utilisant + = ou – = conduira à append / supprimer des accesseurs générés qui renvoient un void. Certains codes ne seront même pas compilés en 4.0.

    Blog de Chris Burrows

  3. CAS est obsolète et pour l’activer, il faut encore utiliser des parameters spéciaux dans la configuration – NetFx40_LegacySecurityPolicy

Je me demande donc quels sont les autres changements et est-il possible de trouver au moins une liste préliminaire des changements qui vont ou peuvent casser des fonctionnalités existantes avec la version de .NET 4.0?

L’équipe de documentation sur les langues publie des documents distincts pour les changements de rupture C # et 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

J’ai écrit le C # one et j’ai inclus les changements de covariance et de contravariance mentionnés par Eric Lippert, et les changements d’événement discutés par Chris Burrows. Il existe également des modifications de rupture concernant les parameters facultatifs, les types d’interopérabilité intégrée et l’inférence de type de groupe de méthodes.

Mettre à jour:

Un autre document utile (de l’équipe de documentation de .NET): http://msdn.microsoft.com/en-us/library/ee941656%28VS.100%29.aspx

Les conversions covariantes et contravariantes introduisent des changements de brouillage obscurs mais possibles lors de la recompilation:

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

L’équipe de formation de l’utilisateur C # comstack une liste des modifications potentielles connues dans la nouvelle version du compilateur, voir la réponse ci-dessus pour plus de détails.

Notez également que SmtpClient implémente maintenant IDisposable, vous devez donc utiliser quelque chose comme ceci:

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

Selon cette page, il pourrait y avoir plus de ces «bourrages cachés» dans le cadre de .NET 4.0. Et l’auteur suggère de les trouver en utilisant FxCop sur votre code.

Juste pour append à la liste, voici la liste officielle ASP.Net pour la RC , je ne suis pas encore tombé sur un RTM.

Je viens de corriger un bug dans une application de production qui a récemment été déplacée vers .NET 4.0.

La liaison de données utilisant des propriétés nestedes était lancée:

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

Cela semble être un problème connu avec une solution de contournement. Je n’ai pas pu le trouver sur des listes officielles et le bogue sur Microsoft Connect a été fermé en tant que “non reproductible”.

Les propriétés nestedes sont toutes définies dans des chaînes. Je devais donc les rechercher toutes manuellement.