memcached - NHibernate.Caches.EnyimMemcached, protobuf-net.Enyim want conflicting versions of Enyim.Caching -
i'm trying wire nhibernate utilize enyim.memcached provider second-level caching. additionally, want enyim.memcached utilize protobuf-net serializer.
looking @ nuget , web, can find pretty much pieces need:
nuget:
protobuf-net.enyim
protobuf-net
(dependency of protobuf-net.enyim) enyimmemcached (enyim.caching)
v2.12 (dependency of protobuf-net.enyim) web: (http://sourceforge.net/projects/nhcontrib/files/nhibernate.caches/ -- couldn't find nuget bundle nhibernate.caches.enyimmemcached)
nhibernate.caches.enyimmemcached
enyim.caching
v2.3 however, when wire up, the located assembly's manifest definition not match assembly reference.
error. issue appears be:
nhibernate.caches.enyimmemcached
wants enyim.caching
v2.3 protobuf-net.enyim
wants enyim.caching
v2.12 they don't play nice. tried adding assembly redirect, no avail:
<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>
the "latest" enyim.caching assembly (via enyimmemcached package) has v2.12. d'oh! 2.12 is more recent 2.3. (thanks pointing out marc!)
any thoughts? there nhibernate.caches.enyimmemcached nuget bundle don't know about? or protobuf-net.enyim uses 2.3 instead of 2.12? can't imagine i'm 1 has tried utilize nhibernate-enyim-protobuf-net stack. , i'm surprised assembly binding redirect didn't prepare issue.
update: i'm go after next marc's advice. downloaded source of nhibernate.caches.enyimmemcached , changed enyim.caching reference unsigned v2.3 assembly signed 2.12 assembly. everything's gravy!
"only has v2.12" - tripped me sec there, 2.12 much more recent 2.3; 2.7 jan 2011; 2.12 oct 2012. don't seem able 2.3 @ (even via command-line tools). there no such thing "only ... v2.12", ecause @ time of writing, v2.12 is recent version.
the simplest thing can suggest, though, seek building protobuf transcoder manually, straight referencing whichever version nhibernate works with.
there seems some... oddness surrounding enyim tool; there @ to the lowest degree 2 different versions in wild (with different strong names iirc) - , have different interfaces (int16
vs int32
in few places, , flag
vs flags
, memory). could nhibernate using "other" one. went build nuget; - if "wrong" one, i'm happy re-evaluate that.
edit:
i downloaded nhch-3.2.0.ga-bin.zip link, , used sn -t <path>
check public key; gives:
{path removed}\enyim.caching.dll not represent named assembly
i tried version freshly downloaded nuget via install-package enyimmemcached
, gives:
public key token cec98615db04012e
so basically, @ point between 2.3 , 2.12, has started using strong name.
this means these dlls have fundamentally different identity , can never interchangeable. can't that, sadly. if can't update nh, have local build of protobuf tool against non-strong-named dll. if problems building relating missing fellow member flags
, seek changing code locally flag
.
personally, if had been me, adding, removing or changing public key token worthy of "major" revision update - i.e. going 3.0; since fundamentally breaking change.
nhibernate memcached protobuf-net enyim.caching
No comments:
Post a Comment