Могу ли я ссылаться на пакеты NuGet в своей функции C # с помощью функций Azure ?
c#
azure
azure-functions
nuget-package
azure-web-app-service
Фабио Кавальканте
источник
источник
Ответы:
Да! Хотя портал функций Azure в настоящее время не предоставляет механизм для добавления пакетов NuGet и управления ими, среда выполнения поддерживает ссылки NuGet и гарантирует, что они правильно используются при компиляции и выполнении ваших функций.
Чтобы определить свои зависимости, вам необходимо создать
Project.json
файл с необходимыми ссылками на пакеты NuGet. Вот пример, который добавляет ссылку наMicrosoft.ProjectOxford.Face
версию 1.1.0:Портал функций Azure предоставляет удобный способ управления файлами функций, которые мы можем использовать для создания (или загрузки) наших
project.json
:project.json
файл на вашем компьютере.project.json
и определите ссылки на пакеты (вы можете использовать приведенный выше пример в качестве шаблона).Процесс восстановления пакета начнется, и вы должны увидеть в окне журнала вывод, аналогичный следующему:
Как и ожидалось, среда выполнения Функций Azure автоматически добавит ссылки на сборки пакета, поэтому вам НЕ нужно явно добавлять ссылки на сборки, используя
#r "AssemblyName"
, вы можете просто добавить необходимыеusing
операторы в свою функцию и использовать типы, определенные в пакете NuGet, который вы ' я ссылался.Дополнительные варианты развертывания
Поскольку функции Azure построены на основе служб приложений, в качестве альтернативы описанным выше шагам у вас также есть доступ ко всем отличным вариантам развертывания, доступным для стандартных веб-приложений Azure (веб-сайты Azure).
Вот некоторые примеры:
Использование редактора службы приложений (Монако)
Чтобы управлять файлами прямо из браузера с помощью редактора службы приложений (Монако):
Function app settings
Go to App Service Settings
Tools
кнопкуOn
если он еще не включен, и нажмитеGo
project.json
файл в папку вашей функции (папку, названную в честь вашего файла function.Использование конечной точки SCM (Kudu)
https://<function_app_name>.scm.azurewebsites.net
D:\home\site\wwwroot\<function_name>
Project.json
файл в папку (в сетку файлов)FTP
После подключения (следуя инструкциям выше) скопируйте
Project.json
файл в/site/wwwroot/<function_name>
Дополнительные варианты развертывания см. На странице https://azure.microsoft.com/en-us/documentation/articles/web-sites-deploy/.
Непрерывная интеграция
Если вы включите непрерывную интеграцию и развернете свою функцию с
project.json
файлом, когда ваше приложение-функция не запущено, восстановление пакета произойдет автоматически после инициализации приложения-функции. Рекомендуется не добавлятьproject.lock.json
файл в систему управления версиями.Предварительно скомпилированные сборки
Функции также могут быть развернуты как предварительно скомпилированные сборки, и в этом случае все управление зависимостями выполняется в Visual Studio. Этот параметр можно использовать в качестве стандартных библиотек классов в любой версии Visual Studio или с помощью Visual Studio 2017 Azure Functions Tools .
источник
function script root
в вашем последнем абзаце? Я так понимаю, это гдеproject.json
находится. Это правильно?project.json
находится в папке вашей функции, которая является дочерней папкой корня скрипта. Корневой каталог скрипта сопоставляется с вашейwwwroot
папкой в Azure.Эта ветка мне очень помогла, но я все равно потратил несколько часов, пытаясь заставить Project.json работать - безрезультатно.
Если вы создаете функцию Azure в версии 2.x, вам нужно сделать это по-другому.
Создайте новый файл, как указано, но назовите его function.proj . Этот файл имеет структуру XML для импорта библиотек через Nuget.
Вот мой пример импорта Amazon S3 SDK для .Net;
после сохранения вы должны увидеть обновление консоли, в котором говорится, что пакеты устанавливаются. Это действительно плохо документировано, и мне потребовалось несколько часов, чтобы это выяснить. Надеюсь, это кому-то поможет.
источник
Вы можете использовать пакеты Nuget в своих функциях Azure. Самый простой способ - использовать Visual Studio 2017 15.4, где есть шаблон для Функций Azure. Следуйте инструкциям ниже
1) Добавить проект функции Azure: щелкните решение правой кнопкой мыши и выберите «Добавить новый проект». Перейдите к опции ОБЛАКА, там вы найдете проект «Функция Azure».
2) Теперь неплохо добавить любой пакет Nuget. Разверните «ЗАВИСИМОСТИ» и щелкните его правой кнопкой мыши, чтобы выбрать опцию «Управление пакетами Nuget». Появится диалоговое окно Nuget Package, выберите любой пакет Nuget, который вы хотите установить. Смотрите скриншот ниже
3) Теперь опубликуйте свою функцию Azure, Visual Studio позаботится обо всех настройках и т. Д.
Этот метод будет работать, только если вы используете Visual Studio 2017 15.4 или более поздней версии, в противном случае вам придется использовать другие способы, объясненные другими.
источник
Предположим, мы хотим использовать
SFTP
клиент, который представляет собой внешнюю библиотеку, хранящуюся где-то вNuGet
.Для этого в соответствии с последней спецификацией функций Azure выполните следующие действия:
Откройте раздел файлов внутри функции Azure и добавьте новый файл с именем
function.proj
.Дополнительные сведения см. В документации Microsoft .
Внутри этого
function.proj
помещаетсяNuget
ссылка на пакет, использующаяXML
структуру (такую же структуру вы можете найти внутри*.csproj
файла, если вы создаете локальный проект с помощью Visual Studio и устанавливаетеNuGet
в него какой-либо пакет).Затем давайте добавим ссылку на библиотеку к проекту:
Здесь важно указать полный путь к библиотеке, как в примере, который вы видите:
"D:\home\site\wwwroot\bin\your_custom_library.dll"
Наконец, откройте раздел Журналы и сохраните код. Через некоторое время вы должны увидеть
NuGet
журнал восстановления пакетов.Примечание: эти журналы также могут появляться при сохранении
function.proj
файла или при запуске проекта.В случае, если библиотека по-прежнему отображается как неизвестная, попробуйте добавить ее
Dll
вручную в папку bin с помощью Azure Cloud Explorer из Visual Studio .источник
function.proj
, местоположение дляdll
него появляется в разделе журналов через некоторое время. Иногда вам нужно перезагрузить страницу для функции Azure еще раз, иногда нажмите кнопку «Выполнить», чтобы увидеть установку пакетов NuGet, а также местоположение. Пожалуйста, проверьте, что печатается в разделе «Журнал» как место, и попробуйте это указать.Обратите внимание, что также поддерживается новый формат .csproj в Visual Studio 2017. Если вы создаете свой проект как веб-проект ASPNET, среда выполнения Функций Azure загружает все пакеты nuget, необходимые перед сборкой проекта.
источник