Функции лазури - общие классы

Я хочу использовать некоторые общие классы для своих функций Azure, чтобы не дублировать код.

Я попытался создать пустую функцию С# и создать классы внутри функции, а затем импортировать в другие функции с помощью:

#r "../Shared/Class.cs"

Ответ 1

Сначала разместите свой общий код внутри папки в корне вашего каталога приложений приложений (например, "Общие" ). Скажем, я поместил общий класс Message.csx в эту папку (например, полный путь D:\home\site\wwwroot\Shared\Message.csx).

Чтобы включить это в свою функцию, используйте команду #load:

#load "..\Shared\Message.csx"

using System;
using Microsoft.Azure.WebJobs.Host;

public static void Run(Message message, TraceWriter log)
{
    log.Info($"C# Queue trigger function processed message: {message.Id}");
}

Для получения дополнительной информации см. справочную страницу здесь. По умолчанию файлы в этом каталоге не будут отслеживаться для изменений. Если вы хотите убедиться, что когда файлы в этом каталоге изменят ваши функции, вы получите изменения и перекомпилируете, вы можете добавить свой "общий" каталог в список watchDirectories в host.json. Например:.

{
    "watchDirectories": [ "Shared" ]
}

Ответ 2

Из-за скорости изменений в функциях Azure этот подход больше не рекомендуется для функций С# (см. Дорожную карту инструментов функций Azure). Обратитесь к следующим сообщениям в блоге, где приведены описания самых современных и эффективных шаблонов для структурирования проекта С# в Visual Studio, и получите все преимущества разделяемой DLL, как это обычно делается в С#.

https://azure.github.io/AppService/2017/03/16/Publishing-a-.NET-class-library-as-a-Function-App.html

https://github.com/devkimchi/Precompiled-Azure-Functions-Revisited

Ответ 3

При работе с Visual Studio и поиске способа обмена некоторыми файлами С# script между функциями внутри вашего приложения-функции следующим образом:

#load "..\Shared\MySharedCode.csx"

Помните, что вы должны установить свойство "Копировать в выходной каталог", чтобы файлы в общей папке "Копировать всегда".

Ответ 4

Позвольте мне ответить на этот вопрос более понятным для человека способом, учитывая, что функции Azure являются новыми и еще не имеют надлежащей документации.

Отпусти шаг за шагом.

  1. Вам нужно перейти в раздел "Функции платформы" функции Azure.

    enter image description here

  2. Затем перейдите к разработке tools-> Расширенные инструменты:

    enter image description here

  3. Далее перейдите к tools-> Zip Push Deploy:

    enter image description here

  4. Затем создайте папку с именем "Shared" внутри корневой папки, как это рекомендуется в документации Microsoft:

    enter image description here


Внутри этой папки вы также можете создавать дополнительные папки, классы, если хотите, например, если вы хотите повторно использовать классы модели между функциями Azure, затем создайте дополнительную папку с именем "Модели" и поместите туда нужный класс.

enter image description here

  1. После создания файла *.csx вы можете отредактировать его, поместить туда свой код и сохранить:

    enter image description here

  2. Затем повторно используйте класс внутри вашей функции Azure, загрузив его с помощью #load:

    enter image description here