2012-05-27 3 views
1

의 DMC를 사용 나는 다음과 같은 코드가 있습니다모노 xbuild 대신 gmcs

using System; 
using Microsoft.Build.Framework; 
using Microsoft.Build.Utilities; 

namespace MyTasks 
{ 
    public class SimpleTask : Task 
    { 
      public override bool Execute() 
      { 
        return true; 
      } 
    } 
} 

을 내가 가지고 다음은 MSBuild 스크립트를

그것은 다음과 같은 메시지와 함께 실패
<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Target Name="Build"> 
     <MakeDir Directories= "bin"/> 
     <Csc Sources="SimpleTask.cs" References="Microsoft.Build.Utilities,Microsoft.Build.Framework"  TargetType="library" 
      OutputAssembly=".\bin\SimpleTask.dll" /> 
    </Target> 
</Project> 

:

[email protected]:~/task$ xbuild SimpleTask.proj 
XBuild Engine Version 2.10.8.1 
Mono, Version 2.10.8.1 
Copyright (C) Marek Sieradzki 2005-2008, Novell 2008-2011. 

Build started 5/27/2012 12:08:32 PM. 
__________________________________________________ 
Project "/home/broersa/task/SimpleTask.proj" (default target(s)): 
     Target Build: 
       Tool /usr/bin/dmcs execution started with arguments: /out:./bin/SimpleTask.dll SimpleTask.cs /target:library /reference:Microsoft.Build.Utilities,Microsoft.Build.Framework 
: error CS0006: Metadata file `Microsoft.Build.Utilities' could not be found 
     Task "Csc" execution -- FAILED 
     Done building target "Build" in project "/home/broersa/task/SimpleTask.proj".-- FAILED 
Done building project "/home/broersa/task/SimpleTask.proj".-- FAILED 

Build FAILED. 
Errors: 

/home/broersa/task/SimpleTask.proj (default targets) -> 
(Build target) -> 

     : error CS0006: Metadata file `Microsoft.Build.Utilities' could not be found 

     0 Warning(s) 
     1 Error(s) 

Time Elapsed 00:00:00.4351060 

Xbuild는 dmcs 컴파일러를 호출하지만 Microsoft.Build.Utilites 어셈블리에는 .net 2.0 어셈블리에 대한 참조가 있습니다. gmcs (2.0)를 사용하여 손으로 컴파일 할 때 작동합니다. 하지만 xbuild와 함께 작동시킬 수는 없습니다.

답변

0

Project xml 태그에서 Toolsversion을 2.0으로 설정하십시오.