.NET 6类库加载自定义JSON配置时SetBasePath失效如何解决
问题原因
SetBasePath() 和 AddJsonFile() 都不属于 Microsoft.Extensions.Configuration 核心包的原生API,二者是封装在独立扩展包中的扩展方法。你仅安装了核心包因此无法识别对应方法,3.0版本可以正常运行大概率是当时项目有间接依赖对应的扩展包,版本升级后依赖丢失导致该问题。
修复步骤
- 安装两个版本与当前核心包对齐(5.0.0)的NuGet扩展包即可:
Microsoft.Extensions.Configuration.FileExtensions:提供SetBasePath()扩展方法Microsoft.Extensions.Configuration.Json:提供AddJsonFile()扩展方法
你可以直接通过NuGet包管理器搜索安装,也可以在项目的.csproj文件中添加如下引用配置:
<ItemGroup> <PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="5.0.0" /> <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="5.0.0" /> </ItemGroup> - 安装完成后你现有的代码无需做任何调整,即可正常编译运行。
额外注意
请确保项目中的appsettings.json文件的「复制到输出目录」属性设置为「如果较新则复制」,避免运行时出现找不到配置文件的报错。
内容的提问来源于stack exchange,提问作者OguzKaanAkyalcin
相关产品推荐
相关产品推荐

