迁移到.Net4后,C#错误"语言不支持"

Lan*_*lot 27 .net c# migration

我正在尝试将我们的网站从.Net 3.5迁移到4,我遇到了一个非常奇怪的问题.

一旦我以.Net4为目标,在3.5中工作得很好的代码就不再存在了,给了我错误

"语言不支持xxx".

TimeZoneInfo tzi = !calendarItem.UseUserTimeZone ? user.Settings.TimeZoneInfo : l.TimeZoneItem.Info;
Run Code Online (Sandbox Code Playgroud)

在该行代码中,错误显示在" .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(); }
}
Run Code Online (Sandbox Code Playgroud)

l.TimeZoneItem.Info财产的定义是:

public TimeZoneInfo Info
{
    get { return info; }
}
Run Code Online (Sandbox Code Playgroud)

不确定这里发生了什么.请帮助那个.

Jon*_*rry 20

这可能是一个装配不一致的问题.当我想使用一个与另一个项目创建循环引用的程序集时,我遇到了这个问题.一旦我修复了这个循环引用问题,错误就不再出现了.


小智 5

当较低的库使用不同版本的.NET Framework时,也会发生这种情况.有一个类似的问题,当我将Lower Libraries更新为3.5框架并将实际库更新到3.5框架时,问题就消失了.


Jim*_*Jim 5

对我来说,这是由于System.ValueTuple在 c# 7 中使用多个返回值时丢失或过时造成的。

错误信息有点误导。


Bek*_*pov 1

以不同的方式调用属性字段可能会有所帮助。因为TimeZoneInfo也是System命名空间中的一个类。

  • 明确允许属性具有与其“包含”的类型相同的名称。 (3认同)