18

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

例如:

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

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

我看过Property Functions,但是作为System.String.Replace()实例方法而不是静态方法,它似乎不能满足我的需要。

有任何想法吗?

4

1 回答 1

33

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

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

(我可能错过了一些对斜线的转义)。

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

于 2011-06-24T11:19:35.900 回答