【问题标题】:SetBasePath not present in ConfigurationBuilder under .NET Core 5.NET Core 5 下的 ConfigurationBuilder 中不存在 SetBasePath
【发布时间】:2021-01-24 16:26:38
【问题描述】:

根据.NET Core 5 的文档,有一个方法SetBasePath,它被广泛用于一堆博客(example 1example 2example 3 等)。没有任何关于它是一个奇怪的陷阱之类的概念。但是,当我尝试下面的语法时,它被标记为红色并声称不存在。

using System;
using Microsoft.Extensions.Configuration;
static void Main(string[] args)
{
  string path = AppDomain.CurrentDomain.BaseDirectory;
  IConfigurationBuilder builder = new ConfigurationBuilder();
  builder.SetBasePath(path);
}

我不确定为什么会发生这种情况,也不知道该怎么办。

重现步骤:

  1. 使用 C# 在 .NET Core 5 中创建一个普通控制台应用程序。
  2. 粘贴 Program.cs 中的代码替换文件的内容。
  3. 尝试编译或执行。

收到的错误是这样的。

错误 CS1061
“ConfigurationBuilder”不包含“SetBasePath”的定义,并且找不到接受“ConfigurationBuilder”类型的第一个参数的可访问扩展方法“SetBasePath”(您是否缺少 using 指令或程序集引用?)

据我所知,我已具备所有先决条件。

【问题讨论】:

    标签: c# .net-core console-application .net-5


    【解决方案1】:

    请记住,多个类型可以通过Extension Methods 为单个类型贡献方法。所以SetBasePath 从来都不是IConfigurationBuilder 接口上的方法。

    并且多个Assemblies可以为同一个命名空间贡献类型,文档说定义SetBasePath扩展方法的类型在:

    FileConfigurationExtensions 类定义命名空间: Microsoft.Extensions.Configuration 程序集: Microsoft.Extensions.Configuration.FileExtensions.dll

    FileConfigurationExtensions Class

    您可以轻松验证的内容不存在于您的依赖项中。所以你缺少一个 NuGet 包。原来这个很容易找到:Microsoft.Extensions.Configuration.FileExtensions

    【讨论】:

    • 似乎是确切的问题。令我困惑的是,我以前没有发现这个问题。似乎在我这样做之前应该还有其他一些可怜的 schmuck,而不是考虑安装额外的软件包。好吧,我想我是这个问题的原始笨蛋。
    猜你喜欢
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-01
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    相关资源
    最近更新 更多