簡體   English   中英

Azure 函數 - 共享類

[英]Azure Functions - Shared classes

我想在 Azure Functions 上使用一些共享類來避免重復代碼。

我試圖創建一個空的 C# 函數並在函數內部創建類,然后使用以下命令導入其他函數:

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

首先,將您的共享代碼放在 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}");
}

有關更多信息,請參閱此處的幫助頁面。 默認情況下,不會跟蹤該目錄中的文件的更改。 如果你想確保當文件在目錄更改您的功能將拿起變化和重新編譯,您可以將您的“共享”目錄到watchDirectories列表host.json 例如:

{
    "watchDirectories": [ "Shared" ]
}

由於 Azure Functions 中的變化率,這不再是 C# 函數的推薦方法(請參閱Azure Functions 工具路線圖)。 有關在 Visual Studio 中構建 C# 項目的最現代和最有效模式的描述,請參閱以下博客文章,並以您通常在 C# 中的方式獲得共享 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

考慮到 Azure Functions 是新的並且還沒有適當的文檔,讓我以更易於理解的方式回答這個問題。

讓我們一步一步來。

  1. 您需要轉到 Azure 函數“平台功能”部分。

    在此處輸入圖片說明

  2. 然后導航到開發工具->高級工具

    在此處輸入圖片說明

  3. 接下來,導航到Tools->Zip Push Deploy

    在此處輸入圖片說明

  4. 接下來,按照Microsoft 文檔中的建議,在根文件夾中創建一個名為“Shared”的文件夾:

    在此處輸入圖片說明


在此文件夾中,您還可以根據需要創建其他文件夾和類,例如,如果您想在 Azure 函數之間重用模型類,則創建一個名為“模型”的附加文件夾並將所需的類放在那里。

在此處輸入圖片說明

  1. 創建*.csx文件后,您可以編輯它並將代碼放在那里並保存:

    在此處輸入圖片說明

  2. 然后通過使用#load加載它來重用 Azure 函數中的類:

    在此處輸入圖片說明


注意:
另一種方法是將 Visual Studio 與 Microsoft DevOps CI/CD 結合使用。 在那里做同樣的事情會非常簡單和容易。

在 Visual Studio 中工作並尋找一種在函數應用程序中的函數之間共享某些 C# 腳本文件的方法時,如下所示:

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

請注意,您應該將共享文件夾中文件的“復制到輸出目錄”屬性設置為“始終復制”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM