Как устранить ошибку «Только один проект» из задачи <msbuild>в CruiseControl.NET - PullRequest
5 голосов
/ 22 января 2009

Я пытаюсь использовать задачу в CruiseControl.NET версии 1.3.0.2918 с довольно простым:

  <project name="AppBuilder 1.0 (Debug)">
    <workingDirectory>c:\depot\AppBuilder\1.0\</workingDirectory>
    <triggers/>
    <tasks>
      <msbuild/>
    </tasks>
   </project>

Однако, когда проект запускается, он терпит неудачу с этой информацией в журнале сборки:

MSBUILD: ошибка MSB1008: только один Проект может быть указан. Переключатель: 1.0

Для синтаксиса переключателя введите "MSBuild / Помощь "

Когда я смотрю на файл ccnet.log, я нахожу это:

Запуск процесса [C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ MSBuild.exe] в работе каталог [c: \ depot \ AppBuilder \ 1.0] с аргументами [/ nologo "/ p: CCNetArtifactDirectory = C: \ Program Files \ CruiseControl.NET \ server \ AppBuilder 1.0 (отладка) \ Артефакты; CCNetBuildCondition = ForceBuild; CCNetBuildDate = 2009- 01-22; CCNetBuildTime = 09: 25: 55; CCNetIntegrationStatus = Неизвестно, CCNetLabel = 3; CCNetLastIntegrationStatus = Сбой; CCNetNumericLabel = 3; CCNetProject = AppBuilder 1.0 (отладка); CCNetProjectUrl = http://CISERVER01/ccnet;CCNetRequestSource=jstong; CCNetWorkingDirectory = c: \ depot \ AppBuilder \ 1.0 \ "" /l:ThoughtWorks.CruiseControl.MsBuild.XmlLogger,ThoughtWorks.CruiseControl.MsBuild.dll;C:\ Programme Files \ CruiseControl.NET \ server \ AppBuilder 1.0 (Debug 1.0) Артефакты \ MSBuild-Results.xml "]

из которого я делаю вывод, что msbuild был запущен в правильном рабочем каталоге и что переданная ему командная строка была:

/ nologo "/ p: CCNetArtifactDirectory = C: \ Program Files \ CruiseControl.NET \ server \ AppBuilder 1.0 (отладка) \ Artifacts; CCNetBuildCondition = ForceBuild; CCNetBuildDate = 2009-01-22; CCNetBuildTime = 09: 25: 55 ; CCNetIntegrationStatus = Неизвестный; CCNetLabel = 3; CCNetLastIntegrationStatus = Сбой; CCNetNumericLabel = 3; CCNetProject = AppBuilder 1.0 (отладка); CCNetProjectUrl = http://CISERVER01/ccnet;CCNetRequestSource=jstong; CCNetWorkingDirectory = c: \ depot \ AppBuilder \ 1.0 \ "" /l:ThoughtWorks.CruiseControl.MsBuild.XmlLogger,ThoughtWorks.CruiseControl.MsBuild.dll;C:\ Programme Files \ CruiseControl.NET \ server \ AppBuilder 1.0 (Debug 1.0) Артефакты \ MSBuild-Results.xml "

Если я запускаю это вручную в командной строке, я получаю похожую ошибку.

Мне кажется, что неверная командная строка не передается в исполняемый файл MSBuild.

Можете ли вы определить мою ошибку? Или эта версия CruiseControl.NET (1.3.0.2918) не работает по отношению к задаче?

Ответы [ 4 ]

24 голосов
/ 22 января 2009

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

3 голосов
/ 22 января 2009

Почему твой тег msbuild пуст? Должно быть что-то похожее на:

<msbuild>
  <executable>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe</executable>
  <workingDirectory>C:\dev\ccnet</workingDirectory>
  <projectFile>CCNet.sln</projectFile>
  <buildArgs>/noconsolelogger /p:Configuration=Debug /v:diag</buildArgs>
  <targets>Build;Test</targets>
  <timeout>900</timeout>
  <logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
</msbuild>
1 голос
/ 22 января 2009

Без дополнительных подробностей, поскольку вы, похоже, не указываете файл проекта / решения, который оставляет MSBuild в качестве такового. Если у вас есть более одного файла, который MSBuild может использовать в качестве файла проекта в этом каталоге, что может быть причиной вашей проблемы. У вас есть случайно файлы MSbuild .proj и .sln? Или два файла решения?

0 голосов
/ 16 октября 2013

У меня была похожая проблема, и (что сказал Алекс) удаление моего пространства действительно решило проблему. Однако я столкнулся с другой ситуацией, когда удаление пробела из имени было невозможно. В этом случае добавление кавычек вокруг имени решило проблему для меня.

...