在对msbuild文件执行导入时,InitialTargets是如何链接的?
当我有一个msbuild文件在对msbuild文件执行导入时,InitialTargets是如何链接的?,msbuild,Msbuild,当我有一个msbuild文件foo.csproj并且我想导入一个共享的proj/目标文件时,属性应该(即正式)如何工作 我在测试MSBUILD 2.0和4.x时看到的是,考虑到以下情况: <Project InitialTargets="TestMain" ...> ... <Import Project="Sub.targets"/> ... <Target Name="TestMain"> <Message Text="Hel
foo.csproj
并且我想导入一个共享的proj
/目标文件时,属性应该(即正式)如何工作
我在测试MSBUILD 2.0和4.x时看到的是,考虑到以下情况:
<Project InitialTargets="TestMain" ...>
...
<Import Project="Sub.targets"/>
...
<Target Name="TestMain">
<Message Text="Hello from Main" />
</Target>
我想依赖此链接行为-是否以某种方式记录了此行为?元素的MSDN页面上记录了InitialTargets
属性的链接行为
从文件中:
如果多个导入的文件定义了InitialTargets,则所有目标
将按照遇到导入的顺序运行
因此,您看到的排序似乎是有文档记录的
此外,该州的文件:
如果导入的项目没有DefaultTargets
属性,
进口项目按进口顺序进行检验,
... . 例如,如果ProjectA导入了ProjectB和ProjectC(在该
订单)和ProjectB导入ProjectD,MSBuild首先查找
在ProjectA、ProjectB、ProjectD上指定的默认目标,
最后是ProjectC
虽然这里讨论的是DefaultTargets
属性,但它暗示*Targets
属性从“main/”importing”项目开始按顺序处理,因此
…按照遇到导入的顺序
这意味着“main”文件只是放在“imports”列表的开头(这就是所观察到的)
<Project InitialTargets="TestSubInit" ...>
...
<Target Name="TestSubInit">
<Message Text="Hello from sub.targets" />
</Target>
TestMain-Target:
Hello from Main
TestSubInit-Target:
Hello from sub.targets