1

Я унаследовал существующий проект с неудачной сборкой. Я могу видеть исключение в файле ccnet.log:CruiseControl.Net жалуется на xml

Exception: System.Xml.XmlException: Name cannot begin with the '%' character, hexadecimal value 0x25. Line 17, position 100. 
    at System.Xml.XmlTextReaderImpl.Throw(Exception e) 
    at System.Xml.XmlTextReaderImpl.Throw(String res, String[] args) 
    at System.Xml.XmlTextReaderImpl.Throw(Int32 pos, String res, String[] args) 
    at System.Xml.XmlTextReaderImpl.ParseQName(Boolean isQName, Int32 startOffset, Int32& colonPos) 
    at System.Xml.XmlTextReaderImpl.ParseElement() 
    at System.Xml.XmlTextReaderImpl.ParseDocumentContent() 
    at System.Xml.XmlTextReaderImpl.Read() 
    at System.Xml.XmlWriter.WriteNode(XmlReader reader, Boolean defattr) 
    at ThoughtWorks.CruiseControl.Core.Util.XmlFragmentWriter.WriteNode(XmlReader reader, Boolean defattr) 
    at ThoughtWorks.CruiseControl.Core.Util.XmlFragmentWriter.WriteNode(String xml) 

Любая идея, какой файл XML это и как я могу это исправить? Досадно, что сборка становится красной, но она не добавляется на последнюю страницу сборки.

EDIT Поясню: это происходит в конце сборки, вероятно, когда он пытается создать XML-отчет сборки или что-то (я отключил все объединить издателей)

+0

Вы получили что-нибудь с этим? –

ответ

1

Наконец удалось найти вопрос: строить используется NANT сделать большую часть задачи и Нан был настроен неправильно:

  • Он был настроен записывать всю информацию отладки
  • log4net сконфигурирован для входа что-то в <> скобки в nant.exe.config

Так билд неудачу, когда CCNET пытался объединить выход NANT с выходом сборки.

Большое спасибо всем за помощь!

+0

Рад, что вы получили ее работу. –

0

Скорее всего ccnet.config в каталоге установки CC.NET.

+0

попробуйте найти строку 17, позиция 100 в ccnet.config –

+0

Я действительно не думаю, что ее ccnet.config, потому что эта ошибка происходит в конце сборки (извините, я добавлю его на вопрос) – Grzenio

1

Я не уверен, что это ваш ccnet.config файл, из-за кадра стека:

System.Xml.XmlWriter.WriteNode 

... Я не верю, что CC.NET пишет обратно в свой собственный ccnet.config файл. Это, вероятно, происходит во время сборки, нет?

Трудно сказать, какой файл он использует из вашей трассировки стека. Было ли больше кадров стека выше?

Независимо файл XML это есть проблема по крайней линии 17, строка 100.

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

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

EDIT

Мне пришло в голову, что этот вопрос, вероятно, связано со слиянием файлов с помощью шага издателя. В вашем файле ccnet.config есть шаг, который происходит в конце сборки, в которой CC объединяет несколько файлов, обычно файлы XML, и создает один более крупный XML-документ, из которого создается веб-панель. Я предполагаю, что один из файлов, которые вы объединяете, содержит этот паразитный символ, и шаг слияния не работает.

В моем файле конфигурации, шаг в вопросе выглядит примерно так:

<publishers> 
    <merge> 
    <files> 
     <file>E:\Blah\Cruise Reports\*.xml</file> 
    </files> 
    </merge> 
    .... 

Посмотрите в эту папку и проверьте % характера где-то, что это не должно быть. Возможно, вы всасываете какой-то файл, который вообще не является XML.

+0

к сожалению это единственное сообщение об ошибке, которое я получаю :(Итак, какие файлы я должен пытаться посмотреть? Где находится файл статистики? Любые другие файлы, на которые я мог бы смотреть? – Grzenio

+0

В моих сборках статистика хранится в файле report.xml и он хранится в родительской папке сборщиков. Попробуйте открыть этот файл и посмотреть, как он выглядит на хвосте. Кроме того, если у вас есть несколько сборок, это происходит для всех из них? –

+0

Привет, наконец, я получил его (см. мой ответ), мне потребовались годы, чтобы найти, CCNet может дать более значимую ошибку tbh. – Grzenio

0

Следует отметить, что если вы задаете задачи сборки в проекте круиз-контроля, вам не нужно специально указывать ему, чтобы объединить вывод - он обрабатывается автоматически. Один из методов отладки - начать с комментирования всех задач, кроме первого. Если эта сборка завершается успешно, раскомментируйте следующую задачу и повторите попытку. В конечном итоге вы найдете задачу, которая терпит неудачу, и продолжит отладку оттуда.