我有一个新的 dotnet 7 azure 函数应用程序,我想使用 Azure DevOps 管道在隔离模式下运行。
我可以在蓝铜矿上本地运行该函数,没有问题,因为我有一个 local.settings.json :“FUNCTIONS_WORKER_RUNTIME”:“dotnet-isolated”
此外,该函数将在 Azure 中正常运行,因为函数应用程序与应用程序设置相同。
当尝试使用“func start”命令在 DevOps 管道中运行该函数时,就会出现问题。因为没有 local.settings.json (这是 git 忽略的,以减少提交包含机密的文件的机会),管道会抛出错误:
没有找到语言[dotnet]的函数
我希望可以将参数传递给 func start 来通知以 dotnet-isolated 方式运行,但似乎唯一接近的匹配是 --dotnet-isolated-debug ,这对我的场景没有好处:https: //learn.microsoft.com/en-us/azure/azure-functions/functions-core-tools-reference?tabs=v2#func-start
我刚刚遇到了这个问题。我通过在运行 func 之前将 FUNCTIONS_WORKER_RUNTIME 环境变量设置为您想要的任何值来解决这个问题。
这基本上模拟了已部署的函数如何获取该值。当您将其添加到 Azure 中的应用程序设置时,我将它们作为环境变量发出,以将它们传递给正在运行的函数。
希望这有帮助。
可以通过创建 local.settings.json 在管道中运行来解决:
if (-not (Test-Path local.settings.json))
{
Write-Host "Creating default local.settings.json"
$json = '{"IsEncrypted": false,"Values": {"AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet"}}'
Set-Content -Path local.settings.json -Value $json
}
详情可以看这个博客post