当我有一个msbuild文件foo.csproj
并且我想Import
一个共享的proj
/ targets
文件时,Project.InitialTargets
属性是怎样的?假设(即正式)表现?
我在测试MSBUILD 2.0和4.x时看到的是,给出以下内容:
<Project InitialTargets="TestMain" ...>
...
<Import Project="Sub.targets"/>
...
<Target Name="TestMain">
<Message Text="Hello from Main" />
</Target>
和
<Project InitialTargets="TestSubInit" ...>
...
<Target Name="TestSubInit">
<Message Text="Hello from sub.targets" />
</Target>
然后InitalTargets
按包含顺序链接,即首先输出为:
TestMain-Target:
Hello from Main
TestSubInit-Target:
Hello from sub.targets
我想依靠这种链接行为 - 这是以某种方式记录的吗?
答案 0 :(得分:1)
在<Project>
元素的MSDN页面上记录了InitialTargets
属性的链接行为。
从文档中:
如果多个导入的文件定义了InitialTargets,则所有目标 提到的将按遇到导入的顺序运行。
因此,您看到的订购似乎已记录在案。
此外,Import
element状态的文档:
如果导入的项目没有
DefaultTargets
属性, 导入的项目按照导入的顺序进行检查, ……例如,如果 ProjectA导入 ProjectB和ProjectC(在 订单),然后ProjectB导入ProjectD,MSBuild 第一眼 在ProjectA上依次,然后在ProjectB ,然后在ProjectD上指定DefaultTargets, 最后是ProjectC。
虽然讨论了DefaultTargets
属性,但这提示*Targets
属性从“ main /” importing”项目开始就按顺序进行处理,因此
...按照遇到导入的顺序
然后将意味着“主”文件仅位于“导入”列表的开头。 (观察到的是什么。)