Как обнаружить и выполнить команды в пакете .Net vNext

Так любопытно обнаружить и выполнить команды dnx программно. В настоящее время у меня есть программа планирования, которая будет сканировать папку на наличие заданий с помощью MEF, а затем создавать новый домен приложения и запускать любые задания, найденные по некоторому расписанию, и уничтожать домен приложения по завершении.

Я хочу преобразовать все задания в консольные приложения dnx и найти способ сканировать папку на наличие всех пакетов и соответствующих им команд dnx, чтобы их можно было выполнять из приложения планирования, а также из командной строки одноразовым способом. .

Кажется, должна быть какая-то библиотека, которая уже делает это, поскольку Visual Studio может обнаруживать ваши команды и вызывать их для их отладки.


person runxc1 Bret Ferrier    schedule 20.11.2015    source источник
comment
пробовали ли вы искать в Google следующие C# dnx console apps docs.asp.net/en/ последний/dnx/console.html   -  person MethodMan    schedule 21.11.2015


Ответы (2)


Есть два варианта:

  1. Если у вас есть файл project.json, вы можете просто проанализировать его и найти свойство commands.
  2. Если у вас есть nupkg, вы можете найти в нем папку App. Это скажет вам, какая команда может быть установлена ​​глобально. Однако есть несколько команд, которые игнорируются во время упаковки и не отображаются там. Взгляните на код для dnu commands: https://github.com/aspnet/dnx/tree/dev/src/Microsoft.Dnx.Tooling/Install

Код VS, который делает это, не является общедоступным, но это просто вариант № 1 (просмотр файла project.json).

person Victor Hurdugaci    schedule 21.11.2015
comment
Похоже, разбор файлов project.json — лучший вариант. Есть ли лучшая альтернатива использованию System.Diagnostics.Process для выполнения одной из команд? - person runxc1 Bret Ferrier; 24.11.2015
comment
Неа. Это единственный способ. - person Victor Hurdugaci; 24.11.2015

Команды DNX — это просто имена консольных приложений, на которые ссылается данный project.json. project.json также позволяет вам изменить имя, которое вы используете для ссылки на упомянутое консольное приложение. Так что лучше всего было бы просто просканировать каталоги на наличие project.json и захватить раздел «команды».

Если вы затем заинтересованы в определении того, какие аргументы вы можете передать командам, тогда это будет зависеть от того, как вы реализовали эти аргументы/параметры внутри своего консольного приложения.

person Stafford Williams    schedule 20.11.2015