I noticed that the Couchbase .Net client contains the source for Enyim Memcached. Changes to the Enyim source were made inside of the .Net client, causing it to differ from what is currently in the official Enyim git repository. One example is commit 477b87a6 on 10/10/2013 (NCBC-310: Refactor Connection Pool). This commit added an IPooledSocket interface which does not exist in the current Enyim Memcached release version (2.12.0).
This causes a problem within a Visual Studio solution where another project uses the 2.12.0 version of Enyim. My problem specifically is that we have some internal libraries (packaged into a local NuGet repository) that use enyim.caching 2.12.0. If I try to use one of those libraries with the Couchbase .Net client, I run into Dll Hell, because the Couchbase .Net client’s version of Enyim.caching is 1.3.5 (matches the .net client version), plus this version has code differences from the 2.12.0 version.
This means I either have to:
a) Install both versions of enyim.caching to the global assembly cache, which complicates deployment because my app is no longer self-contained, or
b) Rename and rebuild one of the enyim.caching dll’s: either the official released one used in our library or the one in the couchbase .net client.
Either way, this complicates either our deploy or dev/build process (one example of the dev/build process being more complicated is that we can’t simply upgrade NuGet packages as new versions become available).
So, given that Enyim Memcached uses the Apache 2.0 license, might I make a simple suggestion that you guys do a minor rename to your forked version of Enyim within the Couchbase .Net Client (and release a new version + nuget package)? This will relieve a lot of headaches for poor devs like me, and many others I’m sure (i.e. people using log4net, etc).