Ошибка при использовании тега в NAnt

#nant

#nant

Вопрос:

 <?xml version="1.0"?>
 <project name="Project" default="build">
 <property name="program" value="C:Program Files (x86)Microsoft Visual Studio 9.0VCvcvarsall.bat" />
 <property name="name.proj" value="C:projectproj.csproj" />
 <target name="build">
   <exec program="${program}"commandline="devenv.exe ${name.proj}"  />
 </target>
</project>
  

Его вывод….

 Error in Script usage:The Correct usage is:C:Program Files (x86)Microsoft Visual
Studio 9.0VCvcvarsall.bat" [Option], where option= x86,ia64,or x86_ia64. 
  

Но когда я даю параметр x86, он снова выдает ошибку ..»/ является неожиданным токеном»

Пожалуйста, предложите, что делать.

Комментарии:

1. Просто наблюдение, но имеет ли значение, если вы поместите пробел между атрибутом "${program}" и commandline атрибутом в вашем <exec> узле?

Ответ №1:

вы пробовали это:

 <exec program="${program}">
    <arg value="x86" />
</exec>
  

Источник

Ответ №2:

Вы должны делать:

 <exec program="${program}" commandline="x86"  />
  

Я не уверен, почему вы передаете devenv.exe как командная строка. Вероятно, вы захотите сделать это в отдельной задаче exec

Ответ №3:

Вот пример EXEC для получения последней версии из VSS

 <target name="getlatest" >
       <property name="path.cmd.exe" value="C:WINDOWSsystem32CMD.EXE"/>
          <property name="path.vss.bat" value="C:WorkbuildDailyBuildnAntVSSGET.bat"/>

    <echo>
    -----------------------------------------------------------------------------------------------------------------
    -----------------------------------------------------------------------------------------------------------------
    TASK : GET LATEST FROM VSS
    -----------------------------------------------------------------------------------------------------------------
    -----------------------------------------------------------------------------------------------------------------
    </echo>
    <echo message="Task Start at: ${datetime::now()}" />

   <loadtasks assembly="nantcontrib-0.85/bin/NAnt.Contrib.Tasks.dll" />         

    <exec program="${path.cmd.exe}">
        <arg value="/C"  />     
        <arg value="${path.vss.bat}"  />
     </exec>
</target>