c# - 跨 Android/iOS 的 Xamarin 通用 Xamarin.Forms 代码

标签 c# xamarin portable-class-library

我希望在 Visual Studio 2015 中创建一个 Xamarin Forms PCL,它表示 Xamarin Android 项目和 Xamarin iOS 项目的通用应用程序代码(但不是任何其他项目,即:Windows 或 Windows 手机)。我目前使用的是 PCL 配置文件 111,它是由提供的 Xamarin 模板创建的。

在我遇到对 System.IO.FileStream 的支持之前,一切都很好。基于这篇文章(在保存和加载文件部分): https://developer.xamarin.com/guides/xamarin-forms/working-with/files/

Android 和 iOS 都可以立即使用大部分 System.IO,这在我的 Android 和 iOS 项目中很明显,我可以在其中使用 FileStream 来读取/写入文件。

由于代码是相同的,将它维护在一个地方会更有意义,但我似乎无法找到可以执行此操作的配置文件(或 visual studio 模板),有什么想法吗?

我还看了这里: http://blog.stephencleary.com/2012/05/framework-profiles-in-net.html

但是可移植类库配置文件表没有提到 Xamarin/Android/iOS。

难道就没有比 111 更窄的 PCL 配置文件可以提供我想要的吗?我唯一的选择是使用 DependencyService 设置吗?也许共享代码项目会更干净?

编辑:虽然我提到 FileStream 作为我正在尝试做的事情的例子,但我想解决维护 Android/iOS 的任何通用代码的问题(并且只有那些平台,不是 Windows/Windows Phone/Silverlight/ASP.NET 等)适用于 Android 和 iOS 支持使用通用代码的功能,但其他平台之一不支持的任何情况。

最佳答案

您可以使用 PCLStorage Library对于跨平台 IO:

public async Task PCLStorageSample()
{
    IFolder rootFolder = FileSystem.Current.LocalStorage;
    IFolder folder = await rootFolder.CreateFolderAsync("MySubFolder",
        CreationCollisionOption.OpenIfExists);
    IFile file = await folder.CreateFileAsync("answer.txt",
        CreationCollisionOption.ReplaceExisting);
    await file.WriteAllTextAsync("42");
}

关于c# - 跨 Android/iOS 的 Xamarin 通用 Xamarin.Forms 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36803204/

相关文章:

c# - XPath 查询中的撇号 (')

c# - 如何让 MVVM Light Messenger 与 PCL 配合使用

xamarin - 在Xamarin和MvvmCross上使用PCL配置文件158超过78有任何优点吗?

c# - 在运行时创建带有图像和链接按钮的面板

C# 控制台应用程序 % 数学总是返回 0

c# - 将 C++ 结构传递给 C# 应用程序

c# - WPF 中的可移植类库 ICommand 编译错误——不确定如何适本地解决这个问题?

c# - 当按下确定按钮时关闭对话框

android - Xamarin Forms 如何在 API 30 (Android 11) 中更改 Android 状态栏图标颜色

c# - 我可以从 txt 文件内部存储(文档文件夹)读取和写入,但无法浏览到该位置,因为它不存在