我在共享库中保存了一些 .json 文件。
我已经成功地通过代码在 iOS 中很好地阅读了
string fileName = $"Files/file_name.json";
var path = Path.Combine(NSBundle.MainBundle.BundlePath, fileName);
using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read))
using (var streaReader = new StreamReader(stream))
{
return streaReader.ReadToEnd();
}
Run Code Online (Sandbox Code Playgroud)
然而,我一直在努力为 Android 做同样的事情。我无法读取资产,因为它位于共享库中。
using (var stream = Application.Context.Assets.Open("Files/file_name.json))
Run Code Online (Sandbox Code Playgroud)
如果我在 Android 项目的 asset 文件夹下有该文件,那么使用上面的 live 确实可以工作。
我想保留一份用于两个平台的文件副本。
将“共享”文件添加到您的解决方案中(在 PCL/NetStd/Shared 项目内的文件夹中即可,只需将构建类型设置为None)。
在您的 Android 项目中,创建指向文件的链接Assets,构建类型为AndroidAsset.
BundleResource. <ItemGroup>
<AndroidAsset Include="..\Forms_30\her.png">
<Link>Assets\her.png</Link>
</AndroidAsset>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
<ItemGroup>
<BundleResource Include="..\Forms_30\her.png">
<Link>her.png</Link>
</BundleResource>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
注意:您可以使用 PCL/NetStd 库中文件的起始位置手动编辑或从 Finder/Explorer 执行拖放操作,但在拖放文件时.csproj选择创建链接。
现在,您可以通过 DI 使用自己的平台相关代码,也可以Xamarin.Essentials从 PCL/NetStd 库访问这些只读应用程序捆绑文件。
using (var stream = await FileSystem.OpenAppPackageFileAsync("her.png"))
{
~~~
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1823 次 |
| 最近记录: |