MSBuild-如何从PropertyGroup访问目标的属性

时间:2018-06-18 20:21:09

标签: msbuild

我正在尝试从PropertyGroup访问Foo Target的“VersionString”属性。有没有办法做到这一点?

<Target Name="Foo">
 <ItemGroup>
  <Assembly Include="Foo.exe" />
 </ItemGroup>

 <MSBuild.ExtensionPack.Framework.Assembly TaskAction="GetInfo" 
       NetAssembly="@(Assembly)">
   <Output TaskParameter="OutputItems" ItemName="Info"/>
 </MSBuild.ExtensionPack.Framework.Assembly>

 <MSBuild.ExtensionPack.Framework.TextString TaskAction="Substring" 
       OldString="%(Info.AssemblyVersion)" StartIndex="0" Count="5">
   <Output PropertyName="VersionString" TaskParameter="NewString"/>
 </MSBuild.ExtensionPack.Framework.TextString>
</Target>

<PropertyGroup>
 <FooVersion>
  $(VersionString)
 </FooVersion>
</PropertyGroup>

1 个答案:

答案 0 :(得分:0)

只有在目标和特定任务运行后,该属性才可用。

这意味着您只能在运行创建属性的任务之后运行的目标内的属性组中访问它。您的示例尝试从静态属性组访问它,该静态属性组在运行任何目标之前进行评估,因此该属性尚未设置。