Есть ли способ использовать компилятор 2005 С# в Visual Studio 2008?

Я использую visual studio 2008/С# для проекта. Мы используем .NET 2.0, и любая версия С# была выпущена в версии 2.0. Я могу настроить свой проект на использование среды .NET 2.0 в VS 2008, но я не могу понять, где выбрать мой компилятор С#. Как правило, это было бы проблемой, но около 90% моего дня тратится на JS, поэтому я оставляю случайно в выражении var при объявлении переменных в С#. Это компилируется на моей машине, и VS не сообщает об ошибках, а затем разбивает сборку. Есть ли способ использовать старый компилятор С# из VS 2005 (извините, что я не знаю, какая версия # есть) в VS 2008?

Ответ 1

Вы не можете сказать ему, чтобы использовать компилятор С# 2, но вы можете сказать ему, чтобы он ограничивался языком С# 2.

В свойствах проекта перейдите на вкладку "Сборка", нажмите кнопку "Дополнительно..." в правом нижнем углу, и там есть вариант языковой версии... вы хотите ISO-2.

Обратите внимание, что это не идеально - он останавливает вас, используя большинство функций, отличных от С# -2, но некоторые изменения все равно могут пройти. Например, я считаю, что он по-прежнему будет использовать более мощный общий вывод типа, доступный на С# 3, чем версия С# 2. Стоит быть осторожным в этом. Вот пример:

using System;

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

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

Компилятор С# 2 не может решить, что использовать для T в вызове Foo, потому что каждый аргумент используется полностью отдельно для определения вывода типа, а любые противоречивые результаты дают ошибку времени компиляции. С# 3 использует каждый аргумент, чтобы добавить ограничения на то, что может быть T, и дает только ошибку, если конфликты конфликтуют (или если параметр типа не может быть определен). Компилятор С# 3 при вызове в режиме С# 2 по-прежнему использует поведение С# 3.

Есть ли причина, по которой вы не можете переключить свою фактическую сборку, чтобы использовать компилятор .NET 3.5 (С# 3)? Нет необходимости привязывать себя к С# 2 только потому, что вы используете .NET 2. Heck, LINQBridge вы можете даже использовать LINQ для объектов:)

Ответ 2

В свойствах проекта перейдите на вкладку "Создать", затем нажмите "Дополнительно" и измените версию языка на ISO-2 вместо С# 3. Это все еще использует новый компилятор 2008 года, но не позволяет использовать С# 3.0, которые должны выполнить ваши цели здесь.

Ответ 3

Разные члены команды используют разные версии Visual Studio? Идеальная стратегия для всех - использовать ту же версию Visual Studio, даже если это означает, что вы застряли с VS2005.

Я думаю, что лицензия MSDN VS2008 включает разрешение на запуск VS2005 для разработки, поэтому вы можете запускать две версии VS одновременно, если вам нужны VS2008 по другим причинам.