如何解决MVVM Light NuGet Silverlight 5与Microsoft.Practices.ServiceLocation DLL的冲突

时间:2013-01-10 12:30:16

标签: silverlight mvvm-light nuget caliburn.micro

我们有一个Silverlight 5项目,我们目前有一个共享库DLL的文件夹。我们正在尽可能地将NuGet用于这些库。

我们想要使用的一个NuGet包是MVVMLight,用于替换我们当前使用的MVVM Light SL4 DLL,当我们从SL4转移到SL5时,它们从未升级过。

但是,当我们安装包含SL5 DLL的NuGet包时,它会自动将我们对Microsoft.Practices.ServiceLocation DLL文件的现有引用更改为MVVM Light程序包附带的文件,该程序包具有相同的版本号,但是不同公钥。

这导致与我们使用Prism库的其他代码发生冲突,该库使用Microsoft.Practices.ServiceLocation DLL,但是使用原始公钥进行签名。

显然我们不能在同一个文件夹中两次使用相同的命名DLL,因此,有关如何解决此问题的任何建议,同时保持从NuGet安装Prism和MVVM Light包。

非常感谢,

马丁。

2 个答案:

答案 0 :(得分:1)

我与Microsoft.Practices.ServiceLocation.dll存在完全相同的问题。在我的情况下,如果MvvmLight的nuget包依赖于CommonServiceLocator,我可以解决这个问题:http://mvvmlight.codeplex.com/discussions/429311

到目前为止,没有关于此的消息。

编辑:Laurent只是使用Nuget的CommonServiceLocator推送一个MVVM Light版本。

答案 1 :(得分:0)

Portable.CommonServiceLocator NuGet包中包含现有的已签名CSL二进制文件以及支持Windows 8,.net 4.5等的PCL二进制文件。仍在等待微软将PCL纳入其官方软件包中,但二进制文件与我提到的二进制文件相同。

您也可以尝试使用Portable.MvvmLightLibs,这是一个PCL版本。那个支持所有框架(WP7.5 +,.NET 4.5,Store,SL4 +)并使用官方微软签名的CSL库。