Вопрос

Похоже, есть (по крайней мере) два варианта заставить Nant использовать файлы csproj:используя задачу NAntContrib или напрямую используя msbuild.exe (например, кодкемпсервер).Правильно ли я понимаю, и если да, то в чем преимущество использования msbuild.exe перед задачей NAntContrib?

Это было полезно?

Решение

NAntContrib предполагает наличие .NET Framework версии 2.0.Если вы хотите использовать .NET 3.5, вам нужно будет напрямую вызвать MsBuild.exe.При обновлении до новых версий .NET вам нужно только изменить свойство MSBuildPath.

Вот пример:

<property name="MSBuildPath" value="C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe"/>    
<target name="build">
    <exec program="${MSBuildPath}">
        <arg line='"${SolutionFile}"' />
        <arg line="/property:Configuration=${SolutionConfiguration}" />
        <arg value="/target:Rebuild" />
        <arg value="/verbosity:normal" />
        <arg value="/nologo" />
        <arg line='/logger:"C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll"'/>
    </exec>
</target>

Значение MSBuildPath для разных версий .NET

  • 2.0, 3.0 C:\Windows\Microsoft.NET\Framework64\v2.0.50727\MSBuild.exe
  • 3.5 C:\Windows\Microsoft.NET\Framework64\v3.5\MSBuild.exe
  • 4, 4.5.х, 4.6.х, 4.7.х C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe

Для 32-битной сборки измените Framework64 к Framework

ОбновлятьВ ответ на некоторые комментарии, value Атрибут используется для параметров, не имеющих пробелов. line используется для параметров, которые необходимо разделить пробелами.В противном случае приложение будет использовать пробел как конец ввода.

Другие советы

Вот простая цель

    <target>

    <loadtasks assembly="${nant::get-base-directory()}/../../nantcontrib-0.85/bin/NAnt.Contrib.Tasks.dll" />

    <msbuild project="${filepath.root}/yourproject.csproj" verbose="true">     
          <arg value="/p:Platform=${build.platform}" />
          <arg value="/t:Rebuild" />
          <arg value="/p:OutputPath=${build.dir}/bin/" />
        </msbuild>

 </target>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top