问题描述
在带有 Visual Studio Code 的 Mac 上使用 .NET Core,我尝试在本地托管 Azure 函数,并将调试器附加到它。
手动,我可以通过使用 func host start
启动函数,然后在运行默认 launch.json 文件的 IDE 中按下调试按钮来使其工作。由于 "processId": "${command:pickProcess}"
行,这让我选择一个将调试器附加到的进程。
我想自动化这个流程,只需点击 VSCode 中的调试按钮即可触发它。
在上图中,我尝试通过在连接调试器之前运行 prelaunchTask
来解决此问题。此任务应托管并启动该功能 - 当与流隔离时,它会成功执行此操作。
但是,当我使用上述配置点击调试按钮时,VSCode 让我在实际完成 prelaunchTask
之前立即选择一个进程,因此进程 func
尚不可用。
我的思路是否合理? 为了让它起作用,我可能会缺少什么?
解决方法
您可以尝试create the local Functions app with the Visual Studio Code Functions extension。当您使用扩展程序创建 Functions 应用程序时,它会自动将 VS Code 启动配置添加到您的项目中,该配置至少适用于我的机器:-)。
我的配置和您的配置之间的一个区别是 processId,您可以将其更改为:
"processId": "${command:azureFunctions.pickProcess}"
VSCode Function 扩展的作用很吸引人,问题是团队已经开始在 Visual Studio Windows 中使用这个解决方案,所以我必须适应它。
我没有注意到扩展随附的启动配置中的 azureFunctions
部分!
我将 launch.json
编辑为以下内容:
{
"name": "Attach to .NET Functions","type": "coreclr","request": "attach","processId": "${command:azureFunctions.pickProcess}"
}
这似乎成功了!请注意,不再有 preLaunchTask
。但是,主机启动,调试器连接!
谢谢@MartinBrandl!