it-swarm.com.de

C # Fehler "Wird von der Sprache nicht unterstützt" nach der Migration zu .Net4

Ich versuche, unsere Website von .NET 3.5 auf 4 zu migrieren, und ich stoße auf ein sehr seltsames Problem.

Code, der in 3.5 einwandfrei funktioniert, funktioniert nicht mehr, wenn ich .Net4 anvisiere und den Fehler bekomme 

"xxx wird von der Sprache nicht unterstützt".

TimeZoneInfo tzi = !calendarItem.UseUserTimeZone ? user.Settings.TimeZoneInfo : l.TimeZoneItem.Info;

In dieser Codezeile wird der Fehler in ".TimeZoneInfo" und ".Info" angezeigt, beide vom Typ "System.TimeZoneInfo".

Die Definition von user.Settings.TimeZoneInfo-Eigenschaft lautet:

public TimeZoneInfo TimeZoneInfo
{
    get { return World.TimeZones[Convert.ToInt32(this[Setting.TimeZoneInfo])].Info; }
    set { this[Setting.TimeZoneInfo] = value.ToTimeZoneItem().Id.ToString(); }
}

Die Definition von l.TimeZoneItem.Info-Eigenschaft lautet:

public TimeZoneInfo Info
{
    get { return info; }
}

Nicht wirklich sicher, was hier los ist. Brauche Hilfe, bitte.

26
Lancelot

Es handelt sich wahrscheinlich um ein Inkonsistenzproblem der Assembly. Ich hatte dieses Problem, als ich eine Assembly verwenden wollte, die einen Zirkelverweis mit einem anderen Projekt erstellt hat. Nachdem ich dieses Zirkelreferenzproblem behoben hatte, wurde der Fehler nicht mehr angezeigt.

20
Jonathan Perry

Dies geschieht auch, wenn eine niedrigere Bibliothek eine andere Version von .NET Framework verwendet. Hatte ein ähnliches Problem und als ich das Lower Libraries auf 3.5 Framework und die eigentliche Library auf das 3.5 Framework aktualisierten, ging das Problem weg.

5
Patrick

Bei mir ist dies auf einen fehlenden oder veralteten System.ValueTuple zurückzuführen, wenn mehrere Rückgabewerte in c # 7 verwendet werden.

Die Fehlermeldung ist etwas irreführend.

3
Jim

Dies passiert auch, wenn eine Assembly fehlt, auf die eine andere Assembly in Ihrem Projekt verweist

1

Ähnlich wie Jonathan Perrys Antwort hatte ich in meinem Fall einen Hinweis auf eine alte Versammlung, nicht auf die kompilierte. Ich entfernte den Verweis und fügte ihn wieder hinzu, wobei er auf die richtige DLL zeigte.

1

Ähnlich wie bei einigen anderen Beiträgen, fehlte mir in meinem Fall ein Hinweis auf eine Versammlung völlig. Es wurde nicht direkt von dem Projekt aus aufgerufen, mit dem ich arbeitete, sondern in einem anderen verknüpften Projekt, auf das ich verwiesen habe.

1
mslissap

Es kann hilfreich sein, das Eigenschaftsfeld anders aufzurufen. Weil TimeZoneInfo auch eine Klasse im System-Namespace ist.

1
Bek Raupov

Ähnlich wie bei anderen hier, wenn die referenzierte Assembly auf 'Any CPU' ausgerichtet ist, während die aktuelle Assembly auf 'Any CPU' gerichtet ist (mindestens auf einem 64-Bit-Computer).

0
yoel halb