我有一个自定义的MSBuild任务,它处理一组文件并返回一个修改过的子集。基本上,我只是从输入中创建一个新的ITaskItem数组,跳过一些项目。
但是,当此结果集返回到MSBuild时,RecursiveDir元数据会消失!它仍然在我的自定义任务的Execute()方法结束时使用正确的值但是当我尝试在MSBuild中使用RecursiveDir时,我发现它是空的!当然,这是一个很大的问题!
我该怎么办?这是正常的吗?其他元数据(如文件名和扩展名)仍然存在。身份也指向正确的文件。我不会在自定义任务中以任何方式修改元数据。
我已经看到其他MSBuild任务库也返回ITaskItem数组而没有任何特殊处理。然而没有人遇到过这个问题?奇异!
我正在使用MSBuild 3.5。
答案 0 :(得分:1)
是的,这很正常。你无能为力。我已经完成了MSBuild源代码,显然,进入自定义任务的项目和退出的项目是完全不同的东西。 MSBuild最初创建了自己非常特殊的项目,之后它们变得非常“笨”。
我发现这种情况的解决方案:
答案 1 :(得分:1)
我刚遇到同样的问题。通过将“RecursiveDir”元数据值显式设置为其当前值,我能够成功解决这个“限制”(我认为是MSBuild错误)。
执行此操作后,我的输出ITaskItem[]
保留了该值。