具有运行时 2 的 Azure Functions;不会自动创建绑定扩展
Azure Functions with runtime 2; binding extensions not automatically created
当我基于 v2 运行time 将我的 Azure Function 项目部署到我的 Function App 时,我的项目依赖的绑定扩展(在我的例子中是 Azure 存储)不会自动创建。
我在根目录下使用 extensions.csproj 文件部署我的项目,但部署后我必须手动 运行 以下命令在 wwwroot 上创建一个 bin 和 obj 文件夹。
dotnet build extensions.csproj -o bin --no-incremental --packages D:\home\.nuget
如果我没理解错的话,这应该是自动发生的。
使用 Visual Studio 时,您将直接从项目中引用扩展包,以便使用它们的属性和其他类型,因此 Visual Studio 处理安装过程,但仍然需要注册被执行。
这是由 Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator
NuGet 包添加的自定义构建任务处理的,必须显式引用(这将由 SDK/Visual Studio 工具在未来的更新中)。
这些是使用我们前面示例中提到的 CosmosDB 扩展程序必须遵循的步骤:
1.Add 对 Microsoft.Azure.WebJobs.Extensions.Storage
NuGet 包的引用
2.Add 对 Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator
的引用
3.Build 项目
更多细节,你可以参考这个article。
通过 CLI 部署 func azure functionapp publish
函数核心工具使用zip部署来部署函数,这样kudu不会构建项目by default。要启用该功能,请在门户的应用程序设置中将 SCM_DO_BUILD_DURING_DEPLOYMENT
设置为 true
。
至于为什么默认设置为false,zip部署通常需要部署的内容包括所有相关文件,因此无需重新构建。
对于 Azure 函数核心工具,我们通常使用命令 func extensions install
到 register extensions 进行 input/output 绑定,当扩展没有像我们从模板创建触发器那样自动安装时。这就是为什么命令 func start
和 func azure functionapp publish
不构建 extensions.csproj
,扩展应该在我们 运行 或发布函数之前安装。
DevOps 部署更新
使用 Azure 管道,我们需要在归档文件之前构建 extensions.csporj
。添加 .NET Core 构建任务,参数为 -o bin
.
如果你想让 kudu 构建项目,请转到平台功能下的部署中心。选择 VSTS 作为 CI 存储库,kudu 将为您构建和部署项目。
当我基于 v2 运行time 将我的 Azure Function 项目部署到我的 Function App 时,我的项目依赖的绑定扩展(在我的例子中是 Azure 存储)不会自动创建。
我在根目录下使用 extensions.csproj 文件部署我的项目,但部署后我必须手动 运行 以下命令在 wwwroot 上创建一个 bin 和 obj 文件夹。
dotnet build extensions.csproj -o bin --no-incremental --packages D:\home\.nuget
如果我没理解错的话,这应该是自动发生的。
使用 Visual Studio 时,您将直接从项目中引用扩展包,以便使用它们的属性和其他类型,因此 Visual Studio 处理安装过程,但仍然需要注册被执行。
这是由 Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator
NuGet 包添加的自定义构建任务处理的,必须显式引用(这将由 SDK/Visual Studio 工具在未来的更新中)。
这些是使用我们前面示例中提到的 CosmosDB 扩展程序必须遵循的步骤:
1.Add 对 Microsoft.Azure.WebJobs.Extensions.Storage
NuGet 包的引用
2.Add 对 Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator
3.Build 项目
更多细节,你可以参考这个article。
通过 CLI 部署 func azure functionapp publish
函数核心工具使用zip部署来部署函数,这样kudu不会构建项目by default。要启用该功能,请在门户的应用程序设置中将 SCM_DO_BUILD_DURING_DEPLOYMENT
设置为 true
。
至于为什么默认设置为false,zip部署通常需要部署的内容包括所有相关文件,因此无需重新构建。
对于 Azure 函数核心工具,我们通常使用命令 func extensions install
到 register extensions 进行 input/output 绑定,当扩展没有像我们从模板创建触发器那样自动安装时。这就是为什么命令 func start
和 func azure functionapp publish
不构建 extensions.csproj
,扩展应该在我们 运行 或发布函数之前安装。
DevOps 部署更新
使用 Azure 管道,我们需要在归档文件之前构建 extensions.csporj
。添加 .NET Core 构建任务,参数为 -o bin
.
如果你想让 kudu 构建项目,请转到平台功能下的部署中心。选择 VSTS 作为 CI 存储库,kudu 将为您构建和部署项目。