c# - 如何在 Azure Functions 中使用 NuGet 包?

标签 c# azure azure-functions nuget-package azure-web-app-service

使用Azure Functions ,我可以在我的 C# 函数中引用和使用 NuGet 包吗?

最佳答案

是的!尽管 Azure Functions 门户当前不提供添加和管理 NuGet 包的机制,但运行时支持 NuGet 引用,并将确保在编译和执行函数时正确使用它们。

为了定义您的依赖项,您需要创建一个 Project.json包含所需 NuGet 包引用的文件。以下是添加对 Microsoft.ProjectOxford.Face 的引用的示例版本1.1.0:

{
  "frameworks": {
    "net46":{
      "dependencies": {
        "Microsoft.ProjectOxford.Face": "1.1.0"
      }
    }
   }
}

Azure Functions 门户提供了一种管理函数文件的便捷方法,我们可以使用它来创建(或上传)我们的 project.json :

  1. 在函数的开发部分中,单击查看文件
  2. 点击创建文件选项(如果您的计算机上有之前创建的 project.json 文件,您也可以点击上传文件选项
  3. 将文件命名为project.json并定义您的包引用(您可以使用上面的示例作为模板)。

程序包恢复过程将开始,您应该在日志窗口中看到类似于以下内容的输出:

2016-04-04T19:02:48.745 Restoring packages.
2016-04-04T19:02:48.745 Starting NuGet restore
2016-04-04T19:02:50.183 MSBuild auto-detection: using msbuild version '14.0' from 'D:\Program Files (x86)\MSBuild\14.0\bin'.
2016-04-04T19:02:50.261 Feeds used:
2016-04-04T19:02:50.261 C:\DWASFiles\Sites\facavalfunctest\LocalAppData\NuGet\Cache
2016-04-04T19:02:50.261 https://api.nuget.org/v3/index.json
2016-04-04T19:02:50.261 
2016-04-04T19:02:50.511 Restoring packages for D:\home\site\wwwroot\HttpTriggerCSharp1\Project.json...
2016-04-04T19:02:52.800 Installing Newtonsoft.Json 6.0.8.
2016-04-04T19:02:52.800 Installing Microsoft.ProjectOxford.Face 1.1.0.
2016-04-04T19:02:57.095 All packages are compatible with .NETFramework,Version=v4.6.
2016-04-04T19:02:57.189 
2016-04-04T19:02:57.189 
2016-04-04T19:02:57.455 Packages restored.

正如预期的那样,Azure Functions 运行时将自动添加对包程序集的引用,因此您无需使用 #r "AssemblyName" 显式添加程序集引用。 ,您只需添加所需的 using语句到您的函数并使用您引用的 NuGet 包中定义的类型。

其他部署选项

由于 Azure Functions 构建在应用服务之上,因此作为上述步骤的替代方案,您还可以访问标准 Azure Web 应用程序(Azure 网站)可用的所有出色部署选项。

以下是一些示例:

使用应用服务编辑器(摩纳哥)

要使用应用服务编辑器 (摩纳哥) 直接从浏览器管理文件:

  • 在 Azure Functions 门户上,单击 Function app settings
  • 高级设置部分下,点击 Go to App Service Settings
  • 点击Tools按钮
  • 开发下,点击应用服务编辑器
  • 打开On如果尚未启用,请单击 Go
  • 加载后,拖放您的 project.json将文件放入函数的文件夹中(以函数命名的文件夹。

使用 SCM (Kudu) 端点

  • 导航至:https://<function_app_name>.scm.azurewebsites.net
  • 点击调试控制台 > CMD
  • 导航至D:\home\site\wwwroot\<function_name>
  • 拖放您的 Project.json将文件放入文件夹(到文件网格上)

FTP

持续集成

如果您启用持续集成并使用 project.json 部署您的函数当您的 Function App 未运行时,如果您使用此文件,则在 Function App 初始化后,包恢复将自动进行。建议您不要添加 project.lock.json文件到源代码管理。

预编译程序集

函数也可以部署为预编译的程序集,在这种情况下,所有依赖项管理都在 Visual Studio 中处理。此选项可以用作任何版本的 Visual Studio 上的标准类库,或者通过使用 Visual Studio 2017 Azure Functions Tools .

关于c# - 如何在 Azure Functions 中使用 NuGet 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36411536/

相关文章:

azure - 在 Azure 中限制流量而不扩展?

Azure GetBlobReference 属性后为空

c# - Microsoft.NET.Sdk.Functions引起的版本冲突

python - 部署使用多个 python 文件的 Python 函数

c# - 在 RESTful WebApi 请求上运行后台线程

c# - ajax在asp.net中的使用

c# - asp.net点击按钮时如何动态添加控件?

c# - 从哪里获取通过 API 访问 Azure ServiceBus 所需的信息,尤其是 ClientID 和 ClientSecret

azure - 使用外部参数通过 BICEP 脚本执行 AzurePowerShell

python-3.x - 在 Python Azure 函数中,如何仅用一行代码将共享库导入到我的函数中?