Как вывести /p:Platform="Any CPU", как указано в shake cmd?
Я использую cmd
от Shake и возникли проблемы с формированием следующей командной строки...
msbuild a.sln /p:Configuration=Debug /p:Platform="Any CPU"
Когда я пытаюсь избежать двойных кавычек, экранирование и строковые кавычки перетекают слишком далеко, и я получаю эту ошибку...
Development.Shake.cmd, system command failed
Command: msbuild a.sln /p:Configuration=Debug "/p:Platform=\"Any CPU\""
Exit code: 1
Я пробовал 3 способа...
cmd "msbuild a.sln /p:Configuration=Debug /p:Platform=\"Any CPU\""
cmd "msbuild a.sln /p:Configuration=Debug" ["/p:Platform=\"Any CPU\""]
cmd "msbuild" ["a.sln", "/p:Configuration=Debug", "/p:Platform=\"Any CPU\""]
Я запускаю это на Windows.
1 ответ
Я написал небольшую программу на C (которую я назвал msbuild
) тестировать:
#include <Windows.h>
#include <stdio.h>
main()
{
printf("{%s}\n", GetCommandLine());
return 0;
}
Используя это, я проверил ваши варианты:
cmd "msbuild a.sln /p:Configuration=Debug /p:Platform=\"Any CPU\""
{"msbuild" "a.sln" "/p:Configuration=Debug" "/p:Platform=\"Any" "CPU\""}
cmd "msbuild a.sln /p:Configuration=Debug" ["/p:Platform=\"Any CPU\""]
{"msbuild" "a.sln" "/p:Configuration=Debug" "/p:Platform=\"Any CPU\""}
cmd "msbuild" ["a.sln", "/p:Configuration=Debug", "/p:Platform=\"Any CPU\""]
{"msbuild" "a.sln" "/p:Configuration=Debug" "/p:Platform=\"Any CPU\""}
Тот, который исправляет это, должен использовать Shell
команда, чтобы сказать Shake, чтобы не делать каких-либо собственных экранировок:
cmd Shell "msbuild a.sln /p:Configuration=Debug /p:Platform=\"Any CPU\""
{msbuild a.sln /p:Configuration=Debug /p:Platform="Any CPU"}
Однако при условии реального msbuild
как и другие инструменты Visual Studio (например, fsc
, csc
, cl
), вы, вероятно, можете использовать эквивалентный (и, возможно, предпочтительный) вариант:
msbuild a.sln /p:Configuration=Debug "/p:Platform=Any CPU"
Что вы можете выразить с помощью Shake как:
cmd "msbuild a.sln /p:Configuration=Debug" ["/p:Platform=Any CPU"]