MsBuild TransformXml приводит к «ошибке: не удалось записать файл назначения: недопустимые символы в пути» - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь написать код MsBuild для преобразования моих веб-настроек, используя разные файлы преобразования, найденные в папке внутри моего проекта.Я хотел бы использовать преобразования для сопоставления моего базового web.config с различными результирующими web.configs, например «Transform.Customer1.config» преобразует «web.config» в «Web.Customer1.config».Я пытаюсь добиться этого с помощью ItemGroup, содержащей все доступные файлы преобразования web.config, который использует String.Replace для вычисления результирующего имени файла:

<ItemGroup>
  <TransformCustomerFile Include="$(MSBuildProjectDirectory)\Deployment\Transform.*.config">
    <OutputFilePath>
      $([System.String]::Copy('%(FullPath)').Replace('Transform', 'Web'))
    </OutputFilePath>
  </TransformCustomerFile>
</ItemGroup>

<Target Name="transform" AfterTargets="AfterBuild">
  <TransformXml Source="$(MSBuildProjectDirectory)\web.config" Transform="@(TransformCustomerFile)" Destination="%(TransformCustomerFile.OutputFilePath)" />
</Target>

Однако кажется, что TransformXml не похож на OutputFilePath, выбрасываяошибка «Не удалось записать файл назначения: недопустимые символы в пути».Я пытался использовать OutputFilePath в других функциях MsBuild, таких как тег Copy, который работает правильно, поэтому кажется, что проблема изолирована от TransformXml.Что здесь может быть не так?Какая-то проблема кодирования при использовании String.Copy?

...