Как передать многозначные аргументы, содержащие запятые, свойству в инструменте командной строки do tnet? - PullRequest
0 голосов
/ 13 марта 2020

Я хочу запустить команду, которая включает это:

dotnet test /p:Exclude=\"*Test*,*Requirement*\"

Вышеприведенное не является полной командой, но ее достаточно, чтобы вызвать ошибку синтаксического анализа. Я использую пакет Coverlet NuGet в своем проекте C# и хочу исключить все проекты, которые соответствуют этим именам.

Я прочитал как здесь , так и здесь , что включение аргументов в \ "экранированные кавычки \" должно делать это, но это не работает. Я получаю:

MSBUILD : error MSB1006: Property is not valid.
Switch: *Requirement*\

При использовании обычных неэкранированных кавычек выдается то же сообщение об ошибке:

dotnet test /p:Exclude="*Test*,*Requirement*"

При удалении запятой выдается то же сообщение об ошибке:

dotnet test /p:Exclude=*Test*\,*Requirement*

ПРИМЕЧАНИЕ : приведенный выше пример может быть неправильным синтаксисом Coverlet. Это не имеет значения на данный момент. Я просто хочу иметь возможность передать список значений через запятую одному параметру. В действии do tnet отклоняет мой синтаксис задолго до того, как он достигнет Coverlet.

Я выполняю команды из PowerShell.

1 Ответ

0 голосов
/ 19 марта 2020

Оказывается, что в PowerShell %2c интерпретируется как запятая. Таким образом, я могу напечатать это:

dotnet test /p:Exclude=*Test*%2c*Requirement*

...