xamarin - 在 iOS 和 Android 项目之间共享 JSON 文件

标签 xamarin xamarin.ios xamarin.android

我继承了一个 Xamarin 项目(不是 Xamarin.Forms),现在它具有三个主要组件。

一个 iOS 项目、一个 Android 项目,最后是一个共享项目(不是 PCL 也不是 .Net Standard 项目)。

尽管有共享项目,应用程序仍会读取每个项目的 Assets 文件夹中包含的 json 文件。该文件是重复的。我觉得这个文件应该位于共享项目

为了澄清,这是结构:

共享项目

没有 Assets

iOS

资源/test.json

安卓

Assets /test.json

我相信 test.json 文件应该作为共享项目中的一个文件存在。我的第一步是进行此操作,并将文件更改为适用于 iOS 项目的 Build Action=Content。然而Android项目似乎没有得到这个文件。我在编译和存档的 .apk 文件中找不到它。

对此我能做些什么,还是我需要接受这个设计缺陷并构建 .Net 标准库或 PCL?如果是这样,您究竟如何为非 Xamarin.Forms 项目制作 .Net Standard 或 PCL。

最佳答案

您的用例是什么?如果您只需要在运行时读取 test.json 并使用 .NET 代码解析它,您可以使用嵌入式资源,详细信息请参见:https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/files/

如果您需要将文件放入 iOS reosurces/Android 资源文件夹中,则可以在解决方案中仅保留 test.json 文件一次(在共享项目中或作为解决方案项),并将其添加为 iOS 和 Android 的链接和 Android 项目 - 这是如何在 Visual Studio 中执行此操作的屏幕截图。

Add as link

您也可以在 Visual Studio for Mac 中执行此操作 - 右键单击​​解决方案资源管理器中的包含文件夹,选择“添加文件”,您将收到以下提示 - 选择“添加到文件的链接”

VS For mac

关于xamarin - 在 iOS 和 Android 项目之间共享 JSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45822560/

相关文章:

c# - 如何在 iOS mono 中禁用后退按钮

c# - Expression.Compile 在 Monotouch 上做了什么?

ios - Xamarin + Monotouch:无法自动运行程序集“.../obj/iPhone/Release/mtouch-cache/Build/Touch.exe”(MT3001)

c# - 在 Xamarin.forms 中 Label 的 Text 属性部分应用斜体效果

即使安装并启用了 Hyper-V,Visual Studio 中的 Android 模拟器也无法启动

c# - Xamarin Google Play map 服务错误 400 错误请求

ios - CATiledLayer、CALayerDelegate 和捕获触摸事件

c# - 在安装 NuGet 时将文件复制到 Android 项目

xamarin.android - 对 Xamarin.Android 的 TLS 1.1/1.2 支持

Xamarin 中的 Android ExpandableListView,可使用 MvvmCross 绑定(bind)