Тот же файл MSBuild, разные результаты на локальном компьютере и в CCNet

Задний план

Я использую следующее:

  • VS 2012
  • Приложения .NET 4.5, включая приложение MVC4, приложение домена C # и проекты NUnit.
  • Пользовательский файл MSBuild
  • CruiseControl.NET, работающий на сервере сборки

У меня есть следующие цели сборки:

  • Очистить: удаляет каталог buildartifacts
  • Init: создает пустой каталог buildartifacts
  • Compile: компилирует решение.
  • Тест: запускает тесты NUnit
  • Пакет: создает ZIP-пакет для развертывания.
  • Развертывание: развертывание пакета на удаленном сервере IIS.

Проблема

  • Когда я запускаю сборку со своего локального компьютера, она отлично упаковывается и развертывается.
  • Когда CCNet запускает ту же цель сборки, файлы кажутся развернутыми.

Попытки решения проблемы / потенциальные клиенты

  • Я запускал одну и ту же цель в PowerShell с обеих машин и не видел ошибок или предупреждений ни на одном из них.
  • Поскольку я приказываю CCNEt переопределить фреймворк, чтобы он указывал на файлы .NET 4.5, которые я скопировал на сервер сборки, я сделал так, чтобы мой локальный компьютер указывал на те же файлы при запуске MSBuild, но моя локальная сборка все еще работала и развертывалась.
  • В Visual Studio я удостоверился, что все файлы содержимого помечены действием сборки «Содержимое» и параметром «Копировать в вывод» «Всегда копировать».

Код

  • Доступно в основном по адресу https://gist.github.com/53ef2a63931d190593f6
  • (файл был очищен, имя приложения и учетные данные заменены и т. д.)

person SeanKilleen    schedule 11.12.2012    source источник


Ответы (1)


Оказывается, это была совершенно не связанная с этим проблема.

Проведя сравнение обоих журналов сборки, я заметил, что рабочая копия сервера сборки содержит старые файлы, которых больше не существует. Это привело меня к выводу, что проблема заключалась в том, что репозиторий не обновлялся.

CCNet получал ошибку подрывной деятельности, которая не регистрировалась как ошибка. В результате я никогда не получал последнюю версию репозитория, поэтому все файлы были повреждены.

Ошибка связана с этим Вопрос о StackOverflow относительно ошибки sqlite при попытке использовать tortoisesvn для обновления. В моем случае решением было просто удалить рабочую копию сервера сборки, воссоздать папку и выполнить проверку svn.

person SeanKilleen    schedule 11.12.2012