使用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
:
- 在函数的开发部分中,单击查看文件
- 点击创建文件选项(如果您的计算机上有之前创建的
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 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
- 按照说明操作 here配置 FTP
连接后(按照上述说明)复制您的
Project.json
文件至/site/wwwroot/<function_name>
有关其他部署选项,请参阅:https://azure.microsoft.com/en-us/documentation/articles/web-sites-deploy/
持续集成
如果您启用持续集成并使用 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/