Исправление перенаправления привязки для большого проекта - PullRequest
0 голосов
/ 04 октября 2018

У меня есть решение, которое содержит проект Web API, который ссылается на несколько других проектов.Там есть еще один проект, который содержит несколько функций Azure и несколько проектов для старых устаревших рабочих ролей.

Связывание перенаправлений, и Nuget был проклятием моего существования.Я получаю много ошибок зависимостей, которые, кажется, различаются в зависимости от того, на какой платформе я запускаю свою программу:

System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies

Мое лучшее предположение после некоторых исследований состоит в том, что Web API загружает первый набор библиотек DLL, используя егособственные правила перенаправления привязки, и если другому проекту требуется другая DLL, как указано в другом перенаправлении привязки, он не может найти ее и завершается ошибкой.

Я обнаружил, что смог исправить свой проект, объединив все свои пакеты nuget и приведя все перенаправления привязки в соответствие с перенаправлениями привязки Web API ... однако теперь, похоже, все работает, кроме тестов VSTS, которые продолжаютгенерировать FileNotFoundException для библиотек DLL.

Итак, вместо того, чтобы просто попросить SO исправить мой проект для меня (и это будет сложно, так как он настолько большой), меня больше интересует , что такое правило большого пальца для большихпроекты, как у меня, которые имеют кучу проблем с зависимостями?Например, должны ли все перенаправления связывания быть одинаковыми или нормально, если они различаются?Должен ли я организовать свои зависимости другим способом?Что бы вы сделали, чтобы распутать это?

1 Ответ

0 голосов
/ 04 октября 2018

Может быть, это поможет:

  • Убедитесь, что зависимости зависимостей используют одинаковые версии пакетов (это может привести к возникновению ошибки, т. Е. Проект A использует Проект B и Проект Bиспользует Пакет v4.0, в то время как проект А использует Пакет v4.1.

  • Убедитесь, что в примере «Проект А / Проект Б», что если Проект А напрямую использует DLL, то этот ПроектB тоже делает это или использует пакет nuget для обоих.

По моему опыту, это может занять много времени, так что удачи!

PS: Эта команда дляКонсоль диспетчера пакетов также может помочь:

Update-Package -ProjectName YourProject -reinstall
...