有没有办法在Visual Studio 2008中使用2005 C#编译器?

时间:2011-04-06 16:35:28

标签: c# visual-studio-2008

我在项目上使用visual studio 2008 / C#。我们使用的是.NET 2.0,并且在2.0中发布了任何版本的C#。我可以设置我的项目在VS 2008中使用.NET 2.0框架,但我无法弄清楚在哪里选择我的C#编译器。通常这会是一个问题,但是我的约90%的时间花在了JS上,所以在C#中声明变量时我不小心留下了var语句。这在我的机器上编译很好,VS报告没有错误,然后它打破了构建。有没有办法在VS 2008中使用VS 2005中较老的C#编译器(抱歉我不知道是什么版本的#)?

3 个答案:

答案 0 :(得分:22)

你不能告诉它使用C#2编译器,但你可以告诉它将自己限制为C#2语言。

在项目属性中,转到Build选项卡,单击右下角的“Advanced ...”按钮,那里有一个Language Version选项......你想要ISO-2。

请注意,这并不完美 - 它会阻止您使用大多数非C#-2功能,但某些更改仍可能通过。例如,我相信它仍将使用C#3中比C#2版本更强大的泛型类型推断。值得注意的是这一点。这是一个例子:

using System;

class Test
{
    static void Main()
    {
        Foo("hello", new object());
    }

    static void Foo<T>(T first, T second)
    {
    }
}

C#2编译器无法在T的调用中决定用于Foo的内容,因为每个参数完全单独用于确定类型推断,并且任何相互矛盾的结果都会产生编译 - 时间错误。 C#3使用每个参数来添加T 可以的边界,并且只有在边界冲突时(或者如果无法确定类型参数)才会出错。在C#2模式下调用C#3编译器 仍然使用C#3行为。

有什么理由你不能切换你的实际构建来使用.NET 3.5(C#3)编译器吗?没有必要因为你正在使用.NET而束缚自己的C#2.哎呀,LINQBridge你甚至可以使用LINQ to Objects:)

答案 1 :(得分:13)

在项目属性中,转到“构建”选项卡,然后点击“高级”,并将语言版本更改为ISO-2而不是C#3.这仍然使用新的2008编译器,但阻止您使用C# 3.0功能,应该在这里实现你的目标。

答案 2 :(得分:0)

不同的团队成员是否使用不同版本的Visual Studio?理想的策略是每个人都使用相同版本的Visual Studio,即使这意味着你仍然坚持使用VS2005。

我认为VS2008 MSDN许可证包含运行VS2005进行开发的权限,因此如果出于其他原因需要VS2008,您可以同时运行这两个VS版本。