我有一个自定义 MSBuild 任务,它处理一组文件并返回该文件的修改子集。基本上,我只是根据输入创建一个新的 ITaskItem 数组,跳过一些项目。
但是,当此结果集返回到 MSBuild 时,RecursiveDir 元数据消失!在我的自定义任务的 Execute() 方法末尾,它仍然具有正确的值,但是当我尝试在 MSBuild 中使用 RecursiveDir 时,我发现它是空的!这当然是一个很大的问题!
我应该怎么办?这是正常的吗?其他元数据(例如文件名和扩展名)仍然存在。身份还指向正确的文件。我不会在自定义任务中以任何方式修改元数据。
我看到其他 MSBuild 任务库也返回 ITaskItem 数组,而无需任何特殊处理。然而没有人遇到过这个问题吗?奇怪!
我正在使用 MSBuild 3.5。
是的,这是正常的。你对此无能为力。我已经彻底浏览了 MSBuild 源代码,显然,进入自定义任务的项目和返回的项目是完全不同的东西。 MSBuild 首先创建自己的非常特殊的项目,后来它们变得明显“愚蠢”。
我针对此类情况找到的解决方案:
- 创建一个包含所有内容的 ItemGroup。
- 创建生成 ItemGroup 的自定义任务与您要删除的文件.
- 使用
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)