Domanda

Sto provando a chiamare MSBuild da una riga di comando. Tutto funzionava bene quando stavo usando un percorso senza spazi, ma ora ho un percorso che ha spazi e il comando non riesce.

Comando (funziona):

"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

Ho quindi aggiunto le virgolette e modificato OutDir in OutPath (non funziona):

"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

Quello a cui sto puntando è qualcosa del genere (non funziona):

"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

Qualche aiuto sulla sintassi di OutDir / OutPath e WebProjectOutputDir con spazi? È possibile? In caso contrario, qualcuno sa qual è il motivo (a causa del fatto che alcuni URL non hanno spazi di tipo?)

È stato utile?

Soluzione

Ho appena trovato una risposta a questa vecchia domanda. Per gestire gli spazi, è necessario utilizzare il carattere di escape \ su tutte le cartelle. Fondamentalmente

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

dovrebbe essere

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

e magicamente funziona!

Altri suggerimenti

Prova ad aggiungere " es:

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

Msbuild sembra funzionare anche con spazi in OutDir se passi \ a /, mentre usi le virgolette:

/p:OutDir="c:/temp/deploy/fun and games/out/"
/p:WebProjectOutputDir="c:/temp/deploy/fun and games/Deployment/"
> "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

Prova questo.

Prova anche tramite la GUI di VSStudio. Quindi copia le impostazioni & Amp; prova con MS Build.

Per me la soluzione di lavoro è:

/ p: SQLCMD = " \ " C: \ Programmi \ Microsoft SQL Server \ 100 \ Tools \ Binn \ SQLCMD.EXE \ " "

In altre parole: mettere tutte le stringhe tra virgolette (le virgolette esterne non vengono passate come valore a MSBuild).

Il valore all'interno di MSBuild per questa proprietà è: " C: \ Programmi \ Microsoft SQL Server \ 100 \ Tools \ Binn \ SQLCMD.EXE " (con le virgolette).

Se in uno switch sono presenti più parametri, non è possibile "evitare" il problema risolvendo il percorso. Quello che puoi fare è mettere i tuoi parametri dello switch tra & Quot; some_parameters1 some_parameters2 " ;.

Qualcosa del tipo:

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

Ovviamente molto dipende dalla sintassi degli switch, ma questo funziona per me e il mio team.

Per fare ciò quando si utilizza un file .proj e il percorso è incluso in proprietà come $ (DeployFolder) e $ (NuGetExe), è possibile utilizzare " & amp; quot; " in questo modo:

<Exec Command="&quot;$(NuGetExe)&quot; pack -OutputDirectory &quot;$(DeployFolder)&quot;" />
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top