如何在 .Net vNext 包中发现和执行命令
How do you discover and Execute commands in a .Net vNext package
非常想以编程方式发现和执行 dnx 命令。目前我有一个计划程序,它将使用 MEF 扫描文件夹中的作业,然后创建一个新的 AppDomain 和 运行 在某个计划中找到的任何作业,并在完成后销毁应用程序域。
我想将所有作业转换为 dnx 控制台应用程序,并找到一种方法来扫描文件夹中的所有包及其相应的 dnx 命令,以便可以从计划应用程序和命令行执行它们以一次性的方式。
似乎一定有一些库已经在这样做了,因为 Visual Studio 可以发现您的命令并调用它们来调试它们
DNX 命令只是给定 project.json
引用的控制台应用程序的名称。 project.json
然后还允许您更改用于引用引用的控制台应用程序的名称。所以最好的方法就是扫描 project.json
目录并获取 "commands" 部分。
如果您随后有兴趣确定可以将哪些参数传递给命令,那么这将特定于您如何在控制台应用程序中实现这些 arguments/options。
有两种选择:
- 如果您有一个
project.json
文件,您可以简单地解析它并查找 commands
属性.
- 如果您有
nupkg
,那么您可以在其中查找 App
文件夹。这将告诉您哪个命令是全局可安装的。然而,有一些命令在打包时被忽略,它们不会出现在那里。看一下 dnu commands
的代码:https://github.com/aspnet/dnx/tree/dev/src/Microsoft.Dnx.Tooling/Install
执行此操作的 VS 代码不是 public,而是选项 #1(查看 project.json
文件)。
非常想以编程方式发现和执行 dnx 命令。目前我有一个计划程序,它将使用 MEF 扫描文件夹中的作业,然后创建一个新的 AppDomain 和 运行 在某个计划中找到的任何作业,并在完成后销毁应用程序域。
我想将所有作业转换为 dnx 控制台应用程序,并找到一种方法来扫描文件夹中的所有包及其相应的 dnx 命令,以便可以从计划应用程序和命令行执行它们以一次性的方式。
似乎一定有一些库已经在这样做了,因为 Visual Studio 可以发现您的命令并调用它们来调试它们
DNX 命令只是给定 project.json
引用的控制台应用程序的名称。 project.json
然后还允许您更改用于引用引用的控制台应用程序的名称。所以最好的方法就是扫描 project.json
目录并获取 "commands" 部分。
如果您随后有兴趣确定可以将哪些参数传递给命令,那么这将特定于您如何在控制台应用程序中实现这些 arguments/options。
有两种选择:
- 如果您有一个
project.json
文件,您可以简单地解析它并查找commands
属性. - 如果您有
nupkg
,那么您可以在其中查找App
文件夹。这将告诉您哪个命令是全局可安装的。然而,有一些命令在打包时被忽略,它们不会出现在那里。看一下dnu commands
的代码:https://github.com/aspnet/dnx/tree/dev/src/Microsoft.Dnx.Tooling/Install
执行此操作的 VS 代码不是 public,而是选项 #1(查看 project.json
文件)。