Принудительный сбой сборки в случае несоответствия версии .net - PullRequest
0 голосов
/ 16 августа 2011

У нас есть несколько приложений, которые все еще должны быть 2.0, потому что они будут работать на клиентских машинах, на которых не будет установлена ​​инфраструктура v3.5, и мы хотим убедиться, что ни один код не будет добавлен, еслипринадлежат.Я знаю, что фреймворк 3.5 включает в себя фреймворк 2.0.Тем не менее, мы пытаемся убедиться, что если кто-то непреднамеренно изменит целевую версию для конкретного проекта с 2.0 на что-то другое, наши автоматические сборки потерпят неудачу.Этого не должно происходить, но мы пытаемся быть очень осторожными.

Мы думали, что может быть какое-то время использовать beforeBuild и, возможно, TargetFrameworkVersion в файле .csproj.Как в «если TargetFrameworkVersion не 2.0, выведите сообщение и завершите сборку».Возможно ли это / лучший способ сделать это?

1 Ответ

3 голосов
/ 16 августа 2011

Звучит так, как будто вы хотите изменить «Целевую платформу» рассматриваемых проектов на .Net Framework 2.0.

Из статьи MSDN «Если вы измените версию .NET Framework, вы можете получить сообщения об ошибках, если ваш код содержит ссылки на другую версию.»

Отличный MSDN, здесь: http://msdn.microsoft.com/en-us/library/bb398202.aspx

Если вы хотите применить версию 2.0 на сервере сборки, измените параметры msbuild, чтобы «переопределить» версию набора инструментов до 2.0. Этот командный переключатель имеет прецедент над файлом настроек проекта и «заставляет все проекты и их зависимости между проектами строить в соответствии с этим ToolsVersion, даже если каждый проект в решении указывает свой собственный». Вот MSDN о том, что такое набор инструментов: http://msdn.microsoft.com/en-us/library/bb383796(v=vs.90).aspx, а вот MSDN о том, как указать переключатель командной строки: http://msdn.microsoft.com/en-us/library/bb383985(v=vs.90).aspx

Если вы используете TFS для ночных сборок, вот как добавить аргумент (я использую VS 2010 Pro):

  1. Перейдите в Team Explorer и разверните проект
  2. Щелкните правой кнопкой мыши элемент сборки
  3. Выберите Новое определение сборки (или отредактируйте существующее определение сборки)
  4. Перейти к процессу
  5. Развернуть "Настройки агента"
  6. Найдите аргументы MsBuild.
  7. Добавьте /tv:2.0 и сохраните изменения сборки, когда вы закончите с другими настройками.

Теперь, даже если файл проекта изменится, сервер сборки перехватит код выше уровня 2.0 и завершится ошибкой. Если вы не используете TFS для сборки, посмотрите, позволяет ли ваш инструмент изменить командную строку msbuild.

...