Что делать, если два пакета nuget указывают на один и тот же Dll - PullRequest
0 голосов
/ 22 октября 2019

Хорошо. Итак, у меня есть одно решение с тремя проектами

  1. Project-A.csproj (превращено в A.nupkg)
  2. Project B.csproj (превращено в B.nupkg)
  3. Utils.csproj

Так как utils.csproj имеет много центральных функций, и A, и B имеют ссылку на utils.dll в качестве ссылки на проект. Поэтому в основном, когда я захожу в папку / bin либо A, либо BI, я вижу utils.dll. Пока все хорошо.

Теперь у меня есть еще один проект. Давайте назовем это consumer.csproj, который ссылается на A.nupkg и B.nupkg в том же порядке, что и упомянутый. Кроме того, Utils.dll имеет некоторые функции, которые ожидают определенные .json файлы, которые он ожидает в определенном месте.

Теперь, когда я сначала ссылаюсь на A.nupkg, он приносит с собой utils.dll, а затем мой потребительский проект знает, что ему нужно перейти в / A / lib, когда выполняющийся код запрашивает utils.dll. ,Это было нормально до тех пор, пока мой потребительский проект не вызвал некоторые функции B.nupkg, которые в свою очередь вызвали функцию utils.csproj, которая искала некоторые json-файлы в папке.nupkg / lib, потому что теперь каждый раз вызывается utils.csproj, компилятор просто запускаетсяв папку A.nupkg ищет его.

Есть ли что-то, что я делаю здесь не так? Если нет, что я могу сделать, чтобы решить эту проблему

Теперь я

1 Ответ

1 голос
/ 22 октября 2019

Ваши библиотечные проекты и нюансы должны храниться в переносимом формате. Это означает, что если вам понадобится динамически извлекать конфигурацию и т. Д. Из файлов json, ваш проект утилит не должен внутренне пытаться использовать эти json. Вместо этого ваш проект утилит должен иметь функцию типа UtilsConfig.UseJson("your json path"). Эта функция теперь может быть использована при запуске вашего потребительского проекта. Если A и B также потребуются определенные файлы json, вы всегда можете использовать функцию UseJson, и проект потребителя переопределит их при необходимости.

...