Я хочу использовать некоторые общие классы для своих функций Azure, чтобы не дублировать код.
Я попытался создать пустую функцию С# и создать классы внутри функции, а затем импортировать в другие функции с помощью:
#r "../Shared/Class.cs"
Я хочу использовать некоторые общие классы для своих функций Azure, чтобы не дублировать код.
Я попытался создать пустую функцию С# и создать классы внутри функции, а затем импортировать в другие функции с помощью:
#r "../Shared/Class.cs"
Сначала разместите свой общий код внутри папки в корне вашего каталога приложений приложений (например, "Общие" ). Скажем, я поместил общий класс 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" ]
}
Из-за скорости изменений в функциях 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
При работе с Visual Studio и поиске способа обмена некоторыми файлами С# script между функциями внутри вашего приложения-функции следующим образом:
#load "..\Shared\MySharedCode.csx"
Помните, что вы должны установить свойство "Копировать в выходной каталог", чтобы файлы в общей папке "Копировать всегда".
Позвольте мне ответить на этот вопрос более понятным для человека способом, учитывая, что функции Azure являются новыми и еще не имеют надлежащей документации.
Отпусти шаг за шагом.
Вам нужно перейти в раздел "Функции платформы" функции Azure.
Затем перейдите к разработке tools-> Расширенные инструменты:
Далее перейдите к tools-> Zip Push Deploy:
Затем создайте папку с именем "Shared" внутри корневой папки, как это рекомендуется в документации Microsoft:
Внутри этой папки вы также можете создавать дополнительные папки, классы, если хотите, например, если вы хотите повторно использовать классы модели между функциями Azure, затем создайте дополнительную папку с именем "Модели" и поместите туда нужный класс.