Какова наилучшая практика в .NET-мире для управления транзитивными зависимостями, которые вызывают конфликт версий?Transitive Dependency вызывает противоречивую версию той же DLL
В деталях: Проект A зависит от проекта В, который, в свою очередь, зависит от библиотеки C
также
Проект А также зависит от проекта X, который зависит от различных и (потенциально) несовместимой версии библиотеки С.
A-> B-> Cv1.0
&
А-> Х-> Cv2.0
где
CV1 .0 <> Cv2.0
Есть ли способ сделать эту работу?
Можно ли это сделать БЕЗ использования GAC?
Можно ли это сделать, даже если B и X только в двоичном формате (источник недоступен)?
Другими словами, существует способ, когда я могу иметь проекты B и X, каждый из которых использует свои собственные зависимости при совместном использовании в проекте A, не вызывая конфликтов.
ПРИМЕЧАНИЕ. Я понимаю, что в идеале я не должен иметь этой проблемы вообще, но поскольку зависимость от внешних библиотек расширяется, это будет неизбежным побочным эффектом. Поэтому я задаюсь вопросом, должно ли это происходить, как лучше всего справиться с этим.
В идеале вы должны перестроить или обновить B так, чтобы он зависел от текущей версии C. Если вы не можете этого сделать, вы можете попробовать перепрограммировать версии. http://stackoverflow.com/a/11126867/48082 Это не гарантируется! – Cheeso
Согласились, что в идеале нужно очистить свои проекты, чтобы избежать ситуации в уютном месте, но это не всегда возможно, следовательно, вопрос. – Newtopian
переназначение DLL в некотором роде хорош только в том случае, если обе версии совместимы друг с другом. Худший сценарий здесь заключается в том, что в случае, если они несовместимы, есть способ, чтобы каждая средняя зависимость использовала версию, для которой она была создана, и по-прежнему выполняет работу, которую ожидает их основной проект. – Newtopian