2011-03-16 12 views
11

Estoy tratando de hacer funcionar una tarea ejecutiva dentro de un script de msbuild y he encontrado un problema muy molesto. El comando exec es bueno, excepto que el proceso que estoy ejecutando (Ncover.Console.exe) no puede manejar una barra invertida al final de un nombre de directorio.Eliminar la barra diagonal inversa posterior de la propiedad del directorio de lotbuild de msbuild

Para ilustrar con un ejemplo cortado con tijeras, las siguientes obras:

<exec command="NCover.Console.exe nunit-console.exe some.dll [snip] //w c:\out" /> 

Pero esto no funciona (tenga en cuenta la barra al final de "C: \ out"):

<exec command="NCover.Console.exe nunit-console.exe some.dll [snip] //w c:\out\" /> 

La razón No puedo simplemente borrar la barra diagonal inversa que se lee mediante el procesamiento por lotes. Así que en el mismo cortó el anterior, que en realidad se ve así:

<exec command="NCover.Console.exe nunit-console.exe some.dll [snip] //w 
&quot;%(TestAssemblies.RootDir)%(TestAssemblies.Directory)&quot; /> 

Así que mi pregunta es ¿cómo puedo eliminar esta barra invertida molestos?

Gracias de antemano.

+1

Puede usar procesamiento por lotes y aún eliminar la barra invertida utilizando transformaciones o funciones de propiedad. ¿Hay alguna razón especial por la que no quieras usar esto? –

+0

Hola Amir. ¿Puedes demostrar cómo puedo usar transformaciones o funciones de propiedad en mi caso? Utilice el botón de respuesta para que pueda acreditarle la respuesta y su respuesta aparezca en los resultados de búsqueda. Gracias. – Ashby

+1

En la respuesta de Danere, puede ver un ejemplo de cómo hacer esto con [funciones de propiedad] (http://msdn.microsoft.com/en-us/library/dd633440.aspx). (Probablemente no sea posible con [transformaciones] (http://msdn.microsoft.com/en-us/library/ms171476.aspx) porque solo puede agregar caracteres allí) –

Respuesta

17

Si está utilizando MSBuild 4.0 puede utilizar las funciones de propiedad como ha señalado Amir, como este:

<PropertyGroup> 
    <TestAssembliesDirectory>%(TestAssemblies.Directory)</TestAssembliesDirectory> 
</PropertyGroup> 
<exec command="NCover.Console.exe nunit-console.exe some.dll [snip] //w &quot;%(TestAssemblies.RootDir)$(TestAssembliesDirectory.TrimEnd('\'))&quot;" /> 
+0

Hola, Danere. Desafortunadamente estamos usando msbuild 3.5 que no permite funciones de propiedad. ¿Puedes pensar en algún otro método para hacer esto? Investigué la clase MSBuildHelper pero fue en vano; quizás tendré que escribir una tarea personalizada o experimentar con la función RegexReplace de la tarea de comunidad msbuild. – Ashby

+2

FYI mi resolución fue reemplazar esa parte del comando por completo con una propiedad estática. Habría estado buscando utilizar una tarea

Cuestiones relacionadas