Исключение построения "Target" не существует в этом проекте "при вызове NAnt 0.91 из CCNET 1.6 - PullRequest
1 голос
/ 16 сентября 2011

Я реорганизую свои существующие скрипты сборки NAnt, чтобы иметь возможность использовать их практически в любом проекте и получать правильные значения, отправленные из CruiseControl .NET.Однако я столкнулся с проблемой, когда цель не была установлена ​​правильно.

Я определил свой вызов NAnt следующим образом:

  <tasks>
    <nant>
      <executable>$(NAntExecutablePath)</executable>
      <buildFile>D:\ci\default.build.xml</buildFile>
      <!--baseDirectory></baseDirectory-->
      <buildArgs>
        -D:SolutionFile="$(Batch_WorkingFolderTrunk)\MySolution.sln"
        -D:LocalDeployRoot=D:\ci\deploy\MyProject
      </buildArgs>
      <targetList>
        <target>build</target>
      </targetList>
    </nant>
  </tasks>

и мой файл сборки имеетнеобходимые обязательные задачи

  <target name="clean">
    <exec program="${MSBuildPath}">
      <arg line='"${SolutionFile}"' />
      <arg line="/property:Configuration=${SolutionConfiguration}" />
      <arg value="/target:Clean" />
      <arg value="/verbosity:normal" />
      <arg value="/nologo" />
      <arg line='/logger:"${CcnetMsbuildLoggerPath}"' if="${file::exists('${CcnetMsbuildLoggerPath}')}"/>
    </exec>

    <delete>
      <fileset basedir=".">
        <include name="bin\**\*" />
        <include name="TestResults\**\*" />
      </fileset>
    </delete>
  </target>

      <target name="build" depends="clean">

        <delete>
          <fileset basedir="${LocalDeployRoot}">
            <include name="**\*"/>
          </fileset>
        </delete>

        <exec program="${MSBuildPath}">
          <arg line='"${SolutionFile}"' />
          <!--arg line='/property:Configuration="${SolutionConfiguration}"' /-->
          <arg line='/property:OutputPath="${LocalDeployRoot}"' />
          <!--arg line='/property:Platform="${SolutionPlatform}"' /-->
          <arg value="/target:Rebuild" />
          <arg value="/verbosity:normal" />
          <arg value="/nologo" />
          <arg line='/logger:"${CcnetMsbuildLoggerPath}"' if="${file::exists('${CcnetMsbuildLoggerPath}')}"/>
        </exec>
      </target>

Мои сообщения об ошибках:

Целевая структура: Microsoft .NET Framework 4.0 Заданные цели:
build

 [echo] Starting the build script

BUILD FAILED

Цель '' не существует в этом проекте.

Общее время: 0,1 секунды.

Есть идеи?

Я могу успешно запустить скрипт NAnt из командной строки:

D: \ ci> nant-0.91 \ bin \ nant.exe /f:default.build.xml build -D:SolutionFile = "D: \ ci \ code \ MyProject \ MySolution.sln" -D: LocalDeployRoot = D: \ ci \ deploy \ MyProject

1 Ответ

2 голосов
/ 16 сентября 2011

Это ошибка, появившаяся спустя некоторое время после v1.4.4.83.Решением было изменить узел на одну строку.В моей версии версии 1.4.4.83 у меня есть опции buildArgs в отдельных строках для повышения читабельности.

Мое решение было изменить

<buildArgs>
  -D:SolutionFile="$(Batch_WorkingFolderTrunk)\MySolution.sln"
  -D:LocalDeployRoot=D:\ci\deploy\MyProject
</buildArgs>

на

<buildArgs>-D:SolutionFile="$(Batch_WorkingFolderTrunk)\MySolution.sln" -D:LocalDeployRoot=D:\ci\deploy\MyProject</buildArgs>
...