在?.NET?MAUI?中加載?json?文件的方法
引言:
按core傳統(tǒng)方式添加 AddJsonFile("appsettings.json") 在windows平臺(tái)和ssr工作正常,但是在 ios 和 android 無(wú)法用這種方式,因?yàn)橘Y源生成方式不一樣. 使用內(nèi)置資源方式不夠靈活而且 ios 平臺(tái)會(huì)提示不能復(fù)制 json 文件到目錄,于是進(jìn)行了幾天的研究,終于能正確使用了.
資源文件夾
- 官方工程
Resources\Raw\
文件夾AboutAssets.txt
文件說(shuō)明
您希望與應(yīng)用程序一起部署的任何原始資產(chǎn)都可以放置在此目錄(和子目錄)。 將資產(chǎn)部署到您的應(yīng)用程序, 由 `.csproj` 中的以下 `MauiAsset` 構(gòu)建操作自動(dòng)處理。 <MauiAsset Include="Resources\Raw\**" LogicalName="%(RecursiveDir)%(Filename)%(Extension)" /> 這些文件將與您的包一起部署,并且可以使用 Essentials 訪問(wèn): async Task LoadMauiAsset() { using var stream = await FileSystem.OpenAppPackageFileAsync("AboutAssets.txt"); using var reader = new StreamReader(stream); var contents = reader.ReadToEnd(); }
復(fù)制一份txt文件按操作復(fù)現(xiàn)成功.
- 直接丟入 appsettings.json 編譯到ios平臺(tái)提示錯(cuò)誤不能復(fù)制 json 文件到目錄, 經(jīng)google,找到方案,需要項(xiàng)目文件屬性中 Remove 文件
<Content Remove="appsettings.json" />
相關(guān)錯(cuò)誤提示
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 和 不復(fù)制
- 需要在項(xiàng)目屬性中 Remove 文件
項(xiàng)目文件
<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);
附:使用內(nèi)置資源方式
需要在項(xiàng)目屬性中設(shè)置生成操作為嵌入資源
<ItemGroup> <EmbeddedResource Include="appsettings.json" /> </ItemGroup>
代碼 BlazorMaui
為工程名
var a = Assembly.GetExecutingAssembly(); using var stream = a.GetManifestResourceStream("BlazorMaui.appsettings.json"); builder.Configuration.AddJsonStream(stream);
項(xiàng)目地址
https://github.com/densen2014/BlazorMaui
https://gitee.com/densen2014/BlazorMaui
到此這篇關(guān)于如何在 .NET MAUI 中加載 json 文件?的文章就介紹到這了,更多相關(guān).NET MAUI 加載 json 文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
asp.net中MVC借助Iframe實(shí)現(xiàn)無(wú)刷新上傳文件實(shí)例
這篇文章主要介紹了asp.net中MVC借助Iframe實(shí)現(xiàn)無(wú)刷新上傳文件的方法,詳細(xì)分析了前端界面、回調(diào)函數(shù)與后臺(tái)處理的詳細(xì)流程,非常具有參考借鑒價(jià)值,需要的朋友可以參考下2014-12-12防止在服務(wù)器處理完成之前用戶多次點(diǎn)擊提交按鈕處理代碼
在提交表單時(shí),如果網(wǎng)頁(yè)速度過(guò)慢或者其他原因,用戶多次提交能導(dǎo)致數(shù)據(jù)的修改,怎么解決這個(gè)問(wèn)題呢,接下來(lái)將為您解決這個(gè)問(wèn)題,需要的朋友可以了解下2012-12-12.NET?Core(.NET6)中g(shù)RPC使用實(shí)踐
gRPC是高性能的遠(yuǎn)程過(guò)程調(diào)用(RPC)框架,本文主要介紹了.NET?Core(.NET6)中g(shù)RPC使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04引用母版頁(yè)后在page頁(yè)面修改母版頁(yè)控件的值的方法
引用母版頁(yè)后在page頁(yè)面修改母版頁(yè)控件的值的方法,需要的朋友可以參考一下2013-03-03ASP.NET Core開(kāi)發(fā)教程之Logging利用NLog寫(xiě)日志文件
一直很喜歡 NLog 的簡(jiǎn)潔和擴(kuò)展性,所以下面這篇文章主要給大家介紹了關(guān)于ASP.NET Core開(kāi)發(fā)教程之Logging利用NLog寫(xiě)日志文件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-07-07ASP.NET(C#) String, StringBuilder 與 StringWriter性能比較
ASP.NET(C#) String, StringBuilder 與 StringWriter性能比較...2007-08-08