2015-11-20 3 views
1

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

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

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

команды
+0

Вы пытались найти в Google следующие «консольные приложения C# dnx» http://docs.asp.net/en/latest/dnx/console.html – MethodMan

ответ

1

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

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

ВС код, который делает это не публично, но это просто вариант # 1 (если смотреть на файл project.json).

+0

Похоже, что разбор файлов project.json - лучший вариант , Есть ли лучшая альтернатива использованию System.Diagnostics.Process для выполнения одной из команд? –

+0

Нет. Это единственный способ. –

1

DnX являются только имя (s) из консольного приложения (ов) на которые ссылается данный project.json. project.json, а также позволяет вам изменить имя, которое вы используете для ссылки на упомянутое консольное приложение. Таким образом, лучшим способом было бы просто сканировать каталоги для project.json и захватить раздел «команды».

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