当我基于v2运行时将Azure Function项目部署到Function App时,不会自动创建项目所依赖的绑定扩展(在我的情况下为Azure存储)。
我在根目录上部署带有extensions.csproj文件的项目,但是在部署之后,我必须手动运行以下命令以在wwwroot上创建bin和obj文件夹。
dotnet build extensions.csproj -o bin --no-incremental --packages D:\home\.nuget
如果我理解正确,这应该会自动发生。
答案 0 :(得分:2)
用于通过CLI func azure functionapp publish
功能核心工具使用zip部署来部署功能,因此kudu不会构建项目by default。要启用该功能,请在门户网站的“应用程序设置”中将SCM_DO_BUILD_DURING_DEPLOYMENT
设置为true
。
关于为什么默认设置为false的原因,zip部署通常需要部署内容(包括所有相关文件),因此无需再次构建。
对于Azure功能核心工具,当未自动安装扩展时(例如从模板创建触发器),我们通常使用命令func extensions install
至register extensions进行输入/输出绑定。这就是为什么命令func start
和func 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。