CruiseControl.Проблема со сборкой Net и NAnt
-
03-07-2019 - |
Вопрос
Я настраиваю сервер CruiseControl.net в первый раз.Моя команда уже использует скрипты сборки NAnt, поэтому мы просто указываем серверу на скрипты и позволяем NAnt выполнять всю работу.
Как вы можете видеть, это довольно просто:
<project name="ChannelIP">
<tasks>
<nant>
<executable>C:\Program Files\nant-0.86-beta1\bin\nant.exe</executable>
<baseDirectory>D:\mypath</baseDirectory>
<buildFile>D:\mypath\myNAnt.build</buildFile>
<targetList>
<target>build</target>
</targetList>
</nant>
</tasks>
</project>
Проблема в том, что когда я запускаю его под CC, я получаю следующую ошибку:
Сбой вызова функции.Выражение:${фреймворк::get-framework-directory('net-3.5')}/msbuild.exe
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Microsoft .NET Framework 3.5 (net-3.5) не установлен или настроен неправильно .Ссылка на объект не установлена на экземпляр объекта.
На самом деле я использую переменную ${framework::get-framework-directory('net-3.5')}, чтобы получить путь к msbuild.exe;однако этот код никогда раньше не давал сбоев.Я даже могу подключиться по протоколу RDP к серверу, используя учетную запись пользователя, под которой работает CC, и напрямую запустить файл сборки NAnt, и он работает просто отлично.
Почему этот в остальном прекрасный файл выходит из строя только тогда, когда CC запускает его.
ПРИМЕЧАНИЕ -CC запущен на том же компьютере, с которого я обычно запускаю скрипты сборки
Решение
Это звучит как проблема NAnt, были некоторые проблемы с ним и .NET 3.5.Какую версию NAnt вы используете?
Кроме того, видели ли вы Использование 0.86 beta 1 для .NET 3.5?У парня такое же сообщение об ошибке, выданное NAnt.Предлагаемое решение состояло в том, чтобы использовать последнюю сборку nightly.
Другие советы
Служба CC, вероятно, запущена не под учетной записью с соответствующими разрешениями.Вы пробовали запускать CC с помощью командной строки (которая будет запускаться от имени вошедшего в систему пользователя), чтобы узнать, есть ли у вас такая же проблема?