문제

Nant가 CSPROJ 파일을 사용하도록하는 두 가지 옵션이있는 것처럼 보입니다. nantcontrib 또는 msbuild.exe 사용 (예 : Codecampserver). 내가이 권리를 읽고 있습니까? 그렇다면 nantcontrib 작업을 통해 msbuild.exe를 사용하면 어떤 이점이 있습니까?

도움이 되었습니까?

해결책

nantcontrib는 .NET 프레임 워크 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.x, 4.6.x, 4.7.x 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