Я пишу консольное приложение (которое позже станет веб-заданием) и сталкиваюсь с ситуацией, когда 2 библиотекам, предоставляемым Microsoft, требуются разные версии сборки.
- Библиотека # 1 - запросит Microsoft.IdentityModel.Clients.ActiveDirectory (> = 3.14.2)
- Библиотека # 2 - Microsoft.IdentityModel.Clients.ActiveDirectory (> = 2.22.302111727 && <3.0.0) </li>
Это не похоже на просто измененную привязку сборки к
<dependentAssembly>
<assemblyIdentity name="Microsoft.IdentityModel.Clients.ActiveDirectory.Platform" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.19.8.16603" newVersion="3.19.8.16603" />
</dependentAssembly>
Помогает в моей ситуации.
Чтобы добавить к моей головной боли, nuget не загружает другую библиотеку, если первая уже есть (мне удалось преодолеть с помощью IgnoreDependencies
).
Я проверил - естьнет более новой или более старой версии обеих библиотек, которая позволила бы мне использовать одну и ту же сборку.
Итак, мой вопрос:
- Есть ли хороший способ решить эту проблему раз и навсегда (обас длл ад и нюгет)?
- Может ли IL Merge помочь?(Я могу сохранить всю работу с библиотекой № 1 в одном проекте, добавив ILMerge этот проект со всеми его зависимостями).
- Какой будет правильный подход.