PowerShell で次のコマンドを実行できます。
msbuild "c:\some\spaced path\project.sln" /p:MvcBuildViews=False /p:OutDir="c:\\some\\spaced path\\deploy\\Package\\"
パスは変更されていますが、実際のパスには間隔のあるコンポーネントも含まれています。ダブルスラッシュは、たとえばこの回答のトリックです。
それを直接実行するとmsbuild
、パスがわかりました。ただし、次のように psake で実行する必要があります。
exec { msbuild $SolutionFile "/p:MvcBuildViews=False;OutDir=$OutputDir" }
パスにスペースが含まれていない場合は機能しますが、スペースを使用して動作するように調整したいと考えています (sln パスと OutDir の両方)。試してみましたが、エスケープがわかりませんでした。
編集:
明確にするために、psake でフルパスをハードコーディングしても機能します。
exec { msbuild "c:\some\spaced path\project.sln" /p:MvcBuildViews=False /p:OutDir="c:\\some\\spaced path\\deploy\\Package\\" }
ただし、OutputDir 変数を使用する必要があります (ダブルスラッシュでエスケープされていません)。そのため、そのための一時変数を追加してから、コマンド ラインを作成してみます。
$double_slashed_dir = $OutputDir.Replace('\', '\\');
write $double_slashed_dir;
exec { msbuild $SolutionFile /p:MvcBuildViews=False "/p:OutDir=`"$double_slashed_dir`"" }
これは機能しません (いくつかのバリエーションを試しました)。上記で、「MSB1008: 指定できるプロジェクトは 1 つだけです。」