0

我正在製作Windows Phone 8應用程序,但是因爲我希望在某些時候也爲Windows 8.1存儲器發佈此應用程序,所以我努力將應用程序分解出來邏輯轉換爲便攜式類庫。迄今爲止都很好。不能使用NuGet將Unity IoC添加到便攜式類庫

現在是一個很好的男孩,我想使用IoC容器,按優先團結(因爲我在桌面和Windows Phone 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 website上找不到任何有用的文檔來說明它與哪個平臺兼容,但我知道它至少支持WP8,因爲NuGet軟件包非常滿意針對此類庫。

從社區任何指導,將是非常歡迎在這裏我不想使用PCL我的應用程序邏輯,如果我能避免它放棄,但如果它歸結到和的NuGet之間的折騰起來了包管理我會爲了保持NuGet的善良。

這可能與NuGet and Portable Class Libraries - Package doesn't target any framework有關嗎?這似乎更關係到你自己的NuGet包在你自己的PCL中使用。

+0

我認爲這是你的項目中的一個問題,因爲我可以使用Unity,PCL的目標是WP8。剛纔在我的NuGet控制檯中:「成功安裝'Unity 3.0.1304.1'」無論如何,你不使用Unity在主應用程序中? – rubenfa

+0

我在主WP8項目中擁有統一性,它只是因爲某些原因拒絕添加參考的PCL。儘管如此,你的迴應給了我希望,我會圍繞項目設置,看看我能否解決這個問題。 –

回答

2

Unity 3.0.1304.1不包含任何PCL程序集,因此您將無法使用NuGet將其安裝到PCL項目中。

的統一的NuGet包中包含針對以下框架組件:

  • .NETFramework 4.5
  • .NETCore 4.5(Windows應用商店/ WinRT的)
  • 的Windows Phone 8

你可以看到這些目標框架,如果你打開NuGet軟件包到NuGet Package Explorer或下載NuGet軟件包並使用支持zip文件的程序打開它,例如7zip o r Windows內置zip文件支持。

所以,你可能的選項包括:

  1. 在主要的Windows Phone 8應用程序只需使用統一。
  2. 編寫您自己的IOC容器。
  3. 使用支持PCL項目的IOC容器,如Portable.CommonServiceLocator
  4. 編譯你自己的PCL版本的Unity。
  5. 使用統一3.5的更高版本,因爲這包括PCL組件靶向便攜式net45 + WP80 + win8的+ MonoAndroid10 + MonoTouch10

更新:2014年5月11日

統一3。5現在包括一個PCL組件,其目標是便攜式net45 + wp80 + win8 + MonoAndroid10 + MonoTouch10,它將安裝到一個針對便攜式net45 + wp80 + win的項目中。

+0

我不確定Unity爲什麼不能移植,雖然這三個平臺可以輕鬆地以便攜方式支持。此外,看起來手機和商店的表面積完全相同。我會聯繫P&P並詢問他們。 –

+3

Unity 3.5現在支持PCL [發佈說明](https://unity.codeplex.com/wikipage?title=Unity3.5ReleaseNotes) – TombMedia

+0

確實。最新的Unity 3.5包含一個PCL,該PCL可以成功安裝到項目的原始問題中。 –

0

PCL沒有Unity,但可以使用Ninject。