如何将多个参数传递给 dotCover merge

How to pass multiple arguments to dotCover merge

我正在编写 powershell 命令来合并两个快照,如下所示 -

&$coveragTool merge /Source= $TestResult1;$TestResult2 /Output= TestMergeOutput.dcvr

它给出的错误是 -

Parameter 'Source' has invalid value.
Invalid volume separator char ':' (0x3A) in path at index 67.

如文档所述,两个文件应以分号 (;) 分隔

像这样-

merge: Merge several coverage snapshots
usage: dotCover merge|m <parameters>

Valid parameters:
  --Source=ARG             : (Required) List of snapshots separated with semicolon (;)
  --Output=ARG             : (Required) File name for the merged snapshot
  --TempDir=ARG            : (Optional) Directory for the auxiliary files. Set to system temp by default

Global parameters:
  --LogFile=ARG            : (Optional) Enables logging and allows specifying a log file name
  --UseEnvVarsInPaths=ARG  : (Optional) [True|False] Allows using environment variables (for example, %TEMP%) in paths. True
 by default

如何修改正确?

您不能将 unquoted ; 作为参数的一部分传递,因为 PowerShell 将其解释为语句分隔符。

要么将参数包含在 "..." 中,要么 ` - 有选择地转义 ; 字符;此外,= 之后的 space 可能是也可能不是问题。

要使调用(至少在语法上)成功,请使用以下内容:

& $coveragTool merge /Source="$TestResult1;$TestResult2" /Output=TestMergeOutput.dcvr

或者(注意 `,忽略损坏的语法突出显示):

& $coveragTool merge /Source=$TestResult1`;$TestResult2 /Output=TestMergeOutput.dcvr

PowerShell 比 cmd.exe 具有更多所谓的 元字符 ,例如,除了 & | < > 之外,值得注意的是 ( ) , { } ; @ $ # - 请参阅 了解更多信息。