c# .net-4.0

c# - Rompiendo cambios en.NET 4.0



.net-4.0 (5)

Acabo de corregir un error en una aplicación de producción que recientemente se movió a .NET 4.0.

El enlace de datos que utiliza propiedades anidadas fue throwing:

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

Parece ser un problema conocido con una solución alternativa. No pude encontrarlo en ninguna lista oficial y el error en Microsoft Connect se ha cerrado como "No reproducible".

Las propiedades anidadas están todas definidas en cadenas, así que tuve que buscarlas todas manualmente.

Hay mucha información sobre las nuevas características y clases en la nueva versión 4.0, sin embargo, también hay cambios que pueden afectar las aplicaciones existentes, por ejemplo

  1. Timespan ahora implementa IFormattable y old string.Format () con opciones no válidas lanzará una excepción en lugar de llamar a ToString simple (). Sin embargo, el equipo de CLR ofrece una buena función para habilitar el comportamiento de la versión anterior con configuración: TimeSpan_LegacyFormatMode.

    CLR al revés

  2. El acceso a eventos dentro de la clase donde se declaran usando + = o - = dará lugar a que se agreguen / eliminen los accesos generados que devuelven el vacío. Algún código ni siquiera se compilará en 4.0.

    Blog de Chris Burrows

  3. CAS está en desuso y para habilitarlo aún se necesita usar configuración especial en la configuración - NetFx40_LegacySecurityPolicy

Entonces me pregunto, ¿cuáles son los otros cambios y es posible encontrar al menos lista preliminar de cambios que romperán o pueden romper la funcionalidad existente con el lanzamiento de .NET 4.0?


El equipo de documentación de idiomas publica documentos separados para los cambios de rotura de C # y 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

Escribí el C # one e incluí cambios de rotura de covarianza y contravarianza mencionados por Eric Lippert, y cambios de eventos discutidos por Chris Burrows. También hay algunos cambios importantes en torno a los parámetros opcionales, los tipos de interoperación incrustados y la inferencia del tipo de grupo de métodos.

Actualizar:

Un documento más útil (del equipo de documentación de .NET): http://msdn.microsoft.com/en-us/library/ee941656%28VS.100%29.aspx




También tenga en cuenta que SmtpClient ahora implementa IDisposable, por lo que ahora debería usar algo como esto:

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

De acuerdo con esta page , podría haber más de estos ''atascos ocultos'' dentro del marco .NET 4.0. Y el autor sugiere encontrarlos mediante el uso de FxCop en su código.