输出MSBuild变量时出现问题
我试图将变量从一个目标输出到启动它的父目标。比如说, 目标1只是调用文件2中的任务,并且应该能够使用其中的变量集。然而,我似乎无法让它工作(可能语法错误?)。目标1如下所示:输出MSBuild变量时出现问题,msbuild,msbuild-task,Msbuild,Msbuild Task,我试图将变量从一个目标输出到启动它的父目标。比如说, 目标1只是调用文件2中的任务,并且应该能够使用其中的变量集。然而,我似乎无法让它工作(可能语法错误?)。目标1如下所示: <Target Name="RetrieveParameter"> <MSBuild Projects="$(MSBuildProjectFile)" Targets="ObtainOutput" /> <Message Text="Output = $(OutputVar)"
<Target Name="RetrieveParameter">
<MSBuild Projects="$(MSBuildProjectFile)" Targets="ObtainOutput" />
<Message Text="Output = $(OutputVar)" />
</Target>
目标2是读取文本文件的值并将其设置为属性并将变量“OutputVar”设置为匹配的位置。这应该返回给家长
<Target Name="ObtainOutput" Outputs="$(OutputVar)">
<ReadLinesFromFile File="output.txt">
<Output TaskParameter="Lines"
PropertyName="OutputVar" />
</ReadLinesFromFile>
</Target>
我对MSBuild任务非常陌生,因此它很可能是显而易见的。我只想在一个任务中设置一个变量,然后在调用该变量的父任务中使用该变量。您必须使用
MSBuild
任务的targetOutput
:
<Target Name="RetrieveParameter">
<MSBuild Projects="$(MSBuildProjectFile)" Targets="ObtainOutput">
<Output TaskParameter="TargetOutputs" ItemName="OutputVar"/>
</MSBuild>
<Message Text="Output = @(OutputVar)" />
</Target>
(有关的详细信息。),但未解释其正确性
由于您不熟悉MSBuild任务,我将解释为什么Julien的答案是正确的
MSBuild中的所有任务都有参数-您将知道它们是放置在任务上的属性。这些参数中的任何一个都可以通过将输出
元素放在其中来读取。Output
元素有三个可以使用的属性:
- TaskParameter—这是要获取的任务属性/参数的名称
- ItemName-这是要将该参数值放入的itemgroup
- PropertyName-这是要将该参数值放入的属性的名称
Output
元素来捕获值,否则它们将被丢弃
请注意,您可以在一个任务下放置多个Output
元素以捕获多个参数,或者只需将相同的值设置为多个属性/项目组