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

本文关键字:2005年 编译器 Visual 2008 Studio 有没有 | 更新日期: 2023-09-27 17:48:56

我在一个项目中使用visual studio 2008/c#。我们使用的是。net 2.0,以及2.0中发布的c#版本。我可以设置我的项目在VS 2008中使用。net 2.0框架,但我不知道在哪里选择我的c#编译器。一般来说,这将是一个问题,但我大约90%的时间是在JS中度过的,所以在c#中声明变量时,我总是不小心离开var语句。这在我的机器上编译得很好,VS报告没有错误,然后它破坏了构建。有没有办法使用旧的c#编译器从VS 2005(对不起,我不知道是什么版本#)在VS 2008?

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

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

在您的项目属性中,转到Build选项卡,单击右下角的"Advanced…"按钮,那里有一个语言版本选项…你想要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编译器不能决定在调用Foo时对T使用什么,因为每个参数完全单独使用以确定类型推断,任何矛盾的结果都会导致编译时错误。c# 3使用每个参数来添加T 可以的边界,并且仅在边界冲突(或者无法确定类型参数)时给出错误。在c# 2模式下调用c# 3编译器时,仍然使用c# 3的行为。

有什么原因你不能切换你的实际构建使用。net 3.5 (c# 3)编译器?没有必要仅仅因为使用。net 2就把自己束缚在c# 2上。哎呀,有了LINQBridge,你甚至可以使用LINQ来处理对象:)

在项目属性中,转到"Build"选项卡,然后点击"Advanced",将语言版本更改为ISO-2而不是c# 3。这仍然使用新的2008编译器,但阻止您使用c# 3.0的特性,这些特性应该可以实现您的目标。

不同的团队成员使用不同版本的Visual Studio吗?理想的策略是让每个人都使用相同版本的Visual Studio,即使这意味着你只能使用VS2005。

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