Регистрация расширений привязки Функций Azure

Начиная с Функций Azure версии 2.x в среде выполнения функций по умолчанию содержатся только триггеры HTTP и таймера. Другие триггеры и привязки предлагаются в виде отдельных пакетов.

Приложения-функции библиотеки классов .NET используют установленные в проекте привязки как пакеты NuGet. Пакеты расширений позволяют приложениям-функциям не из библиотеки .NET использовать такие ж привязки без взаимодействия с инфраструктурой .NET.

В таблице приведены сведения, о том когда и каким образом регистрируются привязки.

Среда разработки Регистрация
в службе "Функции" версии 1.x
Регистрация
в функциях 2. x или более поздней версии
Портал Azure Автоматически Автоматически*
Non-.NET языки Автоматически Используйте пакеты расширений (рекомендуется) или устанавливайте расширения напрямую
Библиотека C# классов с использованием Visual Studio С помощью средств NuGet С помощью средств NuGet
Библиотека классов C# с использованием Visual Studio Code Н/Д С помощью .NET Core CLI

* портал использует пакеты расширений.

Доступ к расширениям на non-.NET языках

Для приложений-функций на языках Java, JavaScript, PowerShell, Python и собственном обработчике мы рекомендуем использовать для доступа к привязкам пакеты расширений. В случае невозможности использования таких пакетов расширения можно установить напрямую.

Пакеты расширений

Пакеты расширений — это способ добавления набора совместимых расширений привязки в приложение–функцию. Пакеты расширений можно включить в файле host.json приложения.

Пакеты расширений можно использовать с версией 2.x и более поздними версиями среды выполнения Функций Azure.

У пакетов расширений есть версии. В каждой версии содержится определенный проверенный набор расширений привязки, работающих вместе. Выберите пакет расширений с учетом расширений, которые нужны вам в приложении.

Чтобы включить пакет расширения в свое приложение–функцию добавьте раздел extensionBundle в host.json. Во многих случаях Visual Studio Code и Azure Functions Core Tools автоматически добавят его автоматически.

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[3.3.0, 4.0.0)"
    }
}

В extensionBundle доступны следующие свойства:

Свойство Описание
идентификатор Пространство имен для наборов расширений Функций Microsoft Azure.
version Версия устанавливаемого пакета. В среде выполнения Функций всегда выбирается максимально допустимая версия, определенная в диапазоне версий. Приведенное выше значение версии позволяет 2.0.0 все версии пакета, но не включает 3.0.0. Дополнительные сведения см. в разделе об интервальной нотации для указания диапазонов версий.

В таблице ниже приведены доступные в настоящее время версии стандартного пакета Microsoft.Azure.Functions.ExtensionBundle и ссылки на расширения в этом пакете.

Версия пакета Версия в host.json Включенные расширения
1.x [1.*, 2.0.0) См. extensions.json, использованный для создания пакета
2.x [2.*, 3.0.0) См. extensions.json, использованный для создания пакета
3.x [3.3.0, 4.0.0) См. extensions.json, использованный для создания пакета

Примечание

Несмотря на то, что в host.json можно указать собственный диапазон версий, рекомендуем использовать значение версии из этой таблицы.

Установка расширений напрямую

При отсутствии возможности использования пакетов расширений можно использовать Azure Functions Core Tools локально для установки конкретных пакетов расширений, необходимых для проекта.

Важно!

Нельзя явно устанавливать расширения в приложении-функции, использующем пакеты расширений. Перед выполнением явной установки расширений нужно удалить раздел extensionBundle из файла host.json.

Ниже описаны некоторые причины, по которым может потребоваться установка расширений вручную:

  • Вам нужно получить доступ к определенной версии расширения, которая недоступна в пакете.
  • Вам нужно получить доступ к пользовательскому расширению, недоступному в пакете.
  • Вам нужно получить доступ к конкретной комбинации расширений, которая недоступна в одном пакете.

