Должен ли я беспокоиться о конфликтах версий?

Я недавно обновил свой devArt dotConnect для компонентов Oracle с версии 6.? до 7,2

Кажется, все работает нормально.

Однако при компиляции я вижу предупреждение: "Обнаружены конфликты между разными версиями одной и той же зависимой сборки".

Я не знаю, связано ли это с компонентами dotConnect (это не говорит), но я считаю, что это довольно хорошее предположение.

Когда я дважды нажимаю на предупреждение, я получаю диалог:

MS Visual Studio - одна или несколько зависимых сборок имеют конфликт версий.

Вы хотите исправить эти конфликты, добавив записи перенаправления привязки в файл app.config?

Как мило с их стороны (MS) или его (VS) предложить, но... что он будет делать? Это на самом деле не говорит мне точно. Мне остаться или идти?

ОБНОВИТЬ

У меня есть ссылка на два DevArt dotConnect для компонентов Oracle:

Devart.Data - и Devart.Data.Oracle

Devart.Data: Runtime Версия v2.0.50727, Версия 5.0.555.0

Devart.Data.Oracle: Runtime Версия v2.0.50727, Версия 7.2.96.0

Таким образом, существует несоответствие между версией, а не версией. Я не знаю, в этом ли проблема. Было бы хорошо, если бы предупреждение было более явным. Предположительно, "оно" точно знает, в чем проблема - почему оно не разглашает эту важную информацию?

ОБНОВЛЕНИЕ 2

У меня есть другой проект, который использует те же две ссылки. Он даже не скомпилируется после установки обновленных компонентов. Почему такая разница между двумя проектами? Поэтому, хотя файлы.DLL были одинаковыми (то же имя, то же место на диске), я удалил их, а затем добавил их во второй проект, и он работал нормально - без ошибок, без предупреждений. НО, я вернулся к первому проекту и, все еще получая то же самое предупреждение, я удалил и добавил эти две ссылки /DLL - и я все еще получаю то же самое предупреждение. Так что я до сих пор не знаю, что делать / следует ли мне принять VS на свое предложение / предложение перенаправить (я представляю себе, как "старые школьные" телефонные операторы переподключают провода в разные стороны, делая вращения, достойные подростковых поклонников Twister).

2 ответа

Решение

Записи привязки будут добавлять разделы привязки в ваш файл web.config (или app.config), указывая одну версию данной библиотеки на другую. Однако это может быть опасно, если они не совместимы друг с другом. Они похожи

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

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

Да, ты должен волноваться. У вас есть две сборки (скажем, MyAssembly1 и MyAssembly2), которые ссылаются на одну и ту же сборку (скажем, MySharedAssembly), но в разных версиях. Только одна версия MySharedAssembly может быть загружена и использована вашим приложением, и поэтому MyAssembly1 и MyAssembly2 должны будут корректно работать с ним.

Можно было бы сослаться на более старую версию MySharedAssembly. Таким образом, один вопрос заключается в том, является ли MySharedAssembly обратно совместимым? Если нет, то ваше приложение может работать некорректно.

Если вы добавите редирект в вашу конфигурацию, вы в основном говорите, что любые сборки, которые пытаются загрузить более старую версию MySharedAssembly, должны вместо этого использовать более новую версию. Так что, если MySharedAssembly имеет обратную совместимость, то вам наверняка это сойдет с рук. Но для этого потребуется, чтобы ваше приложение имело конфигурационный файл.

Лучше всего было бы найти сборки, которые ссылаются на общую сборку, и посмотреть, есть ли обновление для них, которое использует самую последнюю и лучшую версию.

Другие вопросы по тегам