在 msbuild + xbuild 中使用 Microsoft.Build.Tasks

Using Microsoft.Build.Tasks in msbuild + xbuild

我有以下在 windows 构建环境中工作的自定义内联任务:

<UsingTask
    TaskName="Name"
    TaskFactory="CodeTaskFactory"
    AssemblyFile="C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Build.Tasks.v4.0.dll">
    <ParameterGroup>
        ...
    </ParameterGroup>
    <Task>
        <Code Type="Fragment" Language="cs">
            ...
        </Code>
    </Task>
</UsingTask>

我希望它也能与 xbuild 一起使用。这显然行不通,因为路径是 windows 特定的,所以我也尝试使用 AssemblyName="Microsoft.Build.Tasks" 也没有用。

那么我应该如何在我的自定义任务中以对 msbuild 和 xbuild 都适用的方式引用 Microsoft.Build.Tasks

使用 AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v12.0.dll" 解决了问题。

看起来 $(MSBuildToolsPath) 设置为根据 运行 平台的任何合适的设置,因此它将始终有效。另外我必须专门使用 v12.0,v4.0 不起作用。