我想在Azure函数上使用一些共享类来重复代码。
我试图创建一个空的C#函数并在函数内创建类,然后导入到其他函数:
#r "../Shared/Class.cs"
答案 0 :(得分:26)
首先,将共享代码放在Function App目录根目录下的文件夹中(例如“Shared”)。假设我在该文件夹中放置了共享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}");
}
有关详细信息,请参阅帮助页面here。默认情况下,不会跟踪该目录中的文件以进行更改。如果您想确保当该目录中的文件更改您的功能时将获取更改并重新编译,您可以将“共享”目录添加到watchDirectories
中的host.json
列表中。 E.g:
{
"watchDirectories": [ "Shared" ]
}
答案 1 :(得分:6)
由于Azure Functions中的更改率,这不再是C#函数的推荐方法(请参阅Azure Functions Tools Roadmap)。有关在Visual Studio中构建C#项目的最现代和最有效模式的描述,请参阅以下博客文章,并以通常在C#中的方式获得共享DLL的所有优点。
https://github.com/devkimchi/Precompiled-Azure-Functions-Revisited
答案 2 :(得分:0)
在Visual Studio中工作并寻找在函数应用程序中的函数之间共享某些C#脚本文件的方法,如下所示:
#load "..\Shared\MySharedCode.csx"
请注意,您应该将“复制到输出目录”设置为'属性将共享文件夹中的文件添加到'始终复制'。
答案 3 :(得分:0)
考虑到Azure Functions是新功能并且还没有适当的文档,让我以更易于理解的方式回答此问题。
让我们一步一步来。
您需要转到Azure函数“平台功能”部分。
然后导航至开发工具->高级工具:
下一步,导航至工具-> Zip Push部署:
接下来,按照Microsoft documentation中的建议,在根文件夹中创建一个名为“ Shared”的文件夹:
在此文件夹中,您还可以根据需要创建其他文件夹,类, 例如,如果要在Azure函数之间重用Model类,则创建一个名为“ Models”的附加文件夹,并将所需的类放在此处。