Haskell 如何输出/p:Platform=";任何CPU“;引用自shake cmd?

Haskell 如何输出/p:Platform=";任何CPU“;引用自shake cmd?,haskell,shake-build-system,Haskell,Shake Build System,我正在使用from 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

我正在使用from 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
我试过三种方法

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上运行此程序。

我编写了一个小C程序(我将其命名为
msbuild
)来测试:

解决这个问题的方法是使用
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"]

我认为您应该能够通过
“/p:Platform=Any CPU”
,而
msbuild
应该可以等效地工作。我怀疑要将该字符串准确地传递给
msbuild
,您需要将
Shell
传递给第一个选项,但稍后我会正确检查。
msbuild a.sln /p:Configuration=Debug "/p:Platform=Any CPU"
cmd "msbuild a.sln /p:Configuration=Debug" ["/p:Platform=Any CPU"]