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