Подтвердить что ты не робот

Ошибка С# "Не поддерживается языком" после перехода на .Net4

Я пытаюсь перенести наш сайт с .Net 3.5 до 4, и я сталкиваюсь с очень странной проблемой.

Код, который отлично работает в 3.5, больше не работает, когда я нацелен на .Net4, давая мне ошибку

"xxx не поддерживается языком".

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

В этой строке кода ошибка показывает на ".TimeZoneInfo" и ".Info" оба типа "System.TimeZoneInfo".

Определение свойства user.Settings.TimeZoneInfo:

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

Определение свойства l.TimeZoneItem.Info:

public TimeZoneInfo Info
{
    get { return info; }
}

Не совсем уверен, что происходит здесь. Вам нужна помощь в этом.

4b9b3361

Ответ 1

Вероятно, это проблема несоответствия сборки. У меня была эта проблема, когда я хотел использовать сборку, которая создала круговую ссылку с другим проектом. Как только я исправил эту проблему с круговой ссылкой, ошибка больше не появлялась.

Ответ 2

Это также происходит, когда нижняя библиотека использует другую версию .NET Framework. Имел подобную проблему, и когда я обновил нижние библиотеки до 3.5 фреймворка и фактическую библиотеку в рамках 3.5, проблема исчезла.

Ответ 3

Это может помочь вызвать поле свойств по-разному. Поскольку TimeZoneInfo также является классом в пространстве имен System.

Ответ 4

Совсем знакомый с Джонатаном Перри, в моем случае у меня была ссылка на старую сборку, а не на скомпилированную. Я удалил ссылку и добавил ее снова, указывая на правильную DLL.

Ответ 5

Подобно некоторым другим сообщениям, в моем случае я полностью лишился ссылки на сборку. Он не был напрямую доступен из проекта, с которым я работал, но был доступен в другом связанном проекте, на который я ссылался.

Ответ 6

Как и в других случаях, если ссылочная сборка ориентирована на "Любой процессор", в то время как текущая сборка ориентирована на "Любой процессор", это вызовет проблему (по крайней мере, на 64-битной машине).

Ответ 7

Это также происходит, когда отсутствует сборка, на которую ссылается другая сборка в вашем проекте