2011-06-24 16 views
18

necesito reemplazar caracteres en una variable que estoy pasando a una tarea ejecutivo dentro msbuild 4. En concreto, tengo que sustituir todas las apariciones de barras invertidas \ con forward-barras / en la variable $(MSBuildProjectDirectory).Reemplazar caracteres dentro de una variable msbuild

por ejemplo:

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

El ejecutable se llama es un componente de Oracle que no pueden hacer frente a las barras en formato Windows.

He echado un vistazo a Property Functions, pero como System.String.Replace() es un método de instancia en lugar de un método estático, parece que no se puede usar para mis necesidades.

¿Alguna idea?

Respuesta

30

También puede usar métodos de instancia como funciones de propiedad (siempre que se limite a tipos registrados como seguros).

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

(Pude haber perdido algunas escapadas en las barras).

Hay más documentación disponible en Visual Studio Blog.

+0

Funciona un encanto. ¡Gracias! – grenade

Cuestiones relacionadas