提问人:CitrusBoy 提问时间:1/1/2023 更新时间:2/10/2023 访问量:796
如何在 MAUI 中捆绑文件?
How to bundle files in MAUI?
答:
0赞
Jason
1/1/2023
#1
在我之前链接的文档中
添加到项目中的文件,其生成操作 可以使用此方法打开 MauiAsset。.NET MAUI 项目将 将 Resources\Raw 文件夹中的任何文件作为 MauiAsset 进行处理。
用
FileSystem.OpenAppPackageFileAsync()
评论
0赞
CitrusBoy
1/1/2023
如果我不想使用异步怎么办?
4赞
sema4
2/10/2023
#2
将要捆绑的文件放在项目内的 Resources\Raw\ 文件夹中。我无法让其他地点工作。
使用 Build Action = MauiAsset 标记文件,然后为“复制到输出目录(始终或更新)”选择一个选项
仅通过相对路径访问它们(因此对于大多数文件,您将仅使用原始文件名):
using (Stream instream = FileSystem.Current.OpenAppPackageFileAsync(fileName))
使用 StreamReader 或 BinaryReader 读取内容。
我需要将文件复制到我的应用程序数据目录,但不起作用的是使用 ByteArrayContent.ReadAsByteArray(它挂起)和流。CopyToAsync(它也挂起)。若要复制文件,可以使用此处描述的方法:
根据你的评论,你不想使用异步,但只有 OpenAppPackageFileAsync 可用。
你可以把它放在一个异步函数中
async Task GetMyAssets() { ... }
然后从同步函数中调用它,如下所示:
GetMyAssets().GetAwaiter().GetResult();
评论
0赞
alelom
11/2/2023
如果我想捆绑可执行文件并以编程方式运行它,该怎么办?我正在尝试将 FFMpeg 捆绑在应用程序中并在需要时调用它。
0赞
sema4
11/4/2023
不确定这是否可能。你不能把FFMPEG构建成一个库,并将其链接到你的应用程序中吗?
0赞
alelom
11/4/2023
实际上,我最终设法做到了,只是按照这个答案中的程序操作。我只是按照您的建议捆绑了 exe。然后我制作了一个在构建阶段调用的函数 (),它只是用 读取 exe ,然后用 .可以通过代码的其他部分访问并调用 exe。CreateMauiApp()
BinaryReader
FileSystem.Current.AppDataDirectory
BinaryWriter
AppDataDirectory
下一个:如何清除EOF指标?
评论