Есть ли способ использовать компилятор C # 2005 в Visual Studio 2008? - PullRequest
10 голосов
/ 06 апреля 2011

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

Ответы [ 3 ]

22 голосов
/ 06 апреля 2011

Вы не можете сказать ему использовать компилятор 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 # 3 при вызове в режиме C # 2 по-прежнему использует поведение C # 3.

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

13 голосов
/ 06 апреля 2011

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

0 голосов
/ 07 апреля 2011

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

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

...