MSBuild-如何访问目标';属性组中的属性

MSBuild-如何访问目标';属性组中的属性,msbuild,Msbuild,我试图从PropertyGroup访问Foo目标的“VersionString”属性。有办法做到这一点吗 <Target Name="Foo"> <ItemGroup> <Assembly Include="Foo.exe" /> </ItemGroup> <MSBuild.ExtensionPack.Framework.Assembly TaskAction="GetInfo" NetAssembly="@(As

我试图从PropertyGroup访问Foo目标的“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>

$(版本字符串)

该属性仅在目标和特定任务运行后才可用

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