我正在尝试连接 NHibernate 以使用 Enyim.Memcached 提供程序进行二级缓存。此外,我希望 Enyim.Memcached 使用 protobuf-net 作为其序列化程序。
查看 nuget 和 web,我可以找到几乎所有我需要的部分:
核桃:
protobuf-net.Enyim
protobuf-net
(protobuf-net.Enyim 的依赖关系)EnyimMemcached (Enyim.Caching)
v2.12 (protobuf-net.Enyim 的依赖)
网络:(http://sourceforge.net/projects/nhcontrib/files/NHibernate.Caches/ - 我找不到 NHibernate.Caches.EnyimMemcached 的 nuget 包)
NHibernate.Caches.EnyimMemcached
Enyim.Caching
v2.3
然而,当我把所有东西都连接起来时,我得到了一个The located assembly's manifest definition does not match the assembly reference.
错误。问题似乎是:
NHibernate.Caches.EnyimMemcached
想要Enyim.Caching
v2.3protobuf-net.Enyim
想要Enyim.Caching
v2.12
他们玩得不好。我尝试添加程序集重定向,但无济于事:
<dependentAssembly>
<assemblyIdentity name="Enyim.Caching" publicKeyToken="cec98615db04012e" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.3.0.0" newVersion="2.3.0.0" />
</dependentAssembly>
“最新”的 Enyim.Caching 程序集(通过 EnyimMemcached 包)只有 v2.12。哦!2.12比2.3 更新。(感谢您指出马克!)
有什么想法吗?是否有我不知道的 NHibernate.Caches.EnyimMemcached nuget 包?还是使用 2.3 而不是 2.12 的 protobuf-net.Enyim?我无法想象我是唯一一个尝试使用这个 NHibernate-Enyim-Protobuf-net 堆栈的人。我很惊讶程序集绑定重定向没有解决这个问题。
更新:我很乐意听从 Marc 的建议。我只是下载了 NHibernate.Caches.EnyimMemcached 的源代码并将其 Enyim.Caching 引用从未签名的 v2.3 程序集更改为已签名的 2.12 程序集。一切都是肉汁!