Компиляция проекта .NET 3.5 с использованием компилятора .NET 4.0 - PullRequest
1 голос
/ 27 октября 2010

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

Достаточно ли уместен компилятор .NET 4.0 для компиляции кода 3,5?Project 1 .NET 3.5 (с возможностью развертывания)

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

Примечание: я не могу просто игнорировать Project 2, потому чтонаш автоматизированный сервер сборки запускает модульные тесты в проекте 2. Все тесты должны пройти до успешного завершения сборки.

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

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

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

Ответы [ 3 ]

3 голосов
/ 27 октября 2010

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

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

Может ли компилятор 4.0 скомпилировать проект 3.5

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

2 голосов
/ 27 октября 2010

Щелкните правой кнопкой мыши ваш проект "Project 1" в обозревателе решений.Затем нажмите Свойства (горячая клавиша ALT + Enter).Под вкладкой приложения есть раскрывающийся список «Target Framework».Установите это на 3,5.

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

0 голосов
/ 27 октября 2010

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

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

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

...