搜索

查看: 3043|回复: 11

[ASP.NET] 在 .NET MAUI 中加载 json 文件的方法

[复制链接]
发表于 2023-5-4 11:26:02 | 显示全部楼层 |阅读模式
Editor 2023-5-4 11:26:02 3043 11 看全部
目录
  • 引言:
  • 资源文件夹
  • 附:使用内置资源方式
  • 项目地址
    引言:
    按core传统方式添加 AddJsonFile("appsettings.json") 在windows平台和ssr工作正常,但是在 ios 和 android 无法用这种方式,因为资源生成方式不一样. 使用内置资源方式不够灵活而且 ios 平台会提示不能复制 json 文件到目录,于是进行了几天的研究,终于能正确使用了.

    202211150819572.png

    202211150819572.png


    资源文件夹
  • 官方工程 Resources\Raw\文件夹 AboutAssets.txt 文件说明
    您希望与应用程序一起部署的任何原始资产都可以放置在此目录(和子目录)。 将资产部署到您的应用程序, 由 `.csproj` 中的以下 `MauiAsset` 构建操作自动处理。
         
    这些文件将与您的包一起部署,并且可以使用 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 文件
    相关错误提示
    The path 'XXXXXXX\appsettings.json' would result in a file outside of the app bundle and cannot be used.
    The path '..\..\..\..\..\..\..\Repos\BlazorMaui\BlazorMaui\appsettings.json' would result in a file outside of the app bundle and cannot be used.

    最终方案:
  • appsettings.json文件直接放工程根目录
  • 文件属性生成操作为 MauiAsset 和 不复制
  • 需要在项目属性中 Remove 文件

    202211150819573.png

    202211150819573.png


    项目文件
    [I]
          
        [/I]
        [I]
          
            Never
          
        [/I]
    读取配置文件代码
    async static Task 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);
    附:使用内置资源方式
    需要在项目属性中设置生成操作为嵌入资源
    [I]
      
    [/I]
    代码 BlazorMaui 为工程名
    var a = Assembly.GetExecutingAssembly();
    using var stream = a.GetManifestResourceStream("BlazorMaui.appsettings.json");
    builder.Configuration.AddJsonStream(stream);
    项目地址
    https://github.com/densen2014/BlazorMaui
    https://gitee.com/densen2014/BlazorMaui
    到此这篇关于如何在 .NET MAUI 中加载 json 文件?的文章就介绍到这了,更多相关.NET MAUI 加载 json 文件内容请搜索知鸟论坛以前的文章或继续浏览下面的相关文章希望大家以后多多支持知鸟论坛
  • 回复

    使用道具 举报

    发表于 2023-6-28 22:06:51 | 显示全部楼层
    我的苦恼冉 2023-6-28 22:06:51 看全部
    其实我一直觉得楼主的品味不错!呵呵!知鸟论坛太棒了!
    回复

    使用道具 举报

    发表于 2023-6-29 21:11:52 | 显示全部楼层
    惜颜705 2023-6-29 21:11:52 看全部
    楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
    回复

    使用道具 举报

    发表于 2023-6-29 23:41:45 | 显示全部楼层
    素色流年783 2023-6-29 23:41:45 看全部
    其实我一直觉得楼主的品味不错!呵呵!知鸟论坛太棒了!
    回复

    使用道具 举报

    发表于 2023-6-30 09:41:12 | 显示全部楼层
    哈哈SE7 2023-6-30 09:41:12 看全部
    楼主发贴辛苦了,谢谢楼主分享!我觉得知鸟论坛是注册对了!
    回复

    使用道具 举报

    发表于 2023-6-30 09:51:00 | 显示全部楼层
    123456833 2023-6-30 09:51:00 看全部
    我看不错噢 谢谢楼主!知鸟论坛越来越好!
    回复

    使用道具 举报

    发表于 2023-6-30 10:21:49 | 显示全部楼层
    当当当当裤裆坦 2023-6-30 10:21:49 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    回复

    使用道具 举报

    发表于 2023-6-30 11:13:09 | 显示全部楼层
    落败的青春阳落s 2023-6-30 11:13:09 看全部
    论坛不能没有像楼主这样的人才啊!我会一直支持知鸟论坛
    回复

    使用道具 举报

    发表于 2023-6-30 15:25:06 | 显示全部楼层
    风来时狂放 2023-6-30 15:25:06 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    回复

    使用道具 举报

    发表于 2023-6-30 19:30:32 | 显示全部楼层
    风吹吹蛋蛋疼风w 2023-6-30 19:30:32 看全部
    感谢楼主的无私分享!要想知鸟论坛好 就靠你我他
    回复

    使用道具 举报

    • 您可能感兴趣
    点击右侧快捷回复 【请勿灌水】
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则 返回列表

    RSS订阅| SiteMap| 小黑屋| 知鸟论坛
    联系邮箱E-mail:zniao@foxmail.com
    快速回复 返回顶部 返回列表