2016-09-16 73 views
0

有我的csproj文件中下面的代碼:UnitTask錯誤嘗試使用Microsoft.Build.Evaluation

<UsingTask TaskName="HelloWorld" TaskFactory="CodeTaskFactory" 
      AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll"> 

    <Task> 
     <!--Microsoft.Build.dll-->    
     <Using Namespace="Microsoft.Build.Evaluation" /> 
     <Code Type="Fragment" Language="cs"> 
     <![CDATA[       
       var p = new Project("$(MSBuildProjectFullPath)"); 
     ]]> 
     </Code> 
    </Task> 
    </UsingTask> 
在我AfterBuild

我這樣稱呼它:

<Target Name="AfterBuild"> 
    <HelloWorld /> 
    </Target> 

我正的錯誤是:

error CS0246: The type or namespace name 'Project' could not be found (are you missing a using directive or an assembly reference?)

參照變種p值=新項目

回答

1

在任務中包含Microsoft.Build參考可以解決該問題。 (該Microsoft.Build.dll參考需要添加到您的項目先)

<Task> 
     <Reference Include="Microsoft.Build"/>  
     <Using Namespace="Microsoft.Build.Evaluation" /> 
     <Code Type="Fragment" Language="cs"> 
     <![CDATA[       
       var p = new Project("$(MSBuildProjectFullPath)"); 
     ]]> 
     </Code> 
    </Task> 
+0

此解決這個問題,謝謝你,我現在得到一個錯誤: System.InvalidOperationException:有相當於項目(以項目項目集合中已存在相同的全局屬性和工具版本,路徑爲「C:\ Users \ stal \ Documents \ Visual Studio 2015 \ Projects \ ConsoleApplication1 \ MyClassLibrary \ MyClassLibrary.csproj」。要將等效項加載到此項目集合中,請先卸載此項目。 – Pacman

+0

@Pacman你可以爲這個問題打開一個新的線程。 –