Заменить символы в переменной msbuild - PullRequest
18 голосов
/ 24 июня 2011

Мне нужно заменить символы в переменной, которую я передаю в exec-задачу в msbuild 4. В частности, мне нужно заменить все вхождения обратной косой черты \ на прямые косые черты / в переменной $(MSBuildProjectDirectory).

например:

<Target Name="DoStuff">
    <Exec Command="stuff.exe $(MSBuildProjectDirectoryWithSlashesFixed)/SomeFile.txt" />
</Target>

Вызываемый исполняемый файл является компонентом oracle, который не может обрабатывать косые черты в формате Windows.

Я посмотрел на Функции свойств , но поскольку System.String.Replace() является методом экземпляра, а не статическим методом, кажется, его нельзя использовать для моих нужд.

Есть идеи?

1 Ответ

30 голосов
/ 24 июня 2011

Вы также можете использовать методы экземпляра в качестве функций свойств (при условии, что вы ограничиваете себя типами, зарегистрированными как безопасные).

<PropertyGroup>
  <MSBuildProjectDirectoryWSF>$(MSBuildProjectDirectory.Replace('\', '/'))</MSBuildProjectDirectoryWSF>
</PropertyGroup>

(возможно, я пропустил некоторые экранированные символы в слешах).

Дополнительная документация доступна на Блог Visual Studio .

...