2013-01-10 38 views
3

我們有一個Silverlight 5項目,我們目前有一個共享庫DLL的文件夾。我們正在改變對NuGet這些圖書館的使用。如何解決MVVM Light NuGet Silverlight 5與Microsoft.Practices.ServiceLocation的衝突DLL

我們想要使用的一個NuGet包是MVVMLight,用於替換我們當前使用的MVVM Light SL4 DLL,當我們從SL4移動到SL5時,它們從未升級。

但是,當我們安裝包含SL5 DLL的NuGet包時,它自動將我們現有的對Microsoft.Practices.ServiceLocation DLL文件的引用更改爲與MVVM Light包一起提供的引用,它具有相同的版本號,不同的公鑰。

這與我們使用Prism庫的一些其他代碼產生了衝突,該Prism庫使用Microsoft.Practices.ServiceLocation DLL,但使用原始公鑰進行簽名。

很明顯,我們不能在同一個文件夾中兩次使用同一個命名的DLL,因此,如何解決這個問題,同時保持從NuGet安裝Prism和MVVM Light軟件包的任何建議。

非常感謝,

Martyn。

+0

由於從@Filmindji得到下面的答案,我意識到我說衝突是與Caliburn.Micro,它不是,它是MVVMLight和微軟Prism庫之間的微軟版本之間的衝突。 Practices.ServiceLocation DLL,可以通過依賴於CommonServiceLocator包的MVVMLight包解決。 – MartynJones87

+0

我有同樣的問題,並在這裏發佈。我已經從我的解決方案中暫時取出了所有nuget包。我不確定我是否理解乳清Laurent正在使用不同的簽名ServiceLocation.DLL,但我已經回去保留所有在我的PC上使用的引用,直到我覺得我可以再次相信nuget/MVVMLight ... – ecathell

回答

1

我與Microsoft.Practices.ServiceLocation.dll具有完全相同的問題。在我的情況下,如果MvvmLight的nuget包依賴於CommonServiceLocator,我可以這樣解決:http://mvvmlight.codeplex.com/discussions/429311

到目前爲止,沒有關於這方面的消息。

編輯:Laurent僅使用Nuget的CommonServiceLocator推送MVVM Light的一個版本。

+0

從Laurent收到回覆Bugnion在MVVM Light Codeplex論壇上表示,他正在研究如何實現這一點,並在適用的地方提供必要的軟件包。請參閱[鏈接](http://mvvmlight.codeplex.com/discussions/429311)。 – MartynJones87

0

Portable.CommonServiceLocator NuGet包包含現有的已簽名的CSL二進制文件以及支持Windows 8,.net 4.5和其他版本的PCL文件。仍在等待微軟將PCL納入其官方軟件包,但二進制文件與我提到的一樣。

您還可以嘗試使用Portable.MvvmLightLibs,它是PCL版本。那個支持所有的框架(WP7.5 +,.NET 4.5,商店,SL4 +)並使用官方微軟簽署的CSL庫。