在?.NET?MAUI?中加載?json?文件的方法
引言:
按core傳統(tǒng)方式添加 AddJsonFile("appsettings.json") 在windows平臺和ssr工作正常,但是在 ios 和 android 無法用這種方式,因為資源生成方式不一樣. 使用內(nèi)置資源方式不夠靈活而且 ios 平臺會提示不能復(fù)制 json 文件到目錄,于是進行了幾天的研究,終于能正確使用了.

資源文件夾
- 官方工程
Resources\Raw\文件夾AboutAssets.txt文件說明
您希望與應(yīng)用程序一起部署的任何原始資產(chǎn)都可以放置在此目錄(和子目錄)。 將資產(chǎn)部署到您的應(yīng)用程序, 由 `.csproj` 中的以下 `MauiAsset` 構(gòu)建操作自動處理。
<MauiAsset Include="Resources\Raw\**" 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();
}復(fù)制一份txt文件按操作復(fù)現(xiàn)成功.
- 直接丟入 appsettings.json 編譯到ios平臺提示錯誤不能復(fù)制 json 文件到目錄, 經(jīng)google,找到方案,需要項目文件屬性中 Remove 文件
<Content Remove="appsettings.json" />
相關(guān)錯誤提示
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ù)制
- 需要在項目屬性中 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);
附:使用內(nèi)置資源方式
需要在項目屬性中設(shè)置生成操作為嵌入資源
<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/BlazorMaui
https://gitee.com/densen2014/BlazorMaui
到此這篇關(guān)于如何在 .NET MAUI 中加載 json 文件?的文章就介紹到這了,更多相關(guān).NET MAUI 加載 json 文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
asp.net下 jquery jason 高效傳輸數(shù)據(jù)
jquery jason 高效傳輸數(shù)據(jù)轉(zhuǎn)自網(wǎng)上稍有修改2009-03-03
ASP.NET Core中如何利用多種方式給Action傳參
這篇文章主要給大家介紹了關(guān)于ASP.NET Core中如何利用多種方式給Action傳參的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
asp.net DropDownList實現(xiàn)二級聯(lián)動效果
這篇文章主要介紹了asp.net DroDownList實現(xiàn)二級聯(lián)動效果的相關(guān)資料,需要的朋友可以參考下2016-02-02
asp.net gridview中用checkbox全選的幾種實現(xiàn)的區(qū)別
這幾天為了改變客戶端grid的全選效率問題,詳細研究了ext中g(shù)rid的全選和gridview中通過腳本實現(xiàn)的全選效率,總結(jié)一下,供大家參考,有錯誤的地方,希望大俠指正,小弟獻丑了。2009-06-06
jQuery+Asp.Net實現(xiàn)省市二級聯(lián)動功能的方法
這篇文章主要介紹了jQuery+Asp.Net實現(xiàn)省市二級聯(lián)動功能的方法,涉及asp.net數(shù)據(jù)庫讀取與字符串轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下2017-05-05

