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

Posted

技术标签:

【中文标题】如何在本地启动 Azure 功能并通过 launch.json 和 tasks.json 将调试器附加到动态处理?【英文标题】:How to start Azure function locally and attach debugger to process dynamically via launch.json and tasks.json? 【发布时间】:2021-07-11 03:26:10 【问题描述】:

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

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

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

我的思路有条理吗? 为了使它起作用,我可能缺少什么?

【问题讨论】:

【参考方案1】:

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

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


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

这似乎成功了!请注意,不再有preLaunchTask。但是,主机启动,调试器连接! 谢谢@MartinBrandl!

【讨论】:

不客气!很高兴你能够解决它。 BR【参考方案2】:

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

我的配置和您的配置之间的一个区别是您可能会更改为的 processId: "processId": "$command:azureFunctions.pickProcess"

【讨论】:

以上是关于如何在本地启动 Azure 功能并通过 launch.json 和 tasks.json 将调试器附加到动态处理?的主要内容,如果未能解决你的问题,请参考以下文章

设置配置并在本地运行 azure queue trigger 功能

通过Azure设置SSL证书后运行本地主机的问题

如何通过 Visual Studio 修复功能应用发布中的错误

如何在 Azure 功能中在线连接到 Exchange

如何通过powershell或C#使用本地IP远程更新azure SQL防火墙

从 azure 存储中获取文件并通过 Post 方法发送它会抛出错误,但适用于本地文件