Azure Functions - Shared classes
Let me answer this question in a more human-understandable way taking into account that Azure Functions are new and don't have proper documentation yet.
Let's go step by step.
You need to go to the Azure function "Platform features" section.
Then Navigate to Development tools->Advanced tools:
Next, navigate to Tools->Zip Push Deploy:
Next, create a folder called "Shared" inside root folder as it recommends in Microsoft documentation:
Inside this folder, you can also create additional folders, classes if you want, for example, if you want to reuse Model classes between Azure functions then create an additional folder called "Models" and put your desired class there.
After the creation of
*.csx
file you can edit it and put your code there and save:Then reuse the class inside you Azure function by loading it using
#load
:
Note:
Yet another way is to use Visual Studio with Microsoft DevOps CI/CD. There it will be much straightforward and easy to do the same.
First, put your shared code inside a folder in the root of your Function App directory (e.g. "Shared"). Let's say I put a shared Message.csx
class in that folder (e.g. full path D:\home\site\wwwroot\Shared\Message.csx
).
To include this into your function use the #load
command:
#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}");
}
See the help page here for more information. By default, the files in that directory won't be tracked for changes. If you want to ensure that when files in that directory change your functions will pick up the changes and be recompiled, you can add your "Shared" directory to the watchDirectories
list in host.json
. E.g.:
{
"watchDirectories": [ "Shared" ]
}
Due to the rate of change within Azure Functions, this is no longer the recommended approach for C# functions( see Azure Functions Tools Roadmap). Refer to the following blog posts for depictions of the most modern and efficient patterns for structure a C# project in visual studio, and get all the advantages of shared DLL's the way you normally do in C#.
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