Как решить ад зависимостей Antlr3

У меня есть проект asp.net MVC 4 с MEF и RavenBD.

Когда проект загружается, он выдает это исключение: Не удалось загрузить файл или сборку Antlr3.Runtime.dll.

Я обнаружил, что и RavenDB, и WebGrease (установленный с MVC 4) используют Antlr3. Но WebGrease поставляется с собственной dll Antlr3, подписанной Microsoft — PublicKeyToken 31bf3856ad364e35.

PublicKeyToken по умолчанию для Antlr3 — eb42632606e9261f.

RavenDB и WebGrease используют одну и ту же версию Antlr3 3.3.1.7705.

Как я могу решить эту проблему?


comment
RavenDB скоро удалит деп Antlr3   -  person Ayende Rahien    schedule 11.11.2012
comment
@ayende-rahien Спасибо, Айенде, за информацию. К сожалению, у меня была бы такая же проблема, если бы другая из моих зависимостей зависела от Antlr3. Я имею в виду, что проблема не в RavenDB, а в WebGrease, который использует собственную скомпилированную версию Antlr3.   -  person W3Max    schedule 14.11.2012


Ответы (2)


К сожалению, я не нашел решения конфликтующих зависимостей одной версии с разными подписями.

Но хорошая новость заключается в том, что один из участников WebGrease, Говард Диркинг, ответил на мои вопросы по электронной почте. Вот его ответ:

Привет, Максим, извините, что вы столкнулись с этим. Я работаю над тем, чтобы сделать пару вещей, чтобы быстро решить проблему:

1) Подготовка обновления пакета antlr с последней версией antlr — протестируем и отправим на nuget.org

2) Работа с командой WebGrease над изменением их пакета NuGet, чтобы он не поставлял antlr.dll, а вместо этого принимал зависимость от пакета — в разговоре с ними они не знали, что пакет существует.

Это должно решить проблему с dll hell, с которой вы столкнулись. Надеюсь, это не займет больше пары недель с учетом праздников.

Спасибо,

_говард

person W3Max    schedule 15.11.2012
comment
в настоящее время испытывает то же самое. Вы решили это? Мой WebGrace varsion 1.3.0 (последний из Nuget) мой Antlr3.Runtime version 3.3.1.7705 (приходит из Nuget) - person angularrocks.com; 15.07.2013

У меня была такая же проблема, и я решил ее, удалив весь проект с моего компьютера, получив последнюю версию с сервера и перестроив все зависимости nuget после загрузки проекта. Вы можете попробовать это, это сработало для меня.

Кажется, что некоторые зависимости nuget оставляют мусор после удаления, и это единственный способ сделать чистую перестройку для всего решения.

person user3559993    schedule 22.04.2014