Razbezhkin
@Razbezhkin
программист, преподаватель

Как использовать в одном проекте разные версии nuget пакетов?

Здравствуйте.
представьте себе следующую ситуацию.
Есть мой проект (.net framework 4.7.1)
в который я добавил nuget-пакет A и B
нугет-пакет A зависит от нугет-пакета C v. 1.0.0,
нугет-пакет B зависит от нугет-пакета C v.1.1.1.
при запуске получаю ошибку "System.IO.FileLoadException: Не удалось загрузить файл или сборку С, Version=1.0.0.0"
Вопрос, что нужно делать, чтобы одновременно установить две версии нугет-пакетов и чтобы сборки успешно грузились в приложение и каждый из используемых нугет-пакетов использовал свою версию.

Спасибо.
  • Вопрос задан
  • 180 просмотров
Пригласить эксперта
Ответы на вопрос 2
igolets
@igolets
Программист C#, MSSQL
Привет. По-хорошему, лучше сделать два проекта, запустить их в параллели и каким-то образом (через модный MessageBus, или каким-нибудь RESTful запросом) дергать второй процесс из первого.

Но если очень хочется влоб, то могу посоветовать разве что покопать вот эту штуку: https://docs.microsoft.com/ru-ru/dotnet/api/system...
Ещё важно будет учесть, что тут загружаемая ассембли грузится в домен приложения. Если в этом домене уже загружена та же ассембли другой версии могут быть накладки. Поэтому хорошо бы ещё поизучать тему доменов, вот тут, например https://docs.microsoft.com/ru-ru/dotnet/framework/...
Я сам тему предметно не копал, изучал только в ходе подготовки к экзамену, но как я это понял, суть будет почти та же, что и первый вариант — по сути, из основного кода запускается второй поток в другом домене. Разница только в том, что можно попробовать сделать одно приложение, которое в себе содержит второе и умеет его запускать.
Ответ написан
Создайте свою DLL которая будет использовать пакет B. Тогда не будет коллизий.

Т.е. App.exe использует пакет А и MyLib.dll
а MyLib.dll использует пакет B
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы