Обзор
Я работаю над сборкой приложения MFC для непрерывной интеграции через CruiseControl.net и VS2010.При сборке моего .sln работает задача CCNet "Visual Studio" (<devenv/>
), но простой скрипт-оболочка MSBuild (см. Ниже), запускаемый через задачу CCNet <msbuild/>
, завершается ошибкой, например:
- ошибка RC1015: невозможно открыть файл включения 'winres.h' ..
- ошибка C1083: невозможно открыть файл включения: 'afxwin.h': такого файла или каталога нет
- ошибка C1083:Не удается открыть включаемый файл: 'afx.h': такого файла или каталога нет
Вопрос
Как настроить среду сборки моей оболочки msbuildчтобы приложение строилось правильно?(Совершенно очевидно, что пути MFC не подходят для среды msbuild, но как мне исправить это для MSBuild + VS2010 + MFC + CCNet?)
Справочная информация
- Мы успешно обновили приложение MFC (.exe с некоторыми расширениями MFC .dll) до Visual Studio 2010 и можем без проблем скомпилировать приложение на компьютерах разработчиков.
- Сейчас я работаю над компиляцией приложения в среде сервера CI.
- Я выполнил полную установку VS2010 (Professional) на сервере сборки.Таким образом, я знал, что все, что мне нужно, будет на компьютере (так или иначе), и это будет соответствовать машинам разработчика.
- VS2010 правильно установлен на сервере CI, и задача devenv работаеткак и ожидалось
- Теперь у меня есть сценарий-оболочка MSBuild, который выполняет расширенную обработку версий, а затем создает файл .sln для приложения с помощью задачи MSBuild.
- Этот скрипт-обертка запускается через задачу CCNet MSBuild и завершается ошибкой с вышеупомянутыми ошибками
Simple MSBuild Wrapper
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Build">
<!-- Doing some versioning stuff here-->
<MSBuild Projects="target.sln"
Properties="Configuration=ReleaseUnicode;Platform=Any CPU;..." />
</Target>
</Project>
Мои предположения
- Похоже, что отсутствует / неверная конфигурация путей включения к стандартным ресурсам заголовка MFC убеждения
- Я должен быть в состоянии принудитьСреда MSBuild для рассмотрения соответствующих файлов ресурсов из моей установки VS2010 и использования этого подхода.
- Учитывая поддержку msbuild vs2010 для проектов Visual C ++ (.vcxproj), не следует, чтобы сборка решения была очень близка к компиляции черезvisual studio?
Но как мне это сделать?Я устанавливаю переменные среды?Настройки реестра?Я вижу, как в некоторых случаях можно добавить дополнительные каталоги, но для этого требуется более системная конфигурация на уровне значений по умолчанию компилятора.
Обновление 1
Это, по-видимому, происходит только в двух случаях: компиляция ресурсов (rc.exe) и компиляция предварительно скомпилированных заголовков (stdafx.h) и толькодля определенных проектов?Я думал, что это было по всем направлениям, но на самом деле, похоже, только в этих случаях.Думаю, я буду продолжать копать и надеюсь, что у кого-то есть понимание, которым они будут готовы поделиться ...
Решение
Я сделал две корректировки, чтобы заставить это работать.Первым было извлечь сторонний проект из моего решения и построить его самостоятельно (в нем было много ошибок).Зарегистрировав его в двоичном коде для управления исходным кодом (как и во многих других сторонних библиотеках), я связался с ним без проблем.Однако, как многие отмечают, это было всего лишь предотвращением проблемы.
Вторая часть решения была случайно найдена, но явно подразумевается контрольным списком предложения У. Крейга Трейдера.То есть я вручную перенес исходный код в свой рабочий каталог на сервере и вручную построил решение в Visual Studio.Независимо от существовавшей проблемы пути / среды / состояния конфигурации была устранена фактическая загрузка Visual Studio для этого пользователя службы ccnet.Это, безусловно, имеет смысл в ретроспективе.