2010-08-18 6 views
2

team city를 사용하여 nant 스크립트를 호출합니다. 현재이 nant 스크립트는 매우 단순하며 솔루션의 단일 프로젝트에서만 msbuild 작업을 호출합니다.잘못된 버전의 csc.exe를 호출하는 MSBuild

빌드가 실패했습니다. msbuild 3.5가 호출되고 있지만 .net 2.0 폴더에서 csc.exe를 잘못 호출하고있는 것 같습니다. .net 3.5 언어 기능을 사용하기 때문에 컴파일이 실패합니다.

csproj 파일을 보면 ToolsVersion과 TargetFrameworkVersion이 둘 다 3.5로 설정되어 있습니다. msbuild가 csc.exe의 잘못된 버전을 선택하게하는 원인은 무엇입니까?

답변

1

경로에 csc 2.0 버전이 있습니까?

Visual Studio 2008 명령 프롬프트에서 msbuild을 실행하면 어떻게됩니까?

<!-- Initial path to use MSBuild from .NET Framework 3.5 --> 
<property name="MSBuildApp" value="C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe" /> 

을 그리고 msbuild를 통해 빌드를 실행합니다 :

+0

경로에 아무것도 없다. 서버에서 msbuild를 실행하면 정상적으로 실행됩니다. 어딘가에 단서가 있습니다. 흠, 나는 teambuy 또는 nant이고 msbuild가 아닐 것입니다. – ilivewithian

0

직접 당신이 선언 NANT 스크립트에서 사용 할 msbuild를 가리킬 수 있습니다

<exec failonerror="true" program="${MSBuildApp}" verbose="true"> 
     <arg value="${SlnDir}\${SlnFile}" /> 
     <arg value="/t:Rebuild" /> 
     <arg value="/p:Configuration=${SlnConfig}" /> 
    </exec> 

또는 적절한 .NET 프레임 워크를 가리킬 수 있습니다 NANT 스크립트 실행시 버전 :

nant CreateYouProjectTask -t : net-3.5 -buildfile : BuildYourProject.build

6

MSBuild는 작업, 대상 및 도구의 도구 집합을 사용하여 응용 프로그램을 작성합니다. 일반적으로 MSBuild Toolset에는 microsoft.common.tasks 파일, microsoft.common.targets 파일 및 csc.exe 및 vbc.exe와 같은 컴파일러가 포함되어 있습니다. MSBuild가 올바른 C# 컴파일러 (csc.exe)를 호출하도록하려면 프로젝트 파일의 Project 요소에서 ToolsVersion 속성에 Toolset을 지정하십시오. 다음 예제에서는 MSBuild 4.0 Toolset을 사용하여 프로젝트를 빌드하도록 지정합니다. ToolsVersion 특성에 관한

<Project ToolsVersion="4.0" ... </Project>

자세한 내용은 여기에서 찾을 수 있습니다 : 이 http://msdn.microsoft.com/en-us/library/78f4aasd.aspx

관련 문제