Есть ли способ создать приложение-функцию Azure из нескольких проектов .NET и получить все функции из всех из них?

У нас есть приложение-функция Azure, которое имеет несколько функций и было создано с использованием проекта .NET (имя: Project1).

Мы хотим добавить новую функцию Azure из другого проекта .NET (имя: Project2) в существующее приложение-функцию Azure без перезаписи существующих функций, развернутых из Project1. В настоящее время, когда мы развертываем функцию Azure из Project2, функции из Project1 удаляются, приложение-функция содержит только функции Project2.

Мы развертываем функцию с помощью конвейеров выпуска Azure DevOps, а также пробовали публикацию из Visual Studio - оба ведут себя одинаково.

Итак, есть ли способ сохранить функции из проекта 1 - иметь функции из обоих проектов .NET?


person Gour Gopal    schedule 04.12.2019    source источник
comment
Не получаете последнюю информацию, поможет ли вам следующий обходной путь? Или, если у вас есть какие-либо опасения, не стесняйтесь поделиться им здесь.   -  person Hugh Lin    schedule 09.12.2019


Ответы (2)


Насколько я знаю, хорошего решения для ваших нужд нет, но есть решение, которое не очень подходит для вашей справки.

Я создал приложение-функцию на лазурном портале под названием «huyrFirstFunapp», и в нем есть функция «Function1». Нажмите «Возможности платформы» -> «Дополнительные инструменты (Kudu)». введите здесь описание изображения

На странице «kudu» перейдите в «Консоль отладки» -> «CMD» -> «сайт» -> «wwwroot». Вы можете увидеть папку «Function1», «host.json» и, если вы импортировали какой-то внешний модуль, вы также можете увидеть папку «bin».

Теперь откройте визуальную студию, в которой есть еще один функциональный проект. Здесь у меня есть проект под названием «hurySecondFunapp», в котором есть функция «Function2». введите здесь описание изображения

Щелкните правой кнопкой мыши «hurySecondFunapp» и выберите «Build», он создаст папку «bin» и папку «Function2», вы можете найти их в каталоге, показанном на снимке экрана ниже. введите здесь описание изображения

Затем нам нужно перетащить папку «Function2» с локального компьютера на страницу «kudu» (в каталог «wwwroot», к которому мы перешли). Папка «Function1» и папка «Function2» будут сосуществовать в каталоге «wwwroot», и тогда нам нужно объединить две папки «bin». Если ваши две функции очень просты и не используют никаких других модулей, нам просто нужно перетащить «hurySecondFunapp.dll» и «hurySecondFunapp.pdb» из папки «bin» на локальном компьютере в папку «bin» на странице «kudu». (как показано ниже), то приложение-функция на портале Azure отобразит в нем две функции. введите здесь описание изображения

Но если ваши две функции сложны и используют много модулей или внешних dll, это решение не будет хорошим способом. Нам нужно объединить различия между двумя папками «bin», и, возможно, это вызовет много проблем. Так что просто решение для вашей справки, я не уверен, что оно подойдет вам.

person Hury Shen    schedule 04.12.2019
comment
Можно ли добиться того же с помощью Azure DevOps? - person Gour Gopal; 04.12.2019
comment
Боюсь, что в лазурных девопах этого не добиться. - person Hugh Lin; 11.12.2019

На ум приходят несколько вещей:

1 - Добавьте функцию как ссылку из проекта 2 в проект 1. Таким образом, когда проект построен, функция также включается в вывод. Также, когда вы редактируете функцию из одного проекта, она изменится для другого. По сути, у вас есть один и тот же файл для двух проектов.

Элемент списка

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

Вы также можете подумать, почему вам нужна функция в обоих приложениях-функциях, потому что у вас будут две одинаковые функции, развернутые дважды. Могли бы вы выделить общую логику в общую службу и иметь две отдельные функции? Не могли бы вы вызвать функцию из проекта 1 в проект 2 с помощью HTTP?

person Aaron Zhong    schedule 04.12.2019