引言:【如何在 .NET MAUI 中加载 json 文件?】按core传统方式添加 AddJsonFile("Appsettings.json") 在windows平台和ssr工作正常,但是在 IOS 和 Android 无法用这种方式,因为资源生成方式不一样. 使用内置资源方式不够灵活而且 ios 平台会提示不能复制 json 文件到目录,于是进行了几天的研究,终于能正确使用了.
文章插图
资源文件夹
- 官方工程 ResourcesRaw文件夹 AboutAssets.txt 文件说明
您希望与应用程序一起部署的任何原始资产都可以放置在此目录(和子目录) 。将资产部署到您的应用程序, 由 `.csproj` 中的以下 `MauiAsset` 构建操作自动处理 。<MauiAsset Include="ResourcesRaw**" LogicalName="%(RecursiveDir)%(Filename)%(Extension)" />这些文件将与您的包一起部署,并且可以使用 Essentials 访问:async Task LoadMauiAsset(){using var stream = await FileSystem.OpenAppPackageFileAsync("AboutAssets.txt");using var reader = new StreamReader(stream);var contents = reader.ReadToEnd();}
复制一份txt文件按操作复现成功.- 直接丢入 appsettings.json 编译到ios平台提示错误不能复制 json 文件到目录, 经google,找到方案,需要项目文件属性中 Remove 文件 <Content Remove="appsettings.json" />
The path 'XXXXXXXappsettings.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.Configurationvar stream = LoadMauiAsset().Result; builder.Configuration.AddJsonStream(stream);
附:使用内置资源方式需要在项目属性中设置生成操作为嵌入资源<ItemGroup><EmbeddedResource Include="appsettings.json" /></ItemGroup>
代码 BlazorMaui 为工程名var a = Assembly.GetExecutingAssembly();using var stream = a.GetManifestResourceStream("BlazorMaui.appsettings.json");builder.Configuration.AddJsonStream(stream);
项目地址https://github.com/densen2014/BlazorMauihttps://gitee.com/densen2014/BlazorMaui
知识共享许可协议本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可 。欢迎转载、使用、重新发布,但务必保留文章署名AlexChow(包含链接:
https://github.com/densen2014 ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布 。如有任何疑问,请与我联系。
推荐阅读
- 如何存放普洱茶,家里应该如何存放普洱茶呢
- 新手应该如何判断并线时机
- 如何更换汽车轮胎?轮胎更换方法
- win10的网络打印机如何安装 windows10安装网络打印机
- 腮红|产后妈妈如何在月子期通过恢复,快速减肥,这些方法你要知道!
- 猫咪如何进行驱虫,猫咪驱虫注意事项
- 如何训练仓鼠从上手?仓鼠怎样训练躺手
- 淘宝如何查询我买过的店铺
- 如何快速获得天猫积分
- 桑拿板吊顶如何安装