.NET 6项目无法读取链接的appsettings.json问题求助
.NET 6 读取跨项目链接的 appsettings.json 解决方案
问题原因
.NET 6 默认以项目根目录作为运行时的工作目录,而非输出目录(bin/Debug/net6.0)。你虽然把文件复制到了输出目录,但默认配置读取逻辑会去项目根目录找文件,所以会提示找不到;而 .NET Core 3.1 默认运行工作目录是输出目录,因此当时能正常工作。
解决方法
方法1:直接读取源文件(推荐)
不用依赖文件复制,在 Program.cs 里直接指定 project1 中 appsettings.json 的路径,彻底规避工作目录问题:
var builder = WebApplication.CreateBuilder(args); // 添加对project1配置文件的引用,确保相对路径与项目结构匹配 builder.Configuration.AddJsonFile("../project1/appsettings.json", optional: false, reloadOnChange: true); var app = builder.Build(); // 后续业务代码...
方法2:修改运行工作目录
在 Visual Studio 里调整项目运行时的工作目录为输出目录:
- 右键点击 project2 → 属性 → 调试 → 工作目录
- 将值设置为
$(OutDir),保存后重新运行项目
这样默认的配置读取逻辑就能找到输出目录里的复制文件。
方法3:确认 csproj 配置正确性
确保你的 project2.csproj 里的链接配置无误,保证文件能正确复制到输出目录:
<ItemGroup> <Content Include="../project1/appsettings.json"> <Link>appsettings.json</Link> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </Content> </ItemGroup>
内容的提问来源于stack exchange,提问作者michasaucer
相关产品推荐
相关产品推荐

