Подтвердить что ты не робот

<msbuild> или msbuild.exe с NAnt?

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

4b9b3361

Ответ 1

NAntContrib предполагает .NET Framework V2.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.5.1, 4.5.2 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe

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

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

Ответ 2

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

    <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>