web-dev-qa-db-fra.com

Erreur C # "N'est pas pris en charge par la langue" après la migration vers .Net4

J'essaie de migrer notre site Web de .Net 3.5 à 4 et je rencontre un problème très étrange.

Le code qui fonctionne très bien dans la version 3.5 ne fonctionne plus une fois que je cible .Net4, ce qui me donne l'erreur 

"xxx n'est pas supporté par la langue".

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

Sur cette ligne de code, l'erreur indique ".TimeZoneInfo" et ".Info", tous deux de type "System.TimeZoneInfo".

La définition de la propriété user.Settings.TimeZoneInfo est la suivante:

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

La définition de la propriété l.TimeZoneItem.Info est la suivante:

public TimeZoneInfo Info
{
    get { return info; }
}

Pas vraiment sûr de ce qui se passe ici. Besoin d'aide sur celui-là s'il vous plaît.

26
Lancelot

C’est probablement un problème d’incohérence de l’Assemblée …… .J’avais ce problème lorsque je voulais utiliser une Assemblée qui créait une référence circulaire avec un autre projet. Une fois que j'ai résolu ce problème de référence circulaire, l'erreur n'apparaissait plus.

20
Jonathan Perry

Cela se produit également lorsqu'une bibliothèque de niveau inférieur utilise une version différente du .NET Framework. Avait un problème similaire et lorsque j'ai mis à jour le cadre inférieur bibliothèques à 3.5 et la bibliothèque réelle à la structure 3.5, le problème a disparu.

5
Patrick

Pour moi, cela est dû à un System.ValueTuple manquant ou obsolète lors de l'utilisation de plusieurs valeurs de retour dans c # 7.

Le message d'erreur est un peu trompeur.

3
Jim

Cela se produit également lorsqu'il manque un assemblage, référencé par un autre assemblage dans votre projet

1
Martin.Martinsson

Semblable à la réponse de Jonathan Perry, dans mon cas, je faisais référence à une ancienne assemblée, pas à celle compilée. J'ai supprimé la référence et l'a ajouté à nouveau en indiquant la bonne DLL.

1
Rodrigo Caballero

Semblable à certains des autres postes, dans mon cas, il manquait complètement une référence à une Assemblée. Le projet sur lequel je travaillais n'accédait pas directement au projet, mais à un autre projet lié auquel je faisais référence.

1
mslissap

Il peut être utile d’appeler le champ de propriété différemment. Parce que TimeZoneInfo est également une classe dans l'espace de noms System.

1
Bek Raupov

Semblable à d'autres ici, si l'assemblage référencé est ciblé sur «Tout processeur», alors que l'assembly actuel est ciblé sur «Tout processeur», le problème (du moins sur une machine 64 bits) sera à l'origine du problème.

0
yoel halb