"only has v2.12" - this tripped me for a second there, but 2.12 is much more recent than 2.3; 2.7 is Jan 2011; 2.12 is Oct 2012. I don't seem to be able to get 2.3 at all (even via the command-line tools). There is no such thing as "only ... v2.12", ecause at the time of writing, v2.12 is the most recent version.
The simplest thing I can suggest, though, is to try building the protobuf transcoder manually, directly referencing whichever version it is that NHibernate works with.
There seems to be some... oddness surrounding the enyim tool; there are at least 2 different versions in the wild (with different strong names IIRC) - and they even have slightly different interfaces (Int16
vs Int32
in a few places, and Flag
vs Flags
, from memory). It could be that NHibernate is using the "other" one. I went with the build from nuget; but - if this is the "wrong" one, I'm happy to re-evaluate that.
Edit:
I downloaded NHCH-3.2.0.GA-bin.zip from your link, and used sn -T <path>
to check the public key; this gives:
{path removed}\Enyim.Caching.dll does not represent a strongly named assembly
I then tried this with the version freshly downloaded from nuget via Install-Package EnyimMemcached
, which gives:
Public key token is cec98615db04012e
So basically, at some point between 2.3 and 2.12, it has started using a strong name.
This means that these dlls will always have fundamentally different identity and can never be interchangeable. I can't do anything about that, sadly. If you can't update NH, then you will have to do a local build of the protobuf tool against the non-strong-named dll. If you get problems building it relating to a missing member Flags
, try changing the code locally to Flag
.
Personally, if it had been me, adding, removing or changing the public key token is worthy of a "major" revision update - i.e. going to 3.0; since that is fundamentally a breaking change.