尝试使用Microsoft.Build.Evaluation时出现UnitTask错误

时间:2016-09-16 18:46:25

标签: visual-studio msbuild

在我的CSProj文件中包含以下代码:

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

我得到的错误是:

  

错误CS0246:类型或命名空间名称&#39;项目&#39;无法找到   (您是否缺少using指令或程序集引用?)

参考var p = new 项目

1 个答案:

答案 0 :(得分: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>