在CC.NET中将预处理器常量“传递”到预定义块的首选方法是什么?
假设我有以下声明:
<cb:define name="ProjectHeaderBlock">
<name>$(ProjectName)</name>
<workingDirectory>C:\MyProjects\$(ProjectName)</workingDirectory>
</cb:define>
<cb:define name="ProjectBlock">
<project>
<cb:ProjectHeaderBlock />
<triggers />
<tasks />
<publishers />
</project>
</cb:define>
我可以通过两种方式传递 ProjectName 常量:
使用cb:scope
<cb:scope ProjectName="FooProject" >
<cb:ProjectBlock />
</cb:scope>
直接传递声明
<cb:ProjectBlock ProjectName="FooProject" />
它们都正常工作,内部 ProjectHeaderBlock 已使用正确的 ProjectName 值进行初始化。
这两个选项之间有什么区别吗?哪一个更好/更有效?
答案 0 :(得分:4)
你是对的:他们同时工作。我所知道的唯一功能差异是scope
元素中定义的预处理器容量是可覆盖的,即它们可能会在以后重新定义。
我使用scope
定义的预处理器常量来设置我必须覆盖的默认值。
我个人更喜欢第二个版本,因为它避免了在你的xml中嵌套。