温莎城堡Xamarin PCL

本文关键字:PCL Xamarin 城堡 | 更新日期: 2023-09-27 18:07:03

我正在尝试包括Castle。Xamarin 3.0项目中的Windsor和项目中将要使用的Portable类库。当我试图通过nuget包含它时,我得到以下错误

PM> install-package castle.Windsor
Attempting to resolve dependency 'Castle.Core (≥ 3.3.0)'.
Installing 'Castle.Core 3.3.0'.
Successfully installed 'Castle.Core 3.3.0'.
Installing 'Castle.Windsor 3.3.0'.
Successfully installed 'Castle.Windsor 3.3.0'.
Adding 'Castle.Core 3.3.0' to FuelCog.Core.CompositionRoot.
Uninstalling 'Castle.Core 3.3.0'.
Successfully uninstalled 'Castle.Core 3.3.0'.
Install failed. Rolling back...
install-package : Could not install package 'Castle.Core 3.3.0'. You are trying to install this package into a project that targets 'portable-net45+sl50+win+wp80+MonoAndroid10+MonoTouch10', 
but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author.
At line:1 char:1
+ install-package castle.Windsor
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Install-Package], InvalidOperationException
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand

我的目标是Xamarin。Android, Xamarin的。iOS和Windows Phone 8.0。根据这个SO答案,卡塞尔。Windsor使用Mono框架。我试图禁用PCL属性中的各种目标,以查看哪个目标不允许城堡。温莎安装正确,但似乎没有一个选择,工作。

城堡。温莎不能与pcl一起工作,还是我错过了什么?

温莎城堡Xamarin PCL

MS Unity具有PCL支持,包括对Xamarin iOS和Droid的支持,尽管该功能集显然在某些方面有些限制(主要是在自动注册方面)。一般来说,它运行得很好。

Windsor不兼容PCL。在PCL配置文件中缺少api。反射。

我推出了自己的IoC,因为当时没有任何东西可以在所有平台上不费力气地运行,现在可能不是这样了…

无论如何,它是超简单的(可能太简单了一些,对于我相对简单的场景,它是伟大的),如果你还没有找到其他的东西,检查它和免费使用…

Windsor不兼容PCL;而且很可能永远也不会。我建议尝试一下ninject,它与PCL兼容并且维护良好:

你可以从这里获得包:https://www.nuget.org/packages/Portable.Ninject/

也;这里有一篇关于支持IoC容器和Xamarin的好文章:http://arteksoftware.com/ioc-containers-with-xamarin/