16

我有一个与MEF和RavenBD的asp.net MVC 4项目。如何解决Antlr3依赖地狱

当抛出该异常的项目载荷:无法加载文件或程序Antlr3.Runtime.dll

我发现,无论RavenDB和WebGrease(安装了MVC 4)使用Antlr3。但WebGrease自带的Antlr3 DLL,由微软签名 - PublicKeyToken 31bf3856ad364e35

Antlr3默认PublicKeyToken是eb42632606e9261f。

RavenDB和WebGrease使用Antlr3 3.3.1.7705

相同版本的我怎样才能解决这个问题呢?

+1

RavenDB将删除Antlr3 DEP很快 –

+0

@ ayende-rahien谢谢Ayende的唯一途径信息。不幸的是,如果我的其他依赖依赖Antlr3,我会遇到同样的问题。我的意思是这个问题不是因为RavenDB,而是因为使用自己编译版本的Antlr3的WebGrease。 – W3Max

回答

6

不幸的是,我没有找到解决相同版本与不同签名相冲突的解决方案。

但好消息是,WebGrease的一位贡献者Howard Dierking通过电子邮件回复了我的担忧。这是他的回应:

嗨马克西姆 - 抱歉,你遇到了这个。我正在做两 东西快速解决问题:

1)准备一个更新ANTLR包最新ANTLR 版本 - 将测试并推向nuget.org

2)与WebGrease团队合作更改他们的NuGet软件包 ,以便它不会运送antlr.dll,而是取决于软件包 的依赖关系 - 与他们交谈时,他们不知道存在包 。

这应该可以解决您遇到的dll地狱问题。希望 这将不会超过几个星期的假期。

感谢,

_howard

+0

目前正在经历同样的事情。你解决了吗?我的'WebGrace varsion 1.3.0'(最新来自Nuget)我的'Antlr3.Runtime版本3.3.1.7705'(来自Nuget) – Kuncevic

1

我有同样的问题,并通过该项目后,从我的电脑中删除所有的项目,从服务器获取最新版本并重建所有的Nu​​Get依赖解决问题加载。 你可以试试这个,它为我工作。

看来,一些的NuGet依赖留下一些垃圾被卸载后,身后那就是做一个干净的重建对于所有的解决方案