- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试连接 NHibernate 以将 Enyim.Memcached 提供程序用于其二级缓存。此外,我希望 Enyim.Memcached 使用 protobuf-net 作为它的序列化程序。
查看 nuget 和网络,我几乎可以找到我需要的所有部分:
核心:
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。
D'oh! 2.12 比 2.3 更新。 (感谢马克指出这一点!)
有什么想法吗?有没有我不知道的 NHibernate.Caches.EnyimMemcached nuget 包?或者使用 2.3 而不是 2.12 的 protobuf-net.Enyim?我无法想象我是唯一一个尝试使用这个 NHibernate-Enyim-Protobuf-net 堆栈的人。我很惊讶程序集绑定(bind)重定向没有解决这个问题。
更新:我很乐意听从 Marc 的建议。我只是下载了 NHibernate.Caches.EnyimMemcached 的源代码,并将其 Enyim.Caching 引用从未签名的 v2.3 程序集更改为已签名的 2.12 程序集。一切都是肉汁!
最佳答案
“只有 v2.12”——这让我愣了一下,但 2.12 比 2.3 更新得多; 2.7 是 2011 年 1 月; 2.12 是 2012 年 10 月。我似乎根本无法获得 2.3(即使通过命令行工具)。没有“只有 ... v2.12”这样的东西,因为在撰写本文时,v2.12 是最新版本。
不过,我可以建议的最简单的事情是尝试手动构建 protobuf 转码器,直接引用 NHibernate 使用的任何版本。
enyim 工具似乎有些...奇怪;在野外至少有 2 个不同的版本(具有不同的强名称 IIRC) - 它们甚至具有略微不同的接口(interface)( Int16
vs Int32
在一些地方,和 Flag
vs Flags
,从内存) . 可能 NHibernate 正在使用“其他”。我从 nuget 开始构建;但是 - 如果这是“错误”的,我很乐意重新评估。
编辑:
我从您的链接下载了 NHCH-3.2.0.GA-bin.zip,并使用了 sn -T <path>
检查公钥;这给出:
{path removed}\Enyim.Caching.dll does not represent a strongly named assembly
然后我尝试使用通过 Install-Package EnyimMemcached
从 nuget 下载的新版本,它给出:
Public key token is cec98615db04012e
所以基本上,在 2.3 和 2.12 之间的某个时间点,它开始使用强名称。
这意味着这些 dll 将始终具有根本不同的身份,并且永远无法互换。可悲的是,我对此无能为力。如果您无法更新 NH,则必须针对非强名称 dll 在本地构建 protobuf 工具。如果您在构建它时遇到与缺少成员相关的问题 Flags
,尝试将本地代码更改为 Flag
.
就我个人而言,添加、删除或更改公钥 token 值得进行“重大”修订更新——即升级到 3.0;因为这从根本上说是一个突破性的变化。
关于NHibernate.Caches.EnyimMemcached,protobuf-net.Enyim 想要 Enyim.Caching 的冲突版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14925607/
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
在我们将站点从 ASP.NET + Windows 迁移至 ASP.NET Core + Linux 的过程中,目前遇到的最大障碍就是 —— 没有可用的支持 .NET Core 的 memcache
从 protobuf-net 到 enyim 缓存的转码器是否已弃用? distributed caching with protobuff-net 像这样设置我的 Enyim 配置 app.conf
我正在尝试连接 NHibernate 以将 Enyim.Memcached 提供程序用于其二级缓存。此外,我希望 Enyim.Memcached 使用 protobuf-net 作为它的序列化程序。
我是一名优秀的程序员,十分优秀!