当我基于 v2 运行时将 Azure 函数项目部署到函数应用时,不会自动创建项目所依赖的绑定扩展(在本例中为 Azure 存储(。
我在根目录上使用扩展名.csproj文件部署我的项目,但是部署后,我必须手动运行以下命令以在wwwroot上创建bin和obj文件夹。
dotnet build extensions.csproj -o bin --no-incremental --packages D:home.nuget
如果我理解正确,这应该自动发生。
用于通过 CLIfunc azure functionapp publish
部署
函数核心工具使用 zip 部署来部署函数,这样 kudu 默认不构建项目。若要启用该功能,请在门户上的"应用程序设置"中将SCM_DO_BUILD_DURING_DEPLOYMENT
设置为true
。
至于为什么默认设置为 false,zip 部署通常需要部署内容,包括所有相关文件,因此无需再次构建。
对于 Azure 函数核心工具,当扩展未自动安装时,我们通常使用命令func extensions install
来注册用于输入/输出绑定的扩展,就像从模板创建触发器一样。这就是为什么命令func start
和func azure functionapp publish
不构建extensions.csproj
,扩展应该在我们运行或发布函数之前安装。
开发运营部署更新
使用 Azure 管道时,我们需要在存档文件之前生成extensions.csporj
。添加.NET Core构建任务,参数-o bin
。
如果希望 kudu 生成项目,请转到"平台功能"下的"部署中心"。选择 VSTS 作为 CI 存储库,kudu 将为你构建和部署项目。
使用 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.构建项目
有关更多详细信息,您可以参考本文。