MSBuild在下划线符号之前获取属性子字符串

Ser*_*jev 13 msbuild

在MSBuild中,我有一个属性,其值为Name_Something.我怎样才能获得这个属性的名称.

Jul*_*rau 33

使用MSBuild 4

如果您使用MSBuild 4,则可以使用新的和有光泽的属性函数.

<PropertyGroup>
  <MyProperty>Name_Something</MyProperty>
</PropertyGroup>

<Target Name="SubString">
  <PropertyGroup>
    <PropertyName>$(MyProperty.Substring(0, $(MyProperty.IndexOf('_'))))</PropertyName>
  </PropertyGroup>

  <Message Text="PropertyName: $(PropertyName)"/>
</Target>
Run Code Online (Sandbox Code Playgroud)

使用MSBuild <4

您可以使用RegexReplace任务的MSBuild社区任务

<PropertyGroup>
  <MyProperty>Name_Something</MyProperty>
</PropertyGroup>

<Target Name="RegexReplace">
  <RegexReplace Input="$(MyProperty)" Expression="_.*" Replacement="" Count="1">
    <Output ItemName ="PropertyNameRegex" TaskParameter="Output" />
  </RegexReplace>

  <Message Text="PropertyNameRegex: @(PropertyNameRegex)"/>
</Target>
Run Code Online (Sandbox Code Playgroud)