Разверните символы подстановки в приложении .NET Core - PullRequest
0 голосов
/ 28 декабря 2018

Я использую .NET Core для написания кроссплатформенного приложения.Входные данные для моего приложения - несколько путей к файлам;аналогично следующему:

dotnet myApp.dll file1.txt file2.txt C:\Data\anotherFile.txt

Для простоты я бы хотел, чтобы пользователь мог указывать входные файлы, используя подстановочные знаки.Например:

dotnet myApp.dll ./*.txt C:\Data\anotherFile.txt

Когда я выполняю вышеупомянутую команду в Windows (PowerShell), аргументы myApp получают:

./*.txt
anotherFile.txt

Но когда я запускаю приложение на Mac (Терминал), получаемые аргументы myApp:

file1.txt
file2.txt
anotherFile.txt

Другими словами, символы подстановки раскрываются в Терминале Mac, но не в Windows PowerShell.

Есть какие-нибудь мысли о том, как лучше всего решить эту проблему с помощью межплатформенного метода?

Некоторые детали:

  • Я использую Microsoft.Extensions.CommandLineUtils для аргументов командной строкипарсинг;

  • Чтобы получить имена файлов, указанные с помощью символов подстановки, я использую Directory.GetFiles(Path.GetDirectoryName(input), Path.GetFileName(input)), где input - это путь с подстановочными знаками (например, ./*.txt);

  • У меня есть решение hacky , аналогичное фрагменту этого вопроса ;но мне это не нравится, потому что это заставляет меня вводить платформо-зависимый код в мое приложение (которое, как я ожидаю, .NET Core будет обрабатывать для меня): (а) когда подстановочный символ расширяется в Терминале, и (б)когда подстановочный символ НЕ раскрывается в PowerShell.

...