替换msbuild变量中的字符

gre*_*ade 18 msbuild msbuild-4.0

我需要替换我传递给msbuild 4中的exec任务的变量中的字符.具体来说,我需要在变量\中用反斜杠替换所有出现的反斜杠./$(MSBuildProjectDirectory)

例如:

<Target Name="DoStuff">
    <Exec Command="stuff.exe $(MSBuildProjectDirectoryWithSlashesFixed)/SomeFile.txt" />
</Target>
Run Code Online (Sandbox Code Playgroud)

被调用的可执行文件是一个oracle组件,无法处理Windows格式的斜杠.

我已经看过Property Functions了,但是System.String.Replace()实例方法而不是静态方法,似乎它不能用于我的需求.

有任何想法吗?

sko*_*ima 31

您还可以将实例方法用作属性函数(只要您将自己限制为注册为安全的类型).

<PropertyGroup>
  <MSBuildProjectDirectoryWSF>$(MSBuildProjectDirectory.Replace('\', '/'))</MSBuildProjectDirectoryWSF>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

(我可能错过了一些逃脱的斜线).

Visual Studio博客上提供了更多文档.