Xamarin.ios rx2.1&;沙马林

Xamarin.ios rx2.1&;沙马林,xamarin.ios,xamarin.android,xamarin,system.reactive,portable-class-library,Xamarin.ios,Xamarin.android,Xamarin,System.reactive,Portable Class Library,我正在尝试在Xamarin上构建一个应用程序,它面向多个平台,但使用rx。到目前为止,我已经创建了一个我希望使用rx的核心PCL,但是当我尝试导入rx 2.1 nuget软件包时,我得到了以下错误: 您正在尝试将此软件包安装到目标为的项目中 “便携式网络40+win+sl50+wp80+MonoAndroid10+MonoTouch10”,但 包不包含任何程序集引用或包含以下内容的内容文件: 与该框架兼容。有关更多信息,请联系 包作者 我知道xamarin商店中有一个rx组件,但我似乎无法将其添

我正在尝试在Xamarin上构建一个应用程序,它面向多个平台,但使用rx。到目前为止,我已经创建了一个我希望使用rx的核心PCL,但是当我尝试导入rx 2.1 nuget软件包时,我得到了以下错误:

您正在尝试将此软件包安装到目标为的项目中 “便携式网络40+win+sl50+wp80+MonoAndroid10+MonoTouch10”,但 包不包含任何程序集引用或包含以下内容的内容文件: 与该框架兼容。有关更多信息,请联系 包作者

我知道xamarin商店中有一个rx组件,但我似乎无法将其添加到我的PCL中

在我看来,理想情况下,我希望PCL中有核心rx库,但平台特定的调度器应该在平台特定的应用程序实现中导入

目前最好的方法是什么

n、 b.我知道其他问题中也提到了这一点,但答案在Xamarin发布频道PCL支持之前

编辑:

我已将PCL修改为目标.NET4.5(并删除了silverlight)。我现在可以拉入rx nuget包,但我得到一个生成警告,它无法解析“system.runtime.interopservices.windowsruntime”

看一看。我个人没有做过任何Xamarin开发,但我知道该项目使用Rx,并且组织运行在包括Xamarin在内的多个平台上——它可能会为您提供正确的方法


Paul Betts在另一个问题中也提到了这一点:

目前,Xamarin Stable无法构建PCL(Alpha刚刚获得,但我还没有尝试过)。在稳定版本(Xamarin.Android 4.10.1)中使用多个csproj文件(参见示例)

,我发现这仍然很奇怪。我有以下设置:

(1) 配置文件为49的PCL库(.net 4.5、Windows 8、Xamarin Android/iOS)。
(2) Android应用程序引用(1)

如果将Rx从Nuget添加到这两个项目中,则会将“targetFramework=”portable-net45+wp80+MonoAndroid10+MonoTouch10”添加到packages.config中,并将对“packages\Rx Core.2.1.30214.0\lib\portable-net45+WinRT45+WP8\System.Reactive.Core.dll”的引用添加到这两个项目中

(1) 然后构建就可以了,但是(2)没有(缺少system.runtime.interopservices.windowsruntime,如初始问题中所示)

但是,将(2)中的接收路径更改为“packages\Rx Core.2.1.30214.0\lib\net40\System.Reactive.Core.dll”是可行的,尽管(2)仍然引用(1)

我查看了Rx代码。System.Runtime.InteropServices.WindowsRuntime的引用由#if HAS_WINRT保护,因此我猜依赖WINRT的库不应该被NuGet放在Xamarin.Android项目中

我可以手动更改引用,不知道如果Rx得到更新会发生什么


但是为什么在PCL项目(1)中有错误的dll并让(2)引用(1)是可以的呢?

是的,这就是我发现的答案,早在Xamarin的非alpha构建中支持PCL;)就希望找到当前的最佳实践,因为建议似乎在不断变化。只需查看Rx源历史,最近添加的PLLITE便携式目标可能值得一看。相关变更集为Y你可能对4.5的要求有所了解。我把PCL改成了那个,现在我可以使用nuget rx包了。现在我有了构建问题,因为我在xamarin studio中找不到构建目标!哦,对了。我删除了那个评论,因为看起来他们已经对.NET 4.0的可移植性进行了排序,但我想可能不是!我无法帮助你处理Xam恐怕是阿林。我必须开始了!使用“.”还存在问题吗?ios项目是否像我确信在xamarin文档中看到的那样?DanH我仍然试图避免它-我会出现错误,xamarin会尝试默默地删除“.”并破坏这些内容,或者干脆说,“这里没有点。”“现在测试版频道上有了RX2.2,增加了更多的构建目标-可能值得一试?我没有回到xamarin,因为我的试用期结束了,它浪费了我一天的时间。2.2beta版仍然不起作用。添加到这两个项目中的dll来自“portable-windows8+net45+wp8”(即“portable-net45+WinRT45+wp8”)。但是,构建应用程序失败,缺少System.Runtime.InteropServices.WindowsRuntime.dll。我从那个参考资料中看不到任何需要的东西,所以我想它根本不应该在那个里。你们对此有进一步的了解吗?我又看了一眼xamarin,现在似乎遇到了不同的问题!从我在别处读到的内容来看,缺少的类将出现在Xamarin.Android的下一个版本中。虽然没有官方消息…Rx已经在PCL项目中完全可用了很长一段时间了。