不能使用Nuget将Unity IOC添加到便携式类库中



我正在制作Windows Phone 8应用程序,但是,因为我想在某个时候发布此应用程序Windows 8.1 Store,所以我努力将应用程序逻辑分解为便携式班级库。到目前为止一切都很好。

现在是一个好男孩,我想使用一个IOC容器,偏爱Unity(因为我在桌面上熟悉它,并赢得了Phone 8只有8个应用程序)

所以这是我的问题;Nuget Unity软件包不会以此结果安装到我的便携式应用程序中:

Installing 'Unity 3.0.1304.1'.
Successfully installed 'Unity 3.0.1304.1'.
Adding 'Unity 3.0.1304.1' to Logic.
Uninstalling 'Unity 3.0.1304.1'.
Successfully uninstalled 'Unity 3.0.1304.1'.
Install failed. Rolling back...
Could not install package 'Unity 3.0.1304.1'. You are trying to install this package into a
project that targets 'portable-net45+wp80+win', 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.

那么,是否有一个与PCL一起使用的统一性?还是这只是Nuget软件包的缺点?

我没有在P& p网站上找到任何有用的文档来指示它与哪些平台兼容,但我知道它至少支持WP8,因为Nuget软件包对目标的库非常满意。p> 在这里非常欢迎社区的任何指导如果我可以避免使用PCL,我不想放弃使用PCL那和nuget用于包装管理,我将保持nuget优点。

这是否与Nuget和Portable类库有关 - 软件包不针对任何框架?这似乎与制作自己的Nuget软件包有关,以便在您自己的PCL中使用。

Unity 3.0.1304.1不包含任何PCL组件,因此您将无法使用Nuget将其安装到PCL项目中。

Unity Nuget软件包包含针对以下框架的组件:

  • .netframework 4.5
  • .netcore 4.5(Windows Store/Winrt)
  • Windows Phone 8

如果将Nuget软件包打开到Nuget Package Explorer或下载Nuget软件包,则可以看到这些目标框架,并使用支持ZIP文件(例如7ZIP或Windows内置ZIP文件支持)的程序将其打开。

因此您可能的选项是:

  1. 只需在主Windows Phone 8应用程序中使用Unity。
  2. 写自己的IOC容器。
  3. 使用一个支持PCL项目(例如Portable.commonservicelocator)的IOC容器。
  4. 编译您自己的PCL版本的Unity。
  5. 使用后期版本的Unity 3.5,因为这包括PCL组件,针对Portable Net45 WP80 Win8 MonoAndroid10 Monotouch10

更新:2014-05-11

Unity 3.5现在包括一个PCL组件,该PCL组件针对Portable Net45 WP80 Win8 MonoAndroid10 Monotouch10,该项目将安装到一个项目中,该项目针对Portable Net45 WP80 Win。

pcl没有统一性,但是您可以使用ninject。

最新更新