- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在尝试集成 Parse 时遇到了很多问题使用跨平台 Xamarin 应用程序。起初,我能够使用 Xamarin 和 MvvmCross 创建 Android 应用程序并与 Parse 服务集成(通过在 Xamarin 中添加 Parse 组件来完成)。在开发 iOS 应用程序时,我无法将 Parse 依赖项重构到 Core PCL 项目中,因为 Parse 目前不支持 Xamarin PCL 项目。因此,没有可以添加到 PCL 项目的 Parse NuGet 包或 Xamarin 组件。我可以轻松地将 Parse 组件分别添加到 iOS 项目和 Android 项目,但这将需要在两个项目之间进行大量代码重复。
我读到在 Core 项目中引用 Parse.dll 和 Parse.NetFx45.dll 使我能够在 Core 项目中使用 Parse 调用。我这样做了并且能够成功编译所有内容。但是,当我尝试使用 ParseClient.Initialize("ApplicationID", "DotNetKey");
在核心项目中初始化 Parse 时,我在运行时得到了 TypeInitializationException
。
问题是,将 Parse 服务与 Xamarin 和 MvvmCross 跨平台应用程序集成的最佳方式是什么?我想很多人会这样做,但找不到引用/示例。在 iOS 和 Android 项目中复制代码绝对不是正确的方法。
最佳答案
这里有一些想法:
首先,如果您当前正在手动将 Parse 代码更改从一个项目复制到另一个项目,您可以通过编写您运行的脚本将某些文件克隆到另一个项目来加快该过程。或者,您可以编写一个 grunt 脚本,在检测到更改时自动复制文件。
现在,这是另一种将 Parse 代码存储在一个项目中但跨平台共享的方法:
问题:我使用共享项目而不是 PCL 来存放我的 Xamarin.Forms 和 Parse 代码。 Parse 代码工作正常,但在 XAML 的 ContentPage 中尝试使用我自己的自定义 ContentView 时遇到了问题。我想要一个允许我的自定义 ContentView 和我的 Parse 代码一起工作的解决方案——两者都来自同一个项目。
解决方案:我已经切换到现在将我的 Xamarin.Forms 和 Parse 代码存放在 PCL 中。但是有一个小问题。在我解释捕获之前,只知道它确实可以使用 NO Parse 代码重复(每个平台的特定项目中的一行 Parse 初始化代码除外)。
有什么问题?问题是,在您的可移植类库中,您必须根据您正在编译的内容手动换入和换出 Parse.iOS.dll 或 Parse.Android.dll对于当时。
它会增加文件大小吗?不会。我使用共享项目(它使用平台项目对 Parse dll 的引用)和可移植类库(你有在平台的项目和 PCL 中添加对 dll 的引用),发现这样做不会增加应用程序文件的大小。
以下是我目前正在使用的项目结构(为了保密起见,项目名称已重命名)。 (仅供引用:我正在使用 Xamarin for Mac。)
MyProject.iOS
- Reference to Parse.iOS.dll
- Reference to the Portable Class Library
MyProject.Android
- Reference to Parse.iOS.dll
- Reference to the Portable Class Library
Portable Class Library
- Parse Code
- Xamarin Forms Code
- Reference to either Parse.iOS.dll or Parse.Android.dll
重要:在PCL中换出DLL时,我发现如果在References菜单下右击DLL,然后点击Delete,会导致我的项目出现问题,其中iOS项目将不再编译,因为它仍在寻找 Parse.Android.dll,反之亦然。我尝试清理解决方案,从解决方案的文件系统中删除 bin 和 obj 文件夹,但无济于事。我通过以下操作让它再次工作:右键单击引用,单击编辑引用,然后取消选中一个 Parse DLL 并选中另一个的框。但是,在那之后,我再次尝试了“删除”方法并且编译没有问题。谁知道呢,也许这个问题会再次出现在我身上。
这不会很烦人吗?根据您在平台之间切换的频率,手动交换 DLL 可能会也可能不会很烦人。不管这有多烦人,它不会比重复代码更糟糕。 (也许这个交换过程可以用脚本自动化?我认为如果你用脚本修改 .csproj,你必须卸载 PCL 并重新加载它。有人愿意接受挑战吗?或者也许有办法根据正在编译的平台对 DLL 进行条件引用。有人有想法吗?)
希望对您有所帮助。如果你更喜欢这些想法中的任何一个,而不是你目前正在做的事情,请接受这个作为答案,并让我们知道你决定采取哪条路线。
关于c# - 如何使 Parse 与 Xamarin 的 PCL 项目和 MvvmCross 一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28457773/
我发现在使用parse-node包时,不能再使用Parse.Cloud.httpRequest了。我也知道 Parse 的 Image 对象将不可用。 到目前为止,我已经能够用原生的替换一些 Pars
关闭。这个问题是opinion-based 。目前不接受答案。 已关闭 9 年前。 已锁定。这个问题及其答案是locked因为这个问题是题外话,但却具有历史意义。目前不接受新的答案或互动。 我有一个函
开源 Parse Server 是否包含用于配置新 Parse 实例的 Schema API?我试图消除手动创建应用程序的需要。 这是通过 Parse.com 提供的架构 API http://blo
我想从我的云代码发出一个 http 请求,该请求在我的客户端被调用。 最佳答案 一开始我发现这有点令人困惑,所以希望这会有所帮助。 在您的云代码中main.js Parse.Cloud.define(
这部分代码应该读入两个或更多数字(省略主 io 函数),然后是一个“+”来给出总和。使用有理数是因为稍后我将进行乘法和其他此类操作。 data Expression = Number Rationa
我似乎找不到任何关于此的官方信息:Does Parse.Config work on Parse Server?它曾经在 Parse.com 上工作,但是当我尝试迁移到 Parse.Server 时,
我正在尝试找到使用 Parse.com 添加密码要求的最佳程序。似乎最简单的方法是在保存用户数据之前使用云功能执行。我唯一的警告是,只有当密码与数据库中存储的密码不同或者用户不存在于数据库中时,我才想
我是 android 开发、应用程序开发和一般开发的初学者,我正在尝试为我的 android 应用程序设置后端数据库。我决定使用一个名为 back4app 的服务,以便获得更加用户友好的数据库体验,因
我目前正在尝试将 Facebook 登录功能添加到我的应用程序。 根据Android文档,当我添加 compile 'com.parse:parsefacebookutils-v4-android:1
我正在尝试使用 Rebol 2/3 从字符串中解析货币值,货币值的格式为: 10,50 欧元或 10,50 欧元 我在浏览了所有 PARSE 文档后想出了这段代码,我可以在 Red 中找到它,但在 R
代码: DateTimeFormat dateFormat = DateTimeFormat .getFormat("EEE MMM dd HH:mm:ss zzz y
我不再在 Parse 上看到用于导入 JSON 或 CSV 文件的导入按钮。他们是否将其移动到某个地方,或者不再可能导入这些文件类型? 最佳答案 官方原因是这样的: “[导入类按钮] 几天前被删除,因
我正在使用 PHP 从我的服务器检索一些数据。我想在 javascript 应用程序中使用这些数据,所以我正在做这样的事情: var polylines = ; $polylines 只是一个 PHP
我已经开始使用 .NET 4 System.Numerics.BigInteger Structure我遇到了一个问题。 我正在尝试解析一个包含无符号(正数)的十六进制数字的字符串。我得到一个负数。
我正在使用 PHP 从我的服务器检索一些数据。我想在 javascript 应用程序中使用这些数据,所以我正在做这样的事情: var polylines = ; $polylines 只是一个 PHP
在 Go 中,尝试将字符串转换为 time.Time 时,使用时间包的 Parse 方法不会返回预期结果。似乎问题出在时区。我想更改为 ISO 8601 结合 UTC 日期和时间。 package m
我正在尝试将此字符串模式 "4-JAN-12 9:30:14" 解析为 time.Time。 尝试了 time.Parse("2-JAN-06 15:04:05", inputString) 和许多其
从云代码和解析开始。使用this . 如何删除所有 Parse 项目以便开始创建新项目?我收到以下错误: “您想要创建一个新应用程序,还是将 Cloud Code 添加到现有应用程序中?输入“(n)e
我在解析云代码时有这个功能: Parse.Cloud.define("testfunction", function(request, response) { var username = r
最近,我在 parse.com 上做了一些测试。我现在面临在后台作业中使用 Parse.Object.saveAll 的问题。 从 parse.com 的文档来看,后台作业可以运行 15 分钟。我现在
我是一名优秀的程序员,十分优秀!