haskell - 如何输出/p :Platform ="Any CPU" as quoted from shake cmd?

标签 haskell shake-build-system

我正在使用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 上运行它。

最佳答案

我编写了一个小 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 工具(例如 fsccsccl >),您可能可以使用以下等效(也许是首选)变体:

msbuild a.sln /p:Configuration=Debug "/p:Platform=Any CPU"

用 Shake 可以表示为:

cmd "msbuild a.sln /p:Configuration=Debug" ["/p:Platform=Any CPU"]

关于haskell - 如何输出/p :Platform ="Any CPU" as quoted from shake cmd?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24967238/

相关文章:

windows - 操作 Hackage 中的源包如何轻松部署到多个 Windows 盒子?

haskell - 删除常见的 haskell 管道样板

haskell - 在 haskell 中构建带有可选字段的 protobuf 对象

haskell:cd 命令在 shake/command 库中不起作用

Haskell Error 字符 '\r' 处字符串/字 rune 字中的词法错误

haskell - 在 Haskell 中使用哪个 monad 来聚合执行一系列语句时可能发生的异常?

haskell - 为什么 Shake 建议禁用空闲垃圾收集?

haskell - 摇一摇: how to proceed when file name is not known a-priori

shake-build-system - Shake如何决定是否重建目标?

shake-build-system - 震动规则能否确定自上次构建以来哪个 "needs"发生了变化?