【问题标题】:Can't read appsettings.json without DI due to missing Configuration Builder由于缺少配置生成器,无法在没有 DI 的情况下读取 appsettings.json
【发布时间】:2019-01-19 21:44:09
【问题描述】:

我正在尝试从 appsettings.json 中读取数据,但我不想使用 DI。我只是想访问该文件。按照 MS 的建议,我正在关注 simple configuration

using System.IO;
using Microsoft.Extensions.Configuration;

class Program
{
  public static IConfigurationRoot Configuration { get; set; }

  static void Main(string[] args)
  {
    IConfigurationBuilder builder = new ConfigurationBuilder()
      .SetBasePath(Directory.GetCurrentDirectory())
      .AddJsonFile("appsettings.json");

    Configuration = builder.Build();
  }
}

当我指定对 Microsoft.Extensions.Configuration 的引用时,类从红色突出显示变为绿色,除了一个 - Configuration Builder 实例创建。它会产生以下错误。

错误 CS0246 找不到类型或命名空间名称“ConfigurationBuilder”(您是否缺少 using 指令或程序集引用?)

我找到的所有示例都以相同的方式设置。甚至docs for Configuration Builder 也说它应该在那里。我不知道如何继续。

如果有任何意义,我正在使用 .NET Core 2.0。

【问题讨论】:

  • 这很奇怪,我创建了相同的控制台应用程序,没问题。您创建了一个新的空 .net Core 2.0 控制台应用程序?
  • 你添加了正确的包吗?没有 ASP.NET Core Meta 包,您需要自己引用这些东西。附言问题与 DI 完全无关,因为配置从一开始就不需要它,并且使用了 new 关键字,即使在 ASP:NET Core 中也是如此
  • @kloarubeek 我也无法解释。你能确认已经安装了Microsoft.Extensions.Configuration.Json 包吗?我很好奇,因为当我安装它(like this)时,正如下面答案中所建议的那样,我让它工作了。请检查 Solution Explorer 中的 Dependecies/NuGet(由于某种原因,它没有显示在我的 NuGet Solution Explorer 中)。
  • @Tseng 我可能已经成为 MS 帮助我项目模板的受害者,这让我不知道我需要一些东西。很高兴发现,谢谢。您建议将ConfigurationBuilder 包含在哪个包中?我希望它与IConfigurationBuilder 相同,正如我在问题中提到的那样,确实工作。
  • 当您正在寻找包含特定类和/或扩展方法的包时,请使用 Microsoft/.NET Core 团队的Reverse Package Search 进行搜索。即packagesearch.azurewebsites.net/?q=AddJsonFile

标签: c# asp.net-core .net-core appsettings .net-core-2.0


【解决方案1】:

AddJsonFile 方法位于 Microsoft.Extensions.Configuration.Json 包和 Microsoft.Extensions.Configuration 命名空间中。

所以需要将Microsoft.Extensions.Configuration.Json 包添加到项目中。一旦所有包都成功恢复,它就可以完美运行。 如果您已经添加了它们,则另一个错误可能会在该点被编译之前阻止构建。

【讨论】:

    【解决方案2】:

    我有类似的东西。 我已经引用了 ConfigurationBuilder 并在同一解决方案的另一个项目中工作。

    我将 ConfigurationBuilder 代码复制/粘贴到一个新项目中,遇到了和你一样的问题。

    我查看了解决方案的 NuGet 安装包。

    果然,Microsoft.Extensions.Configuration.Json 是为工作项目安装的,但不是新项目。

    为新项目安装它,瞧。

    【讨论】:

      猜你喜欢
      • 2017-09-26
      • 1970-01-01
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      • 2019-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多