在 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 不起作用。
我有以下在 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 不起作用。