在msbuild中从CallTarget获取输出的正确方法是什么?我尝试过这样的事情(请参阅CoreOutput
中的EnumsOutput
和CallTarget
):
<Target Name="TerrainEngine" Outputs="$(GeneratedAssembly)">
<Message Text="Core0: $(CoreOutput)" />
<Message Text="Enum0: $(EnumsOutput)" />
<CallTarget Targets="Core" >
<Output TaskParameter="TargetOutputs" PropertyName="CoreOutput"/>
</CallTarget>
<Message Text="Core1: $(CoreOutput)" />
<Message Text="Enum1: $(EnumsOutput)" />
<CallTarget Targets="Enums" >
<Output TaskParameter="TargetOutputs" PropertyName="EnumsOutput"/>
</CallTarget>
<Message Text="Core2: $(CoreOutput)" />
<Message Text="Enum2: $(EnumsOutput)" />
<ItemGroup>
<RefsList Include="$(CoreOutput)" />
<RefsList Include="$(EnumsOutput)" />
</ItemGroup>
<PropertyGroup>
<Refs>@(RefsList)</Refs>
</PropertyGroup>
<Message Text="ModuleDir!!!!: $(Refs)" />
<MSBuild Projects="$(MSBuildProjectFullPath)"
Targets="CreateModule"
Properties="ModuleDir=BigMaps;
RefAssemblies=$(UnityLibsPath)/UnityEngine.dll;
RefModules=$Refs">
<Output TaskParameter="TargetOutputs" PropertyName="GeneratedAssembly"/>
</MSBuild>
</Target>
由于某种原因,第二个CallTarget使两个变量无效。我得到这样的输出:
Core0:
Enum0:
Core1: modules/Core.mobule
Enum1:
Core2:
Enum2: modules/Enums.mobule
据我所知,这是由于msbuild逻辑中的一些错误(这是我在网上阅读时的印象)。
你能告诉我如何解决它吗?
我读过我应该使用DependsOnTargets
代替,但我无法弄清楚如何从这些中获取输出。这可能吗?