如何在本地启动 Azure 功能并附加调试器以通过 launch.json 和 tasks.json 动态处理?

How to start Azure function locally and attach debugger to process dynamically via launch.json and tasks.json?

在带有 Visual Studio 代码的 Mac 上使用 .NET Core,我正在尝试在本地托管 Azure Functions,并将调试器附加到它。 手动地,我可以通过使用 func host start 启动函数来让它工作,然后按下 IDE 中的调试按钮,它运行默认的 launch.json 文件。由于行 "processId": "${command:pickProcess}".

,这让我选择一个进程来附加调试器

我想自动化此流程,只需单击 VSCode 中的调试按钮即可触发它。

在上图中,我尝试在附加调试器之前通过 运行 a preLaunchTask 来解决这个问题。此任务应托管并启动功能 - 当与流程隔离时,它会成功执行此操作。 但是,当我使用上述配置点击“调试”按钮时,VSCode 让我在实际完成 preLaunchTask 之前立即选择一个进程,因此进程 func 尚不可用。

我的思路对吗? 为了让它起作用,我可能缺少什么?

您可以尝试 create the local Functions app with the Visual Studio Code Functions extension。当您使用扩展创建 Functions 应用程序时,它会自动将 VS 代码启动配置添加到您的项目中,至少可以在我的机器上运行:-)。

我的配置和您的配置之间的一个区别是 processId,您可以将其更改为: "processId": "${command:azureFunctions.pickProcess}"

VSCode 功能扩展就像一个魅力,问题是团队已经在 Visual Studio Windows 开始使用这个解决方案,所以我必须适应它。

我没有注意到扩展附带的启动配置中的 azureFunctions 部分! 我将 launch.json 编辑为以下内容:

{
  "name": "Attach to .NET Functions",
  "type": "coreclr",
  "request": "attach",
  "processId": "${command:azureFunctions.pickProcess}"
}

这似乎可以解决问题!请注意,不再有 preLaunchTask。但是,主机启动了,调试器也连接上了! 谢谢@MartinBrandl!