3

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

我们想要使用的 NuGet 包之一是 MVVMLight,以替换我们当前使用的 MVVM Light SL4 DLL,当我们从 SL4 迁移到 SL5 时,这些 DLL 从未升级。

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

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

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

非常感谢,

马丁。

4

2 回答 2

1

我对 Microsoft.Practices.ServiceLocation.dll 有完全相同的问题。在我的情况下,如果 MvvmLight 的 nuget 包依赖于CommonServiceLocator,这可以解决,正如我在这里建议的那样:http: //mvvmlight.codeplex.com/discussions/429311

到目前为止,还没有这方面的消息。

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

于 2013-01-12T16:32:23.297 回答
0

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

您也可以尝试使用 PCL 版本的 Portable.MvvmLightLibs。它支持所有框架(WP7.5+、.NET 4.5、Store、SL4+)并使用微软官方签署的 CSL 库。

于 2013-01-17T04:14:21.723 回答