运行时2的Azure函数;绑定扩展未自动创建

时间:2018-10-08 13:21:46

标签: azure azure-functions azure-functions-runtime

当我基于v2运行时将Azure Function项目部署到Function App时,不会自动创建项目所依赖的绑定扩展(在我的情况下为Azure存储)。

我在根目录上部署带有extensions.csproj文件的项目,但是在部署之后,我必须手动运行以下命令以在wwwroot上创建bin和obj文件夹。

dotnet build extensions.csproj -o bin --no-incremental --packages D:\home\.nuget

如果我理解正确,这应该会自动发生。

2 个答案:

答案 0 :(得分:2)

用于通过CLI func azure functionapp publish

进行部署

功能核心工具使用zip部署来部署功能,因此kudu不会构建项目by default。要启用该功能,请在门户网站的“应用程序设置”中将SCM_DO_BUILD_DURING_DEPLOYMENT设置为true

关于为什么默认设置为false的原因,zip部署通常需要部署内容(包括所有相关文件),因此无需再次构建。

对于Azure功能核心工具,当未自动安装扩展时(例如从模板创建触发器),我们通常使用命令func extensions installregister extensions进行输入/输出绑定。这就是为什么命令func startfunc azure functionapp publish无法生成extensions.csproj的原因,应该在运行或发布功能之前先安装扩展。

DevOps部署的更新

使用Azure管道,我们需要在归档文件之前构建extensions.csporj。添加一个.NET Core构建任务,参数为-o bin

如果要kudu构建项目,请转到“平台功能”下的“部署中心”。选择VSTS作为CI存储库,kudu将为您构建和部署项目。

答案 1 :(得分:0)

使用Visual Studio时,您将直接从项目中引用扩展包,以使用其属性和其他类型,因此Visual Studio会处理安装过程,但仍需要执行注册。

这由Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator NuGet软件包添加的自定义构建任务处理,该软件包必须明确引用(这将由SDK / Visual Studio工具自动引入将来的更新)。

这些是使用我们前面的示例中提到的CosmosDB扩展所必须遵循的步骤:

1。添加对Microsoft.Azure.WebJobs.Extensions.Storage NuGet程序包的引用

2。添加对Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator

的引用

3。构建项目

有关更多详细信息,您可以参考此article