如何强制 Visual Studio (C#) 根据 ECMA-334 标准编译源代码?
How to force Visual Studio (C#) to compile sources according to ECMA-334 standard?
如何强制 Visual Studio (C#) 根据 ECMA-334 标准编译源代码?
例如,以下代码在 ECMA-334 标准中无效:
foreach (var item in custQuery)
{
Console.WriteLine("Name={0}, Phone={1}", item.Name, item.Phone);
}
因为 var
不是 ECMA-334 标准关键字。我想 VS 在这些情况下警告我。
Visual Studio 和 .NET Framework 中包含的编译器并未设计为符合最新(发布时)C# 语言版本以外的任何版本。尽管有选项可以诊断 >C#-2.0 (ECMA-334) 功能的使用,但通过项目选项中的 C# 语言级别设置,这对自此之后对语言所做的重大更改没有影响。
Visual Studio 2005 支持 C# 2.0 语言。您可以安装该语言的免费 Express 版本。
您可以使用 "Language Version" 选项(在命令行中也称为 langversion)。它位于构建选项卡上的高级选项下。对于这种情况,您将 select ISO-2。
请注意,这是不是向后兼容模式。它只是禁止您使用在比指定版本更新的版本中可用的功能。
Eric Lippert detailed explanation 了解 langversion 选项的用途和目的。
要注意它不是完全向后兼容模式,请从文章中获取此示例:
class C
{
public static bool operator < (C c1, C c2) { return true; }
public static bool operator > (C c1, C c2) { return true; }
public static bool operator < (bool b1, C c2) { return true; }
public static bool operator > (bool b1, C c2) { return true; }
static C H = new C();
static C I = new C();
static C J = new C();
static void G(bool b) { }
static void Main()
{
G ( H < I > ( J ) );
}
}
将 langversion 设置为 C# 1.0 (ISO-1) 禁止将此作为泛型的使用,但在该版本的编译器中是合法的。
如何强制 Visual Studio (C#) 根据 ECMA-334 标准编译源代码?
例如,以下代码在 ECMA-334 标准中无效:
foreach (var item in custQuery)
{
Console.WriteLine("Name={0}, Phone={1}", item.Name, item.Phone);
}
因为 var
不是 ECMA-334 标准关键字。我想 VS 在这些情况下警告我。
Visual Studio 和 .NET Framework 中包含的编译器并未设计为符合最新(发布时)C# 语言版本以外的任何版本。尽管有选项可以诊断 >C#-2.0 (ECMA-334) 功能的使用,但通过项目选项中的 C# 语言级别设置,这对自此之后对语言所做的重大更改没有影响。
Visual Studio 2005 支持 C# 2.0 语言。您可以安装该语言的免费 Express 版本。
您可以使用 "Language Version" 选项(在命令行中也称为 langversion)。它位于构建选项卡上的高级选项下。对于这种情况,您将 select ISO-2。
请注意,这是不是向后兼容模式。它只是禁止您使用在比指定版本更新的版本中可用的功能。
Eric Lippert detailed explanation 了解 langversion 选项的用途和目的。
要注意它不是完全向后兼容模式,请从文章中获取此示例:
class C
{
public static bool operator < (C c1, C c2) { return true; }
public static bool operator > (C c1, C c2) { return true; }
public static bool operator < (bool b1, C c2) { return true; }
public static bool operator > (bool b1, C c2) { return true; }
static C H = new C();
static C I = new C();
static C J = new C();
static void G(bool b) { }
static void Main()
{
G ( H < I > ( J ) );
}
}
将 langversion 设置为 C# 1.0 (ISO-1) 禁止将此作为泛型的使用,但在该版本的编译器中是合法的。