2012-10-16 224 views
1

我在使用Couchbase客户端时解决了对Enyim.Caching.dll的依赖问题。我已经通过NuGet下载了dll,并在项目中引用了它们。该解决方案编译罚款与下载程序集Enyim.Caching,版本= 2.12.0.0,文化=中立,PublicKeyToken = 05e9c6b5a9ec94c2。但是在运行时,Couchbase会抛出一个异常,因为它正在寻找Enyim.Caching,Version = 2.12.0.0,Culture = neutral,PublicKeyToken = cec98615db04012e无法解析Enyim.Caching的依赖关系

我不明白为什么它需要另一个相同版本的dll,但与另一个PublicKey。

我也尝试了Cant get the couchbase .net memcache client to run, complains it's strong name validation failed中描述的解决方案,通过使用ns.exe删除强名称要求。但它没有锻炼。

anoyone能帮助我吗?

+0

你能张贴堆栈跟踪?由于Nuget构建都已签名,您不必担心强名称验证。此外,您使用的是哪个版本的Nuget? –

+0

不幸的是,在阅读你的答案之前,我已经用stacktrace删除了所有的日志文件:(但是我已经设法通过下面描述的解决方案解决了这个问题。谢谢! – Sergei

回答

1

最后,我设法使用couchbase-net-client项目的Readme.mdown文件中的描述来解决这个问题。他们说有两种方法可以解决问题:或者通过sn.exe删除强名称检查,或者通过删除汇编签名。

我选择了第二种方式,因为我不需要组装签名。我从零开始重建了源代码,删除了NuGet为我创建的每个条目,并手动添加了对所有程序集的引用。和它的工作就像一个魅力:)

0

就可以删除与文件“public_key.snk”节点“建/ CommonProperties.targets”

<!-- delay sign the assembly if the PrivateKeyPath property is not specified --> 
<!--<PropertyGroup Condition=" '$(PrivateKeyPath)' == '' And '$(PrivateKeyName)' == ''"> 
    <AssemblyOriginatorKeyFile>..\public_key.snk</AssemblyOriginatorKeyFile> 
    <DelaySign>true</DelaySign> 
</PropertyGroup> -->