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

Den*_*nis 10 azure visual-studio-code azure-functions vscode-tasks vscode-debugger

在 Mac 上使用 .NET Core 和 Visual Studio Code,我尝试在本地托管 Azure Function,并将调试器附加到它。我可以手动让它工作,方法是使用 启动该函数func host start,然后按 IDE 中的调试按钮,该按钮将运行默认的 launch.json 文件。这让我选择一个进程来附加调试器,因为"processId": "${command:pickProcess}".

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

launch- 和tasks.json

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

我的思路正常吗?为了让它发挥作用,我可能会缺少什么?

Mar*_*ndl 5

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

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


Den*_*nis 5

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

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

{
  "name": "Attach to .NET Functions",
  "type": "coreclr",
  "request": "attach",
  "processId": "${command:azureFunctions.pickProcess}"
}
Run Code Online (Sandbox Code Playgroud)

这似乎成功了!请注意,已经没有了preLaunchTask。然而,主机启动,并且调试器被连接!谢谢@MartinBrandl!