我在 Resources/Raw 中创建了一个 json 文件,并对 MauiAsset 进行了构建生成操作。我使用以下代码加载 json 文件,但出现未找到文件异常。
public partial class MainPage : ContentPage
{
int count = 0;
public MainPage()
{
InitializeComponent();
var json = LoadMauiAsset();
}
async Task LoadMauiAsset()
{
try
{
using var stream = await FileSystem.OpenAppPackageFileAsync("drugs.json");
using var reader = new StreamReader(stream);
var contents = reader.ReadToEnd();
}
catch (Exception ex)
{
}
}
}```
Run Code Online (Sandbox Code Playgroud)
您粘贴的代码甚至无法编译,或者至少永远不会给您想要的结果。我对您的代码进行了一些修改并验证了它是否有效。
private async void OnButtonClickedHandler(object sender, EventArgs e)
{
var json = await LoadMauiAsset();
await DisplayAlert("", json, "OK");
}
async Task<string> LoadMauiAsset()
{
try
{
using var stream = await FileSystem.OpenAppPackageFileAsync("foo.json");
using var reader = new StreamReader(stream);
return reader.ReadToEnd();
}
catch (Exception ex)
{
return "";
}
}
Run Code Online (Sandbox Code Playgroud)
正如您已经提到的,您需要drugs.json在Resources\Raw\文件中添加 并使用构建操作对其进行标记MauiAsset。要仔细检查,请打开您的 csproj 文件并确保存在这一行:<MauiAsset Include="Resources\Raw\**" LogicalName="%(RecursiveDir)%(Filename)%(Extension)" />这可确保上述文件夹下的所有内容都作为资产包含在内。
并且没有提及您的drugs.json文件。可能有这样的条目:
<ItemGroup>
<None Remove="Resources\Raw\foo.json" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
这很好,但您也可以将其删除。
| 归档时间: |
|
| 查看次数: |
8348 次 |
| 最近记录: |