Как заставить VS2010 использовать компилятор 3.0 C # вместо 4.0? - PullRequest
8 голосов
/ 23 июля 2010

Как заставить VS2010 использовать компилятор 3.5 C # вместо 4.0?

Это вообще возможно, или мне нужно иметь отдельный файл решения VS2008 для принудительной компиляции с помощью компилятора 3.0 ?

(обновлено для исправления версии компилятора #)

Обновление : Моя мотивация - повысить производительность разработки в VS2010, но он должен работать на сервере сборки, на котором не может быть ни одного бита двоичных файлов .NET 4.0.

Ответы [ 5 ]

5 голосов
/ 23 июля 2010

Я не верю, что ты можешь сделать это. Вы можете установить языковую версию в свойствах проекта, но это не то же самое, что использование компилятора C # 3 из .NET 3.5. Я полагаю, что есть тонкие различия между выводом типа и разрешением перегрузки, например, где вместо правил C # 3 будут соблюдаться правила C # 4, даже при сборке как C # 3. Вот пример этого:

using System;
class Test
{
    static void Main()
    {
        CallFunc(Demo);
    }

    static int Demo() { return 5; }

    static T CallFunc<T>(Func<T> func)
    {
        return func();
    }
}

Эта сборка выполняется с использованием компилятора C # 4, даже когда вы указываете / langversion: 3, но не компилируется с помощью компилятора C # 3.

Вы можете обнаружить, что вы можете настроить файл проекта для использования предыдущей версии компилятора - но я не знаю, как Visual Studio справится с этим. Я подозреваю, что это ужасно запуталось.

РЕДАКТИРОВАТЬ: Хорошо, теперь вы дали мотивации, я думаю, вы можете сделать то, что мы делаем для Время Нода . У нас есть решение VS2010 и файл решения VS2008. Они оба загружают одни и те же проекты, которые имеют атрибут ToolsVersion 4.0. Я не пробовал, но я считаю , что должно прекрасно работать на машине только с .NET 3.5.

Возможно, вы захотите установить для языковой версии 3 , а также в файлах проекта, чтобы избежать случайного использования новых функций. Это не сделает вашу совместимость пуленепробиваемой, но если у вас есть все ваши модульные и интеграционные тесты, собирающиеся и работающие на сервере непрерывной сборки только для .NET 3.5, вы вряд ли будете укусить по изменениям.

3 голосов
/ 23 июля 2010

Вы не можете.Visual Studio 2010 использует компилятор 4.0, даже если вы нацелены на фреймворк 3.5.

Кроме того, нет версии 3.5 компилятора C #.

1 голос
/ 23 июля 2010

Не может быть сделано.Однако в этом нет особой необходимости, поскольку компилятор C # 4 может генерировать сборки, совместимые с .NET 2.0 (.NET 3.0 и 3.5 - это всего лишь движок времени выполнения 2.0 + новые компиляторы и библиотеки).

ВыВы уверены, что вам нужен компилятор C # 3 (поставляется с VS 2008 / .NET 3.5) или у вас достаточно хороший совместимый с ним вывод?

0 голосов
/ 23 июля 2010

У вас может быть проект в VS2010, предназначенный для платформы 3.5 (не для компилятора).

Просто дважды щелкните папку свойств в обозревателе решений (или щелкните правой кнопкой мыши на имени проекта) и в свойствахНа вкладке Приложение выберите целевую платформу.(Вы можете выбрать от Frameworks 4.0 до 2.0.)

0 голосов
/ 23 июля 2010

если у вас установлено 3.5, вы сможете выбрать каркас в свойствах проекта.Щелкните правой кнопкой мыши на имени проекта -> свойства

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...