从命令行启动 dotnet 隔离的 az 函数,无需 local.settings.json

问题描述 投票:0回答:2

我有一个新的 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

azure-functions
2个回答
0
投票

我刚刚遇到了这个问题。我通过在运行 func 之前将 FUNCTIONS_WORKER_RUNTIME 环境变量设置为您想要的任何值来解决这个问题。

这基本上模拟了已部署的函数如何获取该值。当您将其添加到 Azure 中的应用程序设置时,我将它们作为环境变量发出,以将它们传递给正在运行的函数。

希望这有帮助。


-1
投票

可以通过创建 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

© www.soinside.com 2019 - 2024. All rights reserved.