Ошибка при выполнении MSBuild из NAnt и указании регистратора - PullRequest
2 голосов
/ 28 сентября 2010

Я пытаюсь выполнить MSBuild из сценария NAnt (который вызывается CruiseControl.NET).Поскольку я вызываю MSBuild из NAnt вместо CC.NET, я хотел бы указать использование XmlLogger, чтобы я мог по-прежнему генерировать отчет MSBuild для CC.NET.Это цель nant, отвечающая за построение нашего решения с помощью MSBuild:

<target name="compile">
    <property name="solution.file" value="${source.dir}\GS3WebSite.sln"/>

    <if test="${not file::exists(solution.file)}">
        <fail message="The solution file (${solution.file}) was not found." />
    </if>

    <mkdir dir="${output.dir}" if="${not directory::exists(output.dir)}" />

    <!-- Specify CC.NET's XML logger -->
    <property name="msbuild.xmllogger"
              value="${ccnet.dir}\ThoughtWorks.CruiseControl.MsBuild.XmlLogger, ThoughtWorks.CruiseControl.MsBuild.dll"/>

    <exec program="${msbuild.dir}\msbuild.exe"
          commandline="${solution.file} /logger:&quot;${msbuild.logger}&quot;"
          workingdir="." failonerror="true" />
</target> 

Когда эта цель выполняется, я получаю следующую ошибку:

[exec] MSBUILD: ошибка MSB1021: Невозможно создатьЭкземпляр регистратора.Не удалось загрузить файл или сборку 'ThoughtWorks.CruiseControl.MsBuild.XmlLogger \, C: \ Program Files \ CruiseControl.NET \ server \ ThoughtWorks.CruiseControl.MsBuild.dll' или одну из ее зависимостей.Указанное имя сборки или кодовая база недопустимы.(Исключение из HRESULT: 0x80131047)

Я думаю, что это происходит из-за обратной косой черты, вставленной перед запятой.Есть ли другой способ указать это?Или мне нужно как-то экранировать запятую?

1 Ответ

1 голос
/ 28 сентября 2010

Я думаю, вы изменили порядок в объявлении регистратора, то есть: AssemblyPath, LoggerName, а не LoggerName, AssemblyPath.Более того, насколько я знаю, вам не нужно указывать класс регистратора, если в сборке есть только один.Так что вы можете попробовать

 <!-- Specify CC.NET's XML logger -->
<property name="msbuild.xmllogger"
          value="${ccnet.dir}\ThoughtWorks.CruiseControl.MsBuild.dll"/>
...