msbuild directory-structure pathing

¿Cómo tengo espacios en un MSBuild WebProjectOutputDir?



directory-structure pathing (7)

Acabo de encontrar esto una respuesta a esta vieja pregunta. Para manejar los espacios, debe usar el carácter de escape / en todas las carpetas. Básicamente

/p:OutPath="c:/temp/deploy/fun and games/Deployment/bin/"

debiera ser

/p:OutPath="c://temp//deploy//fun and games//Deployment//bin//"

¡Y mágicamente funciona!

Estoy tratando de llamar a MSBuild desde una línea de comandos. Todo funcionaba bien cuando estaba usando una ruta que no tenía espacios, pero ahora tengo una ruta que tiene espacios y el comando está fallando.

Comando (obras):

"C:/Windows/Microsoft.NET/Framework/v3.5/MSBuild.exe" /t:Rebuild "C:/Projects/myProject.csproj" /p:OutDir=c:/temp/deploy/funAndGames/Deployment/bin/ /p:WebProjectOutputDir=c:/temp/deploy/funAndGames/Deployment/ /p:Configuration=Release

Luego agregué citas y cambié OutDir a OutPath (no funciona):

"C:/Windows/Microsoft.NET/Framework/v3.5/MSBuild.exe" /t:Rebuild "C:/Projects/myProject.csproj" /p:OutPath="c:/temp/deploy/funAndGames/Deployment/bin/" /p:WebProjectOutputDir="c:/temp/deploy/funAndGames/Deployment/" /p:Configuration=Release

Lo que busco es algo como esto (no funciona):

"C:/Windows/Microsoft.NET/Framework/v3.5/MSBuild.exe" /t:Rebuild "C:/Projects/myProject.csproj" /p:OutPath="c:/temp/deploy/fun and games/Deployment/bin/" /p:WebProjectOutputDir="c:/temp/deploy/fun and games/Deployment/" /p:Configuration=Release

¿Alguna ayuda con la sintaxis alrededor de OutDir / OutPath y WebProjectOutputDir con espacios? ¿Es posible? Si no es así, ¿alguien sabe cuál es la razón (debido a que algunos Url no tienen espacios del tipo de espacios)?


Intenta añadir " ex:

/p:OutPath=""c:/temp/deploy/fun and games/Deployment/bin/""


Msbuild también parece funcionar con espacios en OutDir si cambia / a /, mientras usa comillas:

/p:OutDir="c:/temp/deploy/fun and games/out/" /p:WebProjectOutputDir="c:/temp/deploy/fun and games/Deployment/"


Para hacer esto cuando usa un archivo .proj y su ruta se incluye en propiedades como $ (DeployFolder) y $ (NuGetExe), puede usar "& quot;" Me gusta esto:

<Exec Command="&quot;$(NuGetExe)&quot; pack -OutputDirectory &quot;$(DeployFolder)&quot;" />


Para mí la solución de trabajo es:

/ p: SQLCMD = "/" C: / Archivos de programa / Microsoft SQL Server / 100 / Tools / Binn / SQLCMD.EXE / ""

En otras palabras: poner toda la cadena entre comillas (las comillas externas no se pasan como valor a MSBuild).

El valor dentro de MSBuild para esta propiedad es: "C: / Archivos de programa / Microsoft SQL Server / 100 / Tools / Binn / SQLCMD.EXE" (con las comillas).


Si tiene varios parámetros en un conmutador, realmente no puede "evitar" el problema al corregir la ruta. Lo que puede hacer es poner sus parámetros de cambio entre "some_parameters1 some_parameters2".

Algo como:

<Exec Command="SomeCommand /useMultipleParameterSwitch=&quot;value1:blabla1 | value2:blabla2&quot;"/>

Por supuesto, mucho depende de la sintaxis de los conmutadores, pero eso funciona para mí y para mi equipo.


> "C:/Windows/Microsoft.NET/Framework/v3.5/MSBuild.exe" > /t:Rebuild > "C:/Projects/myProject.csproj" /p:OutPath="c:/temp/deploy/funAndGames/Deployment/bin/" ---------------------------------------- /p:WebProjectOutputDir="c:/temp/deploy/fun and games/Deployment/" ---------------------------------------- > /p:Configuration=Release

Prueba esto.

También intente a través de VSStudio GUI. Luego copia los ajustes y prueba con MS Build.