2010-03-30 14 views
58

Es gibt eine Menge von Informationen zu neuen Funktionen und Klassen in neuen 4.0 aber es ändert sich auch, dass möglicherweise vorhandene Anwendungen beeinflussen, zum BeispielBrechen von Änderungen in .NET 4.0

  1. Zeitspanne implementiert nun IFormattable und alte string.Format() mit ungültigen Optionen wird Ausnahme auslösen, anstatt einfachen ToString() aufzurufen. Das CLR-Team bietet jedoch eine nützliche Funktion, um das Verhalten der vorherigen Version mit der Konfigurationseinstellung TimeSpan_LegacyFormatMode zu aktivieren.

    CLR Inside Out

  2. Zugang innerhalb der Klasse zu Veranstaltungen, bei denen sie deklariert sind mit + = oder - = führen erzeugt Accessoren zu rufen hinzufügen/entfernen, die void zurückgeben. Einige Code wird nicht einmal in 4.0 kompilieren.

    Chris Burrows Blog

  3. CAS veraltet ist und es ein noch zu ermöglichen, müssen spezielle Einstellung in Konfiguration - NetFx40_LegacySecurityPolicy

So frage ich mich, was andere Veränderungen sind und ist es möglich, zumindest zu finden vorläufige Liste der Änderungen, die vorhandene Funktionalität mit Release von .NET 4.0 brechen werden?

+0

Das wäre ein tolles Wiki ... aber in der Zwischenzeit ... +1, weil du nur 78 Rep-Punkte hast! – Armstrongest

+0

Ja, bitte schalte dies in ein Community Wiki um - toller Eintrag dafür! –

+0

Es wurde ein Fehler bei Microsoft Connect über [nicht intuitive virtuelle Methodenauflösung mit optionalen Parametern] (https://connect.microsoft.com/VisualStudio/feedback/details/555961/unintuitive-virtual-method-resolution-with-optional-parameters) gemeldet) –

Antwort

31

Die Sprachen-Dokumentationsteam veröffentlicht separate Dokumente für C# und VB brechen Änderungen:

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

ich die C# ein und enthalten Kovarianz und Kontra brechen erwähnten Änderungen geschrieben von Eric Lippert, und Ereignisse Änderungen von Chris Burrows diskutiert. Es gibt auch einige brechende Änderungen um optionale Parameter, eingebettete Interop-Typen und Methodengruppen-Inferenz.

Update:

Ein weiteres nützliches Dokument (von .NET-Dokumentationsteam): http://msdn.microsoft.com/en-us/library/ee941656%28VS.100%29.aspx

5

Beachten Sie auch, dass SmtpClient jetzt IDisposable implementiert, so dass Sie jetzt etwas wie folgt verwenden sollte:

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

Entsprechend dieser page kann es mehr von diesen "versteckten Staus" innerhalb des .NET 4.0 Framework geben. Und der Autor schlägt vor, sie zu finden, indem Sie FxCop auf Ihrem Code verwenden.

0

Ich habe gerade einen Fehler in einer Produktion App behoben, die vor kurzem zu .NET 4.0 verschoben.

Datenbindung, die verschachtelte Eigenschaften verwendet warf:

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

Es scheint ein known issue mit einer Vermeidung des Problems zu sein. Ich konnte es auf keiner offiziellen Liste finden und der Fehler in Microsoft Connect wurde als "Nicht reproduzierbar" geschlossen.

Die verschachtelten Eigenschaften sind alle in Strings definiert, so dass ich sie alle manuell suchen musste.