Примечание

Чтобы вручную установить расширения с помощью основных средств, необходимо установить пакет SDK для .NET Core 3,1 . Пакет SDK для .NET Core используется Azure Functions Core Tools для установки расширений из NuGet. Вам не требуется знание .NET для использования расширений функций Azure.

При явной установке расширений файл проекта .NET с именем extensions.csproj добавляется в корневую папку проекта. Этот файл определяет набор пакетов NuGet, необходимых для ваших функций. Несмотря на то, что в этом файле можно работать со ссылками на пакеты NuGet, Core Tools позволяют устанавливать расширения, не прибегая к редактированию этого файла вручную.

Существует несколько способов использования Core Tools для установки необходимых расширений в локальный проект.

Установка всех расширений

Выполните следующую команду, чтобы автоматически добавить все пакеты расширений, используемые в локальном проекте посредством привязок:

func extensions install

Эта команда считывает файл function.json для определения необходимых пакетов, а затем устанавливает их и перестраивает проект расширений (extensions.csproj). Затем добавляются все новые привязки в текущей версии, но существующие привязки не обновляются. Используйте параметр --force, чтобы обновить существующие привязки до последней версии при установке новых пакетов. Дополнительные сведения см. в разделе о команде func extensions install.

Если приложение-функция использует привязки, которые не распознаются Core Tools, конкретное расширение нужно установить вручную.

Установка конкретного расширения

Используйте следующую команду, чтобы установить конкретный пакет расширения определенной версии, в данном случае это расширение хранилища:

func extensions install --package Microsoft.Azure.WebJobs.Extensions.Storage --version 5.0.0

Дополнительные сведения см. в разделе о команде func extensions install.

Установка расширений из NuGet на языках .NET

В проекте, который работает с библиотекой классов C#, расширения нужно устанавливать напрямую. Пакеты расширений специально разработаны для проектов, которые не основаны на библиотеке классов C#.

Библиотека классов C# в Visual Studio

В Visual Studio пакеты можно установить из консоли диспетчера пакетов, используя команду Install-Package, как показано в следующем примере:

Install-Package Microsoft.Azure.WebJobs.Extensions.ServiceBus -Version <TARGET_VERSION>

Имя пакета, используемого для указанной привязки, можно найти в справочной статье к этой привязке. Например, вы можете ознакомиться с разделом о пакетах в справочной статье о привязках Служебной шины.

Замените <TARGET_VERSION> в этом примере определенной версией пакета, например 3.0.0-beta5. Допустимые версии указаны на страницах конкретных пакетов на веб-сайте NuGet.org. Основные версии, соответствующие версиям 1.x или 2.x среды выполнения Функций Azure, указаны в справочной статье о привязке.

Если вы ссылаетесь на привязку с помощью Install-Package, вам не нужно использовать пакет расширений. Этот подход применяется только для библиотек классов, созданных в Visual Studio.

Библиотека классов C# в Visual Studio Code

В Visual Studio Code установите пакеты для проекта с библиотекой C# классов через командную строку, использовав команду dotnet add package в .NET Core CLI. В следующем примере показано, как добавить привязку:

dotnet add package Microsoft.Azure.WebJobs.Extensions.<BINDING_TYPE_NAME> --version <TARGET_VERSION>

Интерфейс .NET Core CLI можно использовать только при разработке в среде "Функции Azure" версии 2.х.

Замените <BINDING_TYPE_NAME> на имя пакета с необходимой привязкой. Справочную статью по нужной вам привязке см. в списке поддерживаемых привязок.

Замените <TARGET_VERSION> в этом примере определенной версией пакета, например 3.0.0-beta5. Допустимые версии указаны на страницах конкретных пакетов на веб-сайте NuGet.org. Основные версии, соответствующие версиям 1.x или 2.x среды выполнения Функций Azure, указаны в справочной статье о привязке.

Дальнейшие действия