Подстрока в PropertyGroup в подпрограммах msbuild не работает, когда свойство передается в качестве аргумента msbuild - PullRequest
0 голосов
/ 31 мая 2018

В моем файле props я передаю BUILD_VERSION в dotnet msbuild, используя свойства как /p:BUILD_VERSION=1.2.3.4.Тем не менее, я получаю ошибки при выполнении Substring операции со свойством BuildVersion, которое получает значение от: BUILD_VERSION.

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <IntermediateOutputPath>./obj/</IntermediateOutputPath>
    <BuildVersion>$(BUILD_VERSION)</BuildVersion>
    <InformationalVersion>$(BuildVersion)</InformationalVersion>
    <BuildMajorVersion>$([System.String]::Concat($(BuildVersion.Substring(0, $(BuildVersion.IndexOf('.')))), ".0.0.0"))</BuildMajorVersion>
    <AssemblyVersion>$(BuildMajorVersion)</AssemblyVersion>
    <AssemblyFileVersion>$(BuildMajorVersion)</AssemblyFileVersion>
  </PropertyGroup>

Ошибка, которую я получаю: """.Substring(0,-1)" length should be inside the string

Я проверил, что BUILD_VERSION присутствует, напечатав в нем Message.

  <Target Name="SetBuildVersions" BeforeTargets="BeforeBuild">
    <Message Importance="High" Text="BUILD_VERSION=$(BUILD_VERSION)"/>
  </Target>

Он печатает BUILD_VERSION=1.2.3.4.

Если я хардкод <BuildVersion>1.2.3.4</BuildVersion> вместо <BuildVersion>$(BUILD_VERSION)</BuildVersion> ниже, это работает.

Если я использую код Substring внутри Target, это работает:

  <Target Name="SetBuildVersions" BeforeTargets="BeforeBuild">
    <PropertyGroup>
      <InformationalVersion>$(BuildVersion)</InformationalVersion>
      <BuildMajorVersionOnly>$([System.String]::Concat($(BuildVersion.Substring(0, $(BuildVersion.IndexOf('.')))), ".0.0.0"))</BuildMajorVersionOnly>
      <AssemblyVersion>$(BuildMajorVersionOnly)</AssemblyVersion>
      <AssemblyFileVersion>$(BuildMajorVersionOnly)</AssemblyFileVersion>
    </PropertyGroup>
  </Target>

Почему я не могу использовать Substring внутри обычного PropertyGroup при передаче BUILD_VERSION в качестве аргумента свойства в msbuild?

...