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.
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.
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.
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.
Cela se produit également lorsqu'il manque un assemblage, référencé par un autre assemblage dans votre projet
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.
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.
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.
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.