Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Replace characters within an msbuild variable

I need to replace characters in a variable I am passing to an exec task within msbuild 4. Specifically, I need to replace all occurrences of backslashes \ with forward-slashes / in the $(MSBuildProjectDirectory) variable.

eg:

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

The executable being called is an oracle component that can't deal with slashes in windows format.

I've had a look at Property Functions, but as System.String.Replace() is an instance method rather than a static method, it seems it can't be used for my needs.

Any ideas?

like image 306
grenade Avatar asked Jun 24 '11 11:06

grenade


1 Answers

You can also use instance methods as property functions (as long as you restrict yourself to types registered as safe).

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

(I might have missed some escaping on the slashes).

More documentation is available on Visual Studio Blog.

like image 160
skolima Avatar answered Nov 17 '22 18:11

skolima