是的!尽管 Azure Functions 门户目前不提供添加和管理 NuGet 包的机制,但运行时支持 NuGet 引用,并确保在编译和执行函数时正确使用它们。
为了定义您的依赖项,您需要使用所需的 NuGet 包引用创建一个 Project.json 文件。这是一个添加对Microsoft.ProjectOxford.Face 1.1.0 版本的引用的示例:
{
"frameworks": {
"net46":{
"dependencies": {
"Microsoft.ProjectOxford.Face": "1.1.0"
}
}
}
}
Azure Functions 门户提供了一种方便的方式来管理您的函数文件,我们可以使用它来创建(或上传)我们的project.json:
- 在函数的develop部分,点击view files
- 点击选项创建一个文件(如果你的机器上有一个之前创建的
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
持续集成
如果您在 Function App 未运行时启用持续集成并使用 project.json 文件部署您的函数,则一旦您的 Function App 初始化,程序包还原将自动发生。建议您不要将您的 project.lock.json 文件添加到源代码管理中。
预编译程序集
函数也可以部署为预编译的程序集,在这种情况下,所有依赖项管理都在 Visual Studio 中处理。此选项可用作任何版本的 Visual Studio 上的标准类库或使用 Visual Studio 2017 Azure Functions Tools。