Как я могу заставить VS2010 использовать 3.5 компилятора C# вместо 4,0?
Это это даже возможный, или у меня должен быть отдельный файл решения VS2008 для принуждения компиляции с 3,0 компиляторами?
(обновленный для фиксации версии компилятора #)
Обновление: Моя мотивация должна получить производительность разработки в VS2010, но это должно работать на сервере сборки, который не может иметь единственного бита.NET 4,0 двоичных файла на нем.
Я не верю, что вы можете это сделать. Вы можете установить языковую версию в свойствах проекта, но это не то же самое, что использовать компилятор C # 3 из .NET 3.5. Я считаю, что есть тонкие различия в выводе типов и разрешении перегрузки, например, где будут соблюдаться правила C # 4 вместо правил C # 3, даже при сборке как 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 с этим справится. Я подозреваю, что это ужасно запутается.
РЕДАКТИРОВАТЬ: Хорошо, теперь вы дали мотивацию, я думаю, вы можете сделать то, что мы делаем для Noda Time . У нас есть решение VS2010 и файл решения VS2008. Они оба загружают одни и те же проекты с атрибутом ToolsVersion
, равным 4.0. Я не пробовал, но я полагаю , что он должен работать абсолютно нормально на машине с только .NET 3.5.
Возможно, вы захотите установить языковую версию на 3 , а также в своих файлах проекта, чтобы избежать случайного использования новых функций. Это не сделает вашу совместимость пуленепробиваемой, но если у вас есть все ваши модульные и интеграционные тесты, собранные и запущенные на сервере непрерывной сборки только для .NET 3.5, вас вряд ли укусят изменениями.
Невозможно сделать. Однако в этом нет особой необходимости, поскольку компилятор C # 4 может генерировать сборки, совместимые с .NET 2.0 (.NET 3.0 и 3.5 - это просто механизм выполнения 2.0 + новые компиляторы и библиотеки).
Вы уверены, что вам нужен компилятор C # 3 (поставляется с VS 2008 / .NET 3.5) или у вас достаточно хорошо совместимый вывод?
Вы можете сделать проект в VS2010 нацеленным на фреймворк 3.5 (не на компилятор).
Просто дважды щелкните папку свойств в проводнике решений (или щелкните правой кнопкой мыши на имени проекта) и на странице свойств, на вкладке Application, выберите целевой фреймворк. (Вы можете выбрать от Frameworks 4.0 до 2.0.)
.если у вас установлен 3.5, вы должны иметь возможность выбрать фреймворк в свойствах проекта. Щелкните правой кнопкой мыши на названии проекта -> свойства
Вы не можете. Visual Studio 2010 использует компилятор 4.0, даже если вы ориентируетесь на framework 3.5.
Также не существует компилятора C # версии 3.5.