Azure функции с пакетами nuget, которые имеют разные версии одной и той же зависимости

Я пишу функцию Azure, которая использует 2 пакета nuget (A и B) из моего личного канала. Пакет A использует Dapper версии 1.50.2 напрямую, а пакет B использует Dapper.SimpleCrud 1.13.0, который зависит от версии Dapper [1.42.0, 2.0.0).

В функции Azure я добавил project.json, где я указываю пакеты A и B и их версии.

Когда я смотрю на установленные пакеты в функции azure, я вижу, что Dapper 1.42.0 и 1.50.2 установлены. когда я пытаюсь вызвать методы в пакетах A и B I, я получаю сообщение об ошибке в журналах функций Azure, в котором говорится, что не удалось найти Dapper версии 1.40. (в зависимости от того, как я установил свой project.json, это будет либо Dapper 1.40, либо 1.50, который не найден функцией Azure)

Я создал тестовую версию пакета Dapper.SimpleCRUD, где зависимость от dapper основана на [1.50.2, 2.0.0), и все работает.

Я также пытался добавить Dapper 1.50.2 в project.json в надежде на то, что он будет использоваться Dapper.SimpleCRUD, но, похоже, он все еще использует Dapper 1.42.

Есть ли какие-то настройки, которые я пропустил в функциях Azure, чтобы разрешить эту настройку, или это ограничение управления пакетами функций Azure?

Спасибо за любую помощь, которую вы можете предоставить.

2 ответа

Мне кажется, что проблема (AFAIK даже в октябре 2016 года) заключается в том, что они до сих пор не нашли хороший способ сделать переадресацию привязки в функции Azure.

Я столкнулся с похожей проблемой с моей функцией Azure, используя два разных пакета nuget с одинаковой зависимостью (но разными версиями).

Здесь был задан похожий вопрос: перенаправление привязки функций Azure

Я закончил тем, что сохранил как можно меньше нюгет, чтобы избежать обязательных перенаправлений. Если это невозможно в вашем проекте, попробуйте использовать для веб-заданий (по крайней мере, в качестве краткосрочного решения), пока функции Azure не поддержат это.

Внепроцессные функции Azure, представленные в .net 5.0 и усиленные в .net 6.0, решают эту и многие другие проблемы!

https://learn.microsoft.com/en-us/azure/azure-functions/dotnet-isolated-process-guide#benefits-of-running-out-of-process

Когда ваши функции .NET выполняются вне процесса, вы можете воспользоваться следующими преимуществами:

  • Меньше конфликтов: поскольку функции выполняются в отдельном процессе, сборки, используемые в вашем приложении, не будут конфликтовать с другими версиями тех же сборок, используемых хост-процессом.
  • Полный контроль над процессом: вы контролируете запуск приложения и можете контролировать используемые конфигурации и запуск промежуточного программного обеспечения.
  • Внедрение зависимостей: поскольку у вас есть полный контроль над процессом, вы можете использовать текущее поведение .NET для внедрения зависимостей и включения промежуточного программного обеспечения в приложение-функцию.
Другие вопросы по тегам