- 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/
我在MvvmCross应用程序中使用了Messenger插件,并且注意到它有时会清除我的订阅(“一个或多个监听器失败-已清除清除”)。这在我的应用程序中导致错误。默认情况下,我对订阅使用弱引用,并且我
我正在开发 MVVMCross v3,我想创建自己的插件,我遵循了本教程(适用于 vNext) http://slodge.blogspot.fr/2012/10/build-new-plugin-f
我在 View 模型中有一些来自 Init 的异步调用。问题是有时异步调用在 OnCreate 之前返回,并且 UI 中的属性没有更新。 当我们必须初始化异步数据时,是否有适合这种情况的异步/等待模型
我正在尝试在我的应用程序之一中使用 MvvmCross v3,该应用程序由事件、内容提供者和广播接收器组成。但是,我并没有完全成功。 该应用程序由一个包含逻辑、模型和 View 模型的核心 PCL 和
我希望能够在调试 MvvmCross 应用程序时单步执行 MvvmCross 源代码。而且我想保持使 MvvmCross 库保持最新的过程简单。目前,如果不编辑大量 .csproj 文件(由于某些 P
我有一个 WPF MVVM 应用程序,我想重构它以使用 MvvmCross 来支持 Android 实现的 WPF 和 Mono。 我们的应用程序的 View 包括: 始终可见的工具栏 导航栏区域 主
标题说明了一切。根据您的经验,这两个框架之间的主要区别是什么? 我们什么时候应该使用一个而不是另一个? 预期用途:跨平台开发(Windows 8、iOS、Android、WindowsRT、Mac)。
我希望用户能够将有关我的应用的反馈发送到某个地址。使用电子邮件插件,这一切都很好,但在电子邮件正文中,我想预先填充有关他们正在运行的应用程序的一些信息。 理想情况下,我想要设备、操作系统、屏幕分辨率、
我正在使用 mvvmcross 开发一个 iOS 项目。 应用程序导航是这样的:首先它从初始屏幕 (1) 开始,然后导航到 (2),一个在 3 个选项之间进行选择的 View ,在 View (3)
我正在尝试使用 Visual Studio Team Services(以前是 Visual Studio Online) 和 VSTS Build Agent< 在 Mac 上构建 Xamarin.
我在 View 模型中有一个枚举属性,如果属性值是特定值,我想使标签可见 States state; public States State { get { return this.state
我正在创建类似于 N=32 - The Truth about ViewModels... starring MvxView on the iPad - N+1 days of MvvmCross 中
在MvvmCross应用程序中,我有一个页面具有经典的聊天行为(类似于WhatsApp):此页面显示了两个用户之间交换的消息的历史记录,最后一条消息位于列表的底部。 我已经在Windows Phone
我正在尝试在基于 Xamarin Android 的布局中创建一个自动完成控件。我正在使用 MVVMCross。 我在片段中创建了以下 AXML 布局。 我更新了我的 View
将 Fody 与 MvvmCross 集成的正确方法是什么?我是否需要任何特殊的管道代码或配置来确保调用 MvxNotifyPropertyChanged 类中正确的 RaisePropertyCha
我要同时为我的应用程序实现两种类型的导航,侧边栏导航和父子导航。 我的应用程序从汉堡(侧边栏)菜单开始。 侧边栏菜单中的第一项应执行导航堆栈的重置并打开主视图。 主视图 Controller 应该启动
这个问答中回答的问题是我们如何使用 mvvmcross 在我们的 UI 项目上显示颜色,当我们有一个带有枚举属性的 ViewModel 时,不需要有 Color 属性,也没有 ValueConvert
将参数从一个 View 模型传递到另一个 View 模型,然后修改它然后将其返回到原始 View 模型的推荐方法是什么? 关于将值传递给 View ,即 ShowViewModel(new{ para
I have one custom object in my ViewModel.I want to bind only one of its member to textview in my dro
我想使用 Mvvmcross 为多个平台制作应用程序。 我对 Mvvmcross 等 PCL 库使用配置文件 104,但此配置文件的目标是 .NET 4.5。我想以 .NET 4.0 为目标,以便在
我是一名优秀的程序员,十分优秀!