如何在标准类库中读取 .Net Core 配置?
Posted
技术标签:
【中文标题】如何在标准类库中读取 .Net Core 配置?【英文标题】:How do I read .Net Core configuration in a standard class library? 【发布时间】:2017-04-04 22:52:02 【问题描述】:今天(2016 年 11 月 11 日)我下载了新的 Visual Studio 2017 RC,安装了 .Net Core 1.1 并设置了一个 Web Api 项目(ASP.NET Core Web 应用程序(.NET Core)) .然后我按照how to read app settings from a config file 上的说明进行操作。这工作得很好。
然后我在同一个解决方案中创建了一个新项目。这是 .NET Core 部分下的 类库 (.NET Standard)。我添加了一个带有接口的类,并使用默认依赖注入进行了设置。
最后,我尝试通过构造函数注入来使用类库中的配置。我收到此错误消息:
找不到类型或命名空间名称“IOptions”
这是我在类库中的类:
public class Firebase : IDatabase
public Firebase(IOptions<AppSettings> appSettings)
//string basePath =
这是 Startup.cs 中的 ConfigureServices 方法:
public void ConfigureServices(IServiceCollection services)
// Add framework services.
services.AddMvc();
services.AddTransient<IDatabase, Firebase>();
// Set up configuration files.
services.AddOptions();
services.Configure<AppSettings>(options => Configuration.GetSection("AppSettings").Bind(options));
我尝试添加
using Microsoft.Extensions.Options;
让它编译,但灯泡告诉我这是一个不必要的参考。
我错过了什么?这不可能吗? .NET Core 有特殊的类库吗?
【问题讨论】:
【参考方案1】:使用IOptionsT
是.NET Core 中的正确方法。 Visual Studio 2017 表明存在不必要的使用。这有点令人困惑,因为当指针位于 Microsoft.Extensions.Options
上时,Visual Studio 会指出这一点。查看 Visual Studio 提出的建议,它不会删除 Microsoft.Extensions.Options
使用但其他使用 e.q. `系统。
【讨论】:
感谢您的回答!它让我检查可能缺少的参考资料。原来我引用了 Microsoft.Extensions.Configuration (1.1.0),但没有引用 Microsoft.Extensions.Options.ConfigurationExtensions (1.1.0)。在再次重新启动 VS 2017 之后,这终于奏效了!以上是关于如何在标准类库中读取 .Net Core 配置?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 .NET Core 类库中使用 System.Windows.Forms
ASP.NET Core 类库中取读配置文件 appsettings.json
如何在 .NET Core 类库中引用 Visual Studio 共享项目