Как включить зависимости для встроенных консольных приложений при использовании пакета «Запустить из» - PullRequest
2 голосов
/ 05 апреля 2020

Я развертываю свое приложение Azure Function с использованием конвейера CI / CD в Azure DevOps. Функция вызывает три консольных приложения, которые включены в пакет. Одним из консольных приложений является автономный .exe, он работает без проблем. Два других имеют зависимости от ряда DLL, которые также включены в пакет. Эта установка хорошо работает на моем локальном компьютере, и при развертывании с использованием WebDeploy.

При развертывании с использованием запуска из пакета в только что созданной службе приложения-функции само приложение-функция загружается так же хорошо, как и отдельная консоль .exe. приложение, но оба консольных приложения с зависимостями dll не запускаются, и оба возвращаются с кодом завершения 0xC0000135 в мое функциональное приложение (что указывает на то, что dll не удалось загрузить).

Теперь, если я разверну один раз, используя Webdeploy, а затем разверну снова, используя Run From Package, я установлю последнюю версию сборки - и консольные приложения теперь работают (!). Я думаю, что это может быть связано с тем, что .exe не может получить доступ к виртуальной файловой системе при загрузке dll: s, это правильно?

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

Каков наилучший способ включить зависимости, такие как dll: s, в пакет при использовании пакета запуска из пакета с Azure функциями?

(Приложение функций - v3, построено с использованием. NET Core 3.1)

...