Я пытаюсь выполнить 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:"${msbuild.logger}""
workingdir="." failonerror="true" />
</target>
Когда эта цель выполняется, я получаю следующую ошибку:
[exec] MSBUILD: ошибка MSB1021: Невозможно создатьЭкземпляр регистратора.Не удалось загрузить файл или сборку 'ThoughtWorks.CruiseControl.MsBuild.XmlLogger \, C: \ Program Files \ CruiseControl.NET \ server \ ThoughtWorks.CruiseControl.MsBuild.dll' или одну из ее зависимостей.Указанное имя сборки или кодовая база недопустимы.(Исключение из HRESULT: 0x80131047)
Я думаю, что это происходит из-за обратной косой черты, вставленной перед запятой.Есть ли другой способ указать это?Или мне нужно как-то экранировать запятую?