我如何在我的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
:
- 在函数的开发部分,点击查看文件
- 点击选项创build一个文件(如果你的机器上有一个以前创build的
project.json
文件,你也可以点击选项来上传文件 - 命名文件
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
- 点击
Tools
button - 在开发下 ,单击应用程序服务编辑器
- 打开它,如果它尚未启用,并点击开始
- 加载完成后,将你的
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包。