Сделайте так, чтобы задача CruiseControl.NET MSBuild работала так же, как VS 2008 Build - PullRequest
0 голосов
/ 24 сентября 2010

Это похоже на эти 2 вопроса:

Почему MSBuild терпит неудачу из командной строки, где VS2008 успешно работает?

Как получить сборку cmdкоманда для решения VS?

При сборке из Visual Studio 2008 сборка завершается успешно.Если я выполняю сборку из командной строки, используя MSBuild, поставляемый с установкой .NET Framework 3.5, она обычно дает сбой.Однако, если я использую командную строку Visual Studio 2008, которая устанавливается вместе с VS2008, она завершается успешно.Ответы (которые я только частично понял) на первые два вопроса, с которыми я связался, кажутся причиной того, что это не получается из командной строки.Мой вопрос относится к CruiseControl.NET.Как я могу применить их ответы, чтобы задача CruiseControl.Net MSBuild всегда была успешной даже после будущих изменений, если она правильно собирается в VS 2008?

Заранее спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 26 сентября 2010

ИМХО, если вы не можете заставить ваше приложение выполнить чистую сборку из командной строки, я бы предложил исправить эту проблему, а не исправлять ее симптомы.

Вот что я сделал, чтобы решитьпохожая проблема, но с использованием VS2010:

Установлен VS2010 Pro на сервере сборки

Из командной строки на моем сервере сборки я запустил msbuildФайл проекта .sln:

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild \\build-share\dev\projects\TestProject\trunk\TestProject.sln /t:Rebuild /v:diag /p:Configuration=Release

Примечание: \ build-share \ - это сетевой файловый ресурс, используемый только для сборок.

Как только это сработалохотел, я добавил задачу в свой ccnet.config:

<project ...>
  ...
  <tasks>
    ...
    <msbuild>
      <executable>c:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe</executable>
      <workingDirectory>\\build-share\dev\projects\TestProject\trunk</workingDirectory>
      <projectFile>TestProject.sln</projectFile>
      <buildArgs>/p:Configuration=Release /v:diag /t:rebuild</buildArgs>
      <timeout>300</timeout>
    </msbuild>
    ...
  </tasks>
</project>
0 голосов
/ 25 сентября 2010

Первым шагом является правильная сборка проекта с использованием MSBuild из командной строки.Для меня это был вопрос установки некоторых недостающих зависимостей на CI-сервере, которые я сейчас перечислю.

1) Мне нужно было загрузить и установить Power Toys для Compact Framework 3.5, чтобы можно было создавать .NET Compact Framwork 3.5.проект.В качестве альтернативы я мог бы установить Visual Studio 2008 Professional Edition.

2) Мне не хватало SQL Server Compact 3.5.После загрузки и установки для Windows Mobile зависимость все еще не может быть найдена.Я решил эту проблему, включив копию файла SqlServerCe.dll в хранилище моего проекта и изменив все ссылки на этот файл, чтобы использовать тот, который был загружен из хранилища, вместо того, чтобы ожидать, что система узнает, где найти этот файл.В качестве альтернативы установка Visual Studio 2008 Professional Edition могла бы решить эту проблему без необходимости включать копию dll в мой репозиторий, но я точно не знаю.

Поскольку я получил свой проект для компиляциииспользуя MSBuild из командной строки без необходимости какой-либо специальной инициализации или использования каких-либо специализированных командных запросов, задача MSBuild в CruiseControl.Net работает без каких-либо особых действий.Надеюсь, что использование MSBuild из командной строки будет для меня таким простым, но другим, похоже, не так повезло в соответствии с двумя вопросами, с которыми я столкнулся в верхней части моего вопроса.

...