枚举ASP.NET5控制台应用程序中的运行时服务

时间:2015-08-09 19:53:12

标签: asp.net-core dnx

为了我自己的学习,我正在尝试在Visual Studio 2015中使用DNX控制台应用程序,我正在尝试实现Daniel Roth在此MSDN文章中显示的示例应用程序:https://msdn.microsoft.com/en-us/magazine/dn913182.aspx在以下部分:跨平台.Net控制台应用程序

在此示例中,作者通过枚举IServiceManifest实例上的Service属性打印出运行时环境中可用的服务列表,该实例通过构造函数注入到Program类中。为了让应用程序访问此接口,作者定义了一个ANI(程序集中性接口),因为IServiceManifest定义在DNX本身内。

这个例子是前一段时间写的:

1)IServiceManifest似乎不再存在。我确实在Microsoft.DNX.Runtime.Abstractions中找到了具有相同Services属性的IRuntimeServices,因此我假设它刚刚重命名。

2)更重要的是,在最近的更新中删除了程序集中性接口,所以我不知道如何访问IRuntimeServices接口以便将它注入到程序构造函数中。

我已尝试将project.json中的依赖项添加到Microsoft.DNX.Runtime.Abstractions,但程序包还原失败。我认为这个包在公共nuget feed上不可用,因为它是DNX本身的一部分。

现在有没有办法创建这种类型的应用程序ANI已被删除?

提前致谢。

2 个答案:

答案 0 :(得分:1)

在beta7中,

Microsoft.Framework.Runtime.Abstractions已重命名为Microsoft.Dnx.Runtime.Abstractions。请参阅this公告。

  • 如果您使用的是DNX beta6或更早版本,请添加对Microsoft.Framework.Runtime.Abstractions
  • 的引用
  • 如果您使用的是DNX beta7,请添加对Micrsoft.Dnx.Runtime.Abstractions的引用,并将开发源(https://www.myget.org/F/aspnetvnext/api/v2)添加到您的包源。恢复应该工作。

获得运行时抽象包后,您将能够访问IRuntimeEnvironment

答案 1 :(得分:0)

现在,可以通过PlatformServices和CompilationServices获取对控制台应用程序中的运行时服务的访问。

进入IApplicationEnvironment,IRuntimeEnvironment,IAssemblyLoaderContainer,IAssemblyLoadContextAccessor,ILibraryManager 使用Microsoft.Extensions.PlatformAbstractions.PlatformServices.Default静态对象。

要访问ILibraryExporter,ICompilerOptionsProvider使用Microsoft.Extensions.CompilationAbstractions.CompilationServices.Default静态对象。

source