【问题标题】:Castle Windsor Xamarin PCL温莎城堡 Xamarin PCL
【发布时间】:2014-06-06 21:28:18
【问题描述】:

我正在尝试将 Castle.Windsor 包含在 Xamarin 3.0 项目和将在项目中使用的可移植类库中。当我尝试通过 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 answer,Castle.Windsor 使用 Mono 框架。我试图禁用 PCL 属性中的各种目标,以查看哪个目标不允许 Castle.Windsor 正确安装,但似乎没有选择有效。

Castle.Windsor 不能与 PCL 一起使用还是我遗漏了什么?

【问题讨论】:

  • 不兼容 PCL。对于 DI,你可以使用 TinyIOC、SimpleContainer 等。我已经抽象了我的解析器类,所以我可以在不同的平台上使用不同的容器。

标签: c# mono xamarin castle-windsor nuget-package


【解决方案1】:

MS Unity 具有 PCL 支持,包括对 Xamarin iOS 和 Droid 的支持,尽管功能集在某些方面显然受到限制(主要是自动注册)。不过总的来说效果不错。

【讨论】:

    【解决方案2】:

    Windsor 不兼容 PCL。 PCL 配置文件中缺少 API,例如。反射。

    【讨论】:

      【解决方案3】:

      rolled my ownIoC 因为当时真的没有任何东西可以在所有平台上毫不费力地工作,现在可能不是这样......

      无论如何,它非常简单(可能对某些人来说太简单了,对于我相对简单的场景来说它很棒),如果您还没有找到其他东西,请检查并免费使用...在您需要的地方扩展。

      【讨论】:

        【解决方案4】:

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

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

        还有;这里有一篇关于支持 IoC Containers 和 Xamarin 的精彩文章: http://arteksoftware.com/ioc-containers-with-xamarin/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多