2013-03-29 2 views
8

У меня есть приложение C# с двумя библиотеками (moon-apns, tweetsharp). Каждая библиотека имеет ссылку для newtonsoft.json.dll, но разных версий ... Мое приложение успешно работает но одна библиотека отлично работает, а другая генерирует исключение (не может найти файл dll).Используйте разные версии dll-файла в одном приложении

Я думаю, что когда я строю только одну версию, вы попадаете в папку bin, но я не знаю, что делать.

Заранее спасибо.

+1

Если обе библиотеки были построены с требуемой «конкретной версией», я не уверен, что можно сделать. Я предполагаю, что у вас нет доступа к двум библиотекам правильно? – JeremyK

+0

Вы используете Nuget? –

+2

Я думаю, вы можете использовать это сообщение для его решения (я думаю): http://stackoverflow.com/questions/8188191/how-to-manage-version-dependencies-in-ac-net-project – Rikon

ответ

4

Вы можете заставить обе библиотеки ссылаться на ту же версию, используя Assembly Binding Redirects в вашем app.config или web.config. Очевидно, что это работает только до тех пор, пока версии библиотеки совместимы.

+0

Вы также можете обрабатывать событие ['AppDomain.AssemblyResolve'] (https://msdn.microsoft.com/en-us/library/system.appdomain.assemblyresolve (v = vs.110) .aspx). [См. Здесь пример] (http://www.aboutmycode.com/net-framework/assemblyresolve-event-tips/). –

2

Поскольку вы заявили, у вас есть доступ к источнику двух библиотек:

В обоих проектах, установить ссылку на newtonsoft не требуется Specific Version. Перестройте эти проекты.

Теперь, когда вы строите свой основной проект, две библиотеки должны быть в порядке с той же версией newtonsoft DLL до тех пор, пока не будет никаких проблем с совместимостью

Смежные вопросы