我如何在我的Azure函数中使用NuGet包?

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

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

为了定义你的依赖关系,你需要创build一个带有所需的NuGet包引用的Project.json文件。 下面是一个示例,添加对Microsoft.ProjectOxford.Face版本1.1.0的引用:

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

Azure函数门户提供了一种便捷的方式来pipe理您的函数文件,我们可以使用它来创build(或上传)我们的project.json

  1. 在函数的开发部分,点击查看文件
  2. 点击选项创build一个文件(如果你的机器上有一个以前创build的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函数运行时会自动添加对程序包程序集的引用,所以不需要使用#r "AssemblyName"显式地添加程序集引用,只需将所需的using语句添加到函数中,并使用定义的types在你引用的NuGet包中。

其他部署选项

由于Azure函数是构build在App Services之上的,所以作为上述步骤的替代scheme,您还可以访问标准Azure Web应用程序(Azure网站)提供的所有优秀部署选项。

这里有些例子:

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

为了通过使用应用程序服务编辑器(摩纳哥)直接从您的浏览器pipe理您的文件:

  • 在Azurefunction门户上,单击Function app settings
  • 高级设置部分下,点击Go to App Service Settings
  • 点击Toolsbutton
  • 开发下 ,单击应用程序服务编辑器
  • 打开它,如果它尚未启用,并点击开始
  • 加载完成后,将你的project.json文件拖放到你的函数文件夹(以你的函数命名的文件夹中)。

使用SCM(Kudu)端点

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

FTP

  • 按照这里的说明来configurationFTP
  • 一旦连接(按照上面的说明)将您的Project.json文件复制到/site/wwwroot/<function_name>

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

持续集成

如果启用持续集成并在Function App未运行时将其部署到project.json文件中,则在您的Function App初始化后,程序包还原将自动进行。 build议您不要将您的project.lock.json文件添加到源代码pipe理。

预编译的程序集

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

请注意,Visual Studio 2017中新的.csproj格式也受支持。 如果将项目创build为ASPNET Web项目,则Azure函数运行时会在构build项目之前下载所需的所有nuget包。