2013-10-24 4 views
3

Я написал библиотеку DLL MyLib.dll (версия 1.0.0), которая зависит от третьей партии DLL библиотеки OtherLIB.dll (версия 1.0.0). Библиотека OtherLIB.dll доступна в NuGet, и я добавляю ее в проект MyLIB.dll через менеджера пакетов NuGet.C# .Net Dll Ссылки Завис

Теперь давайте говорить, что я пишу новое приложение, скажем MyAspNetMvcApp и я добавляю MyLib.dll (версия 1.0.0) к нему через NuGet. Он автоматически добавляет OtherLIB.dll (версия 1.0.0), поскольку это зависит от него. Все работает отлично, но ...

Через месяц там выпускается новая версия OtherLIB.dll - версия 1.0.1 . Я обновляю его через NuGet.

Теперь мое приложение ASP.NET MVC перестает работать, потому что возникает исключение MyLIB.dll. Он ожидает OtherLIB.dll в версии 1.0.0, но уже используется более новая версия.

В MyLib.dll ссылок проекта я вижу, что «Конкретная версия» флаг для OtherLIB.dll в настоящее время устанавливается на «False», так что я понятия не имею, что здесь происходит ...

Есть ли возможность решить эту проблему иначе, чем путем предоставления привязки сборки в файле web.config? Как я могу добавить ссылку на OtherLIB.dll для MyLIB.dll таким образом, чтобы не было исключения, когда я обновляю OtherLIB.dll в более новой версии?

+0

Похоже, вы страдаете от DLL Hell. Проводили ли вы развертывание некоторых из этих DLL в глобальном кэше сборок (GAC)? – GrantByrne

+0

У вас вопрос немного расплывчатый. Если вы не хотите использовать v1.0.1 из ** OtherLIB.dll **, почему вы обновили свое решение MVC? –

+0

Это не значит, что я не хочу использовать v1.0.1. Я хочу использовать самую последнюю версию ** OtherLIB.dll **, но я не хочу выпускать новую версию ** MyLIB.dll ** каждый раз, когда новая версия ** OtherLIB.dll ** выпущен. Я не хочу, чтобы у пользователей моей библиотеки возникла проблема при обновлении ** OtherLIB.dll ** с помощью менеджера NuGet. –

ответ

0

Возможно, что ваш MyLIB.dll настроен для использования определенной версии OtherLIB.dll. Зайдите в свой проект MyLIB и нажмите ссылку: OtherLIB.dll. Проверьте свойства, чтобы убедиться, что для параметра «Специфическая версия» установлено значение «Истина».

+0

Спасибо - я уже проверил его, а для определенной версии установлено значение False ... –

3

Я столкнулся с этим вчера для веб-разработчика visual studio с использованием Oracle.DataAccess.dll.

Мое решение,

щелкните правой кнопкой решение проекта (* .csproj) и отредактировать его.

справа внизу:

<PropertyGroup> 

Место

<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> 

Пересоберите решение. Вы должны разделить эти две версии dll на два разных каталога в своем проекте при их включении (обязательно).

Я сделал

ora11 >> Oracle.DataAccess.dll (версия 11)

ora9 >> Oracle.DataAccess.dll (версия 9)

Делать это позволяет вашему IDE использовать обе версии DLL.

+1

На самом деле это не поможет. В моем случае ** MyLIB.dll ** зависит от ** OtherLIB.dll **, который доступен в NuGet (и загружается с него). Следовательно, нет возможности «встроить» его в ** MyLIB.dll **. –

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