[英]AndroidManifest.xml file doesn't exist in default MAUI project
[英]Load XML file to MAUI project
我正在尝试从 XML 文件加载并在一开始就将其从项目中的资源/原始文件夹解析到 MAUI 应用程序,以便任何类和屏幕都可以访问此已解析的 XML 文件。
public static MauiApp CreateMauiAppAsync()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
});
string path;
Device.BeginInvokeOnMainThread(async () =>
{
path = await ReadResources();
List<Siren> sirens = ParseXML(path);
});
return builder.Build();
}
private static Task<string> ReadResources()
{
var stream = FileSystem.OpenAppPackageFileAsync("file.xml");
var reader = new StreamReader(stream.Result);
Task.Run(() =>
{
return reader.ReadToEnd();
});
throw new FileLoadException();
}
...
我在 my.csproj 文件<MauiAsset Include="Resources\Raw\*" />
中有这行代码,在App.xaml
中我有这个:
...
<ResourceDictionary Source="Resources/Styles/Styles.xaml" />
<ResourceDictionary Source="Resources/Raw/file.xml" />
...
以及默认字体。
这个程序的错误是:
Resource "Resources/Raw/file.xml" not found
我是 MAUI 的新手,我需要知道如何在应用程序开始时解析 XML,以便其他类可以访问数组中已解析的 XML。
您可以查看这篇关于如何在 C# 中反序列化 xml 文档的文章。您还将在 Microsoft C# 文档中找到很多好的资源。 由于 .NET MAUI 使用 .NET 6,您会发现与您找到的任何代码都具有显着的兼容性。您可以查看这篇文章如何从文件加载 XML (LINQ to XML)作为参考。
要包含来自 Resources/Raw 的文件,我不使用 ResourceDictionary,我在 my.csproj 中只有以下内容:
<ItemGroup>
<MauiAsset Include="Resources\Raw\**" LogicalName="%(RecursiveDir)%(Filename)%(Extension)" />
</ItemGroup>
这会复制 Raw 目录中的所有文件(包括 Raw 下的文件夹结构),以便我可以使用 OpenAppPackageFileAsync 访问它们。 然而,出于某种原因,偶尔也会在 the.csproj 的更下方结束一行,其中包含针对特定文件的删除,例如:
<ItemGroup>
<MauiAsset Remove="Resources\Raw\file.xml" />
</ItemGroup>
如果我不删除那些,我会得到一个 Resource not found 错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.