如何在.Net vNext包中发现和执行命令

时间:2015-11-20 23:25:56

标签: c# asp.net-core dnx coreclr

对以编程方式发现和执行dnx命令非常好奇。目前我有一个调度程序,它将使用MEF扫描Jobs的文件夹,然后创建一个新的AppDomain并运行在某些计划中找到的任何作业,并在完成时销毁appdomain。

我想将所有作业转换为dnx控制台应用程序,并找到一种方法来扫描所有包及其相应的dnx命令的文件夹,以便它们可以从调度应用程序以及命令行执行。一个时尚。

似乎必须有一些库已经这样做,因为Visual Studio可以发现你的命令并调用它们来调试它们

2 个答案:

答案 0 :(得分:1)

DNX命令只是给定project.json引用的控制台应用程序的名称。 project.json然后还允许您更改用于引用引用的控制台应用程序的名称。因此,最好的方法是扫描project.json的目录并获取“命令”部分。

如果您有兴趣确定可以传递给命令的参数,那么那将特定于您如何在控制台应用程序中实现这些参数/选项。

答案 1 :(得分:1)

有两种选择:

  1. 如果您有一个project.json文件,则只需解析它并查找commands属性。
  2. 如果您有nupkg,那么您可以在其中查找App文件夹。这将告诉您哪个命令可全局安装。但是,有一些命令在打包时被忽略,它们不会显示在那里。请查看dnu commandshttps://github.com/aspnet/dnx/tree/dev/src/Microsoft.Dnx.Tooling/Install
  3. 的代码

    执行此操作的VS代码不是公开的,但它只是选项#1(查看project.json文件)。