Компиляция .NET 3.5 проекта с использованием компилятора .NET 4.0

StackOverflow https://stackoverflow.com/questions/4036905

Вопрос

У меня есть решение, содержащее несколько проектов. Один из тестовых проектов использует .NET 4.0 из-за зависимости. Проект развертывания, который я хочу построить, предназначен для компилятора .NET 3.5. Наш текущий сценарий сборки не является гранулированным, чтобы нацелить различные компиляторы .NET на проекте по проекту. В основном я могу использовать только один компилятор для каждого проекта в решении.

Компилятор .NET 4.0 достаточно смарт для компиляции 3.5 кода?

Структура решения

  • Проект 1 .NET 3.5 (развертывание)
  • Проект 2 .NET 4.0 (используется для тестирования в автоматическом цикле сборки)

ПРИМЕЧАНИЕ. Я не могу просто игнорировать проект 2, потому что наш автоматический сервер сборки запускает тесты модуля в проекте 2. Все тесты должны проходить до успеха по сборке.

Редактировать:

Я не собираю этот код в Visual Studio. У нас есть пользовательский сценарий сборки, который работает наружу на Visual Studio. Это только умно, чтобы использовать 1 .NET Compiler. Он использует этот компилятор для компиляции всех проектов в данном решении. Сценарий сборки не заботится, определены ли проекты, которые будут скомпилированы на 3,5 или 4.0. Вместо этого он компилирует их с определенным компилятором.

Проект 1 не справочный проект 2. Проект 2 - это проект, содержащий модульные тесты. Наш автоматический инструмент сборки компилирует проект 2 только для запуска тестов.

Это было полезно?

Решение

РЕДАКТИРОВАТЬ

Op уточнил вопрос о комментариях как

Может ли компилятор 4.0 компилятора Complet 3,5 проекта

Ответ да, это очень возможно.

Другие советы

Щелкните правой кнопкой мыши на вашем проекте «Проект 1» в исследовательском исследовании. Следующий клик Свойства (горячая клавиша Alt + Enter). Под вкладкой приложения появляется «целевая структура». Установите это до 3,5.

Теперь, когда вы компилируете (звучит так, как вы используете командную строку) Msbuild. И не указывайте целевую структуру версии. Просто компилируйте файл решения, и каждый проект будет правильно компитен.

Вы можете столкнуться с проблемами в зависимости от типов библиотек, которые вы используете. В частности, у меня были проблемы с именами пространств имен / классов, которые не существовали в 3.5, которые были реализованы в 4.0.

Если вы делаете что-то эзотерическое, как составить исходный код Nhibernate как часть вашего решения, вы столкнетесь с проблемами. В противном случае, если вы не наступаете на любые пространства имен, у вас не должно быть проблем с компиляцией проекта 3.5 до 4.0.

Что не так с ответом Боба? Вы используете пользовательское решение Build (то есть не Visual Studio)?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top