引言:按core传统方式添加 AddJsonFile("appsettings.json") 在windows平台和ssr工作正常,但是在 ios 和 android 无法用这种方式,因为资源生成方式不一样. 使用内置资源方式不够灵活而且 ios 平台会提示不能复制 json 文件到目录,于是进行了几天的研究,终于能正确使用了.
文章插图
资源文件夹
- 官方工程
Resources\Raw\
文件夹AboutAssets.txt
文件说明
- 直接丢入 appsettings.json 编译到ios平台提示错误不能复制 json 文件到目录, 经google,找到方案,需要项目文件属性中 Remove 文件
<Content Remove="appsettings.json" />
【如何在 .NET MAUI 中加载 json 文件?】
The path 'XXXXXXX\appsettings.json' would result in a file outside of the app bundle and cannot be used.
最终方案:
- appsettings.json文件直接放工程根目录
- 文件属性生成操作为 MauiAsset 和 不复制
- 需要在项目属性中 Remove 文件
文章插图
项目文件
<ItemGroup> <Content Remove="appsettings.json" /> </ItemGroup> <ItemGroup> <MauiAsset Include="appsettings.json"> <CopyToOutputDirectory>Never</CopyToOutputDirectory> </MauiAsset> </ItemGroup>读取配置文件代码
async static Task<Stream> LoadMauiAsset() { try { using var stream = await FileSystem.OpenAppPackageFileAsync("appsettings.json"); using var reader = new StreamReader(stream); var contents = reader.ReadToEnd(); Console.WriteLine("OpenAppPackageFileAsync => " + contents); return stream; } catch (Exception e) { Console.WriteLine("OpenAppPackageFileAsync Exception => " + e.Message); } return null; }附加到 builder.Configuration
var stream = LoadMauiAsset().Result;builder.Configuration.AddJsonStream(stream);附:使用内置资源方式需要在项目属性中设置生成操作为嵌入资源
推荐阅读
- 如何把Java代码玩出花?JVM Sandbox入门教程与原理浅谈
- 如何理解Java中眼花缭乱的各种并发锁?
- 如何删除微信零钱明细(零钱明细账能一次全部删除吗)
- QQ如何手动升级(电脑上qq怎么升级)
- qq安全如何升级(qq安全中心不能直接改密码了)
- 如何更新电脑QQ版本(电脑qq关闭自动更新)
- 什么是 X.509 证书以及它是如何工作的?
- 新qq如何快速升级qq怎么快速升级(在qq怎么快速升级等级)
- 英雄联盟怎么玩好(新人如何玩好英雄联盟)
- 如何才能玩好英雄联盟(怎么样才能玩英雄联盟最好)