我以前一直在尝试使用MSBuild,但这是我第一次尝试部分构建。我已经完成了一切工作,但并不像我想的那样好。我无法解决这个问题:
Skipping target "BuildLocalizerSetting" because it has no outputs.
Though the target has declared its outputs, the output specification only references empty properties and/or empty item lists.
如果我从目标中删除Inputs
属性,一切正常。我怀疑这与丢失的变换有关,但指定变换实际上是不可能的。
我的设置与典型的构建方案略有不同。我有一个清单文件,其中包含应编译的文件列表。即我从一个输入文件生成项目组中可能很长的项目列表的场景开始。
我已经构建了一个用于解析清单文件的自定义任务,它似乎可以很好地完成任务。虽然我遇到了一个障碍,TaskItem
不允许设置某些众所周知的元数据,例如:"文件名","扩展"," ModifiedTime"等。通过在自定义ITaskItem
类中实现TaskItem
,可以快速解决该问题。我知道脏检查可以正常工作,因为MSBuild确实检测到这些项目已被修改。但现在我想知道...... 我是否有可能因为实施而在某些奇怪的平台上出现构建错误?
但最重要的是,为什么MSBuild不能接受输入已经改变,然后断定输出也发生了变化?
我发现的每个例子都假定输入和输出之间存在一对一的关系,或者多对一关系,但在我的场景中,我会从一个到多个,这可以做到吗?