小编典典

如何在Azure Functions中使用NuGet包?

c#

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


阅读 337

收藏
2020-05-19

共1个答案

小编典典

是! 尽管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功能是在App Services之上构建的,因此可以替代上述步骤,因此您还可以访问标准Azure Web
Apps(Azure网站)可用的所有出色部署选项。

这里有些例子:

使用App Service编辑器(摩纳哥)

为了使用App Service编辑器(摩纳哥)直接从浏览器直接管理文件,请执行以下操作:

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

使用SCM(Kudu)端点

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

的FTP

  • 请按照此处的说明进行FTP配置
  • 连接后(按照上面的说明进行操作),将Project.json文件复制到/site/wwwroot/<function_name>

有关其他部署选项,请参见:https : //azure.microsoft.com/zh-
cn/documentation/articles/web-sites-deploy/

持续集成

如果您project.json在不运行Function App的情况下启用了持续集成并使用文件部署了功能,则一旦Function
App初始化,程序包还原将自动发生。建议 不要project.lock.json文件添加到源代码管理中。

预编译的程序集

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

2020-05-19