Как передать несколько аргументов для слияния dotCover - PullRequest
1 голос
/ 29 марта 2020

Я пишу команду 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

как мне исправить?

1 Ответ

1 голос
/ 30 марта 2020

Вы не можете передать без кавычек ; как часть аргумента, потому что PowerShell интерпретирует его как разделитель операторов.

Либо заключать аргумент в "...", либо ` - экранировать символ ; выборочно; Кроме того, пробел после = может быть или не быть проблемой.

Чтобы сделать вызов (хотя бы синтаксически) успешным, используйте следующее:

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

В качестве альтернативы (обратите внимание на `, игнорируйте выделение синтаксиса):

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

PowerShell имеет больше так называемых метасимволов , чем cmd.exe, например, особенно ( ) , { } ; @ $ # в дополнение к & | < > - см. этот ответ для дополнительной информации.

...