MSBuild WebProjectOutputDirにスペースを含めるにはどうすればよいですか?
-
20-08-2019 - |
質問
コマンドラインからMSBuildを呼び出そうとしています。スペースのないパスを使用していたときはすべて正常に機能していましたが、スペースのあるパスがあり、コマンドが失敗しています。
コマンド(動作): ジェネラコディセタグプレ
次に、引用符を追加し、OutDirをOutPathに変更しました(機能しません): ジェネラコディセタグプレ
私が目指しているのは次のようなものです(機能しません): ジェネラコディセタグプレ
スペースを含むOutDir / OutPathおよびWebProjectOutputDirの構文に関するヘルプはありますか?出来ますか?そうでない場合は、理由が何であるかを誰も知りません(一部のURLにスペースタイプのものがないためですか?)
解決
この古い質問に対する答えを見つけたところです。 スペースを処理するには、すべてのフォルダーでエスケープ文字\を使用する必要があります。基本的に ジェネラコディセタグプレ
すべき ジェネラコディセタグプレ
そして魔法のように機能します!
他のヒント
"
を追加してみてください
例:
ジェネラコディセタグプレ
引用符を使用しているときに\を/に切り替えると、MsbuildはOutDir内のスペースでも機能するようです:
/p:OutDir="c:/temp/deploy/fun and games/out/"
/p:WebProjectOutputDir="c:/temp/deploy/fun and games/Deployment/"
これを試してください。
また、VSStudioGUIを介して試してください。次に、設定をコピーしてMSBuildで試してください。
私にとって実用的な解決策は次のとおりです。
/ p:SQLCMD="\" C:\ Program Files \ Microsoft SQL Server \ 100 \ Tools \ Binn \ SQLCMD.EXE \ ""
言い換えると、すべての文字列を引用符で囲みます(外部引用符は値としてMSBuildに渡されません)。
このプロパティのMSBuild内の値は、「C:\ Program Files \ Microsoft SQL Server \ 100 \ Tools \ Binn \ SQLCMD.EXE」(引用符付き)です。
スイッチに複数のパラメータがある場合、パスを修正して問題を「回避」することはできません。あなたができることは、スイッチのパラメータを「some_parameters1some_parameters2」の間に置くことです。
次のようなもの: ジェネラコディセタグプレ
もちろん、スイッチの構文に大きく依存しますが、それは私と私のチームにとってはうまくいきます。
.projファイルを使用していて、パスが$(DeployFolder)や$(NuGetExe)などのプロパティに含まれている場合にこれを行うには、「"」を使用できます。このように: ジェネラコディセタグプレ