VSCode - How to specify which project to debug - Azure Functions

Viewed 455

My question is a noobie question.

I have an azure function app project, along with a test project. Initially, I start with just the function application project and then I just recently re-org the project folders and added the associated test.csproj The folder structure I have right now looks like this:

enter image description here

Since moving the function app into the "src" folder, when I want to just run locally, I make sure that from my powershell terminal, I do the following:

cd src
func start

And everything works really well. But if I want to step through the code / debug, hitting F5 doesn't work because it doesn't know which project I'm trying to debug.

Can you tell me how I can debug either project from the parent folder that I'm in ?

I've tried to change my launch.json from this:

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

To this:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "FunctionApp",
      "type": "coreclr",
      "request": "attach",
      "processId": "${command:azureFunctions.pickProcess}",
      "program": "${workspaceFolder}/src/bin/Debug/net6.0/bin/widgets.dll",
      "cwd": "${workspaceFolder}/src"
    }
  ]
}

And now I see a Green play button with the name "FunctionApp" in my "Run and Debug" bar across the top, but when I try to run it, I get an error that says:

Executing task: C:\Program Files\dotnet\dotnet.exe clean /property:GenerateFullPaths=true /consoleloggerparameters:NoSummary <

Microsoft (R) Build Engine version 17.0.0+c9eb9dd64 for .NET Copyright
(C) Microsoft Corporation. All rights reserved.   

MSBUILD : error MSB1003: Specify a project or solution file. The
current working directory does not contain a project or solution file.
The terminal process "C:\Program Files\dotnet\dotnet.exe 'clean',
'/property:GenerateFullPaths=true',
'/consoleloggerparameters:NoSummary'" terminated with exit code: 1.

Terminal will be reused by tasks, press any key to close it.

EDIT 1

I tried to follow this example:

https://i.stack.imgur.com/a7ZVk.png

I also changed all references in my task.json from "process" to "shell" based on this post: Debugging Azure Function with vscode

So presently, this is what the two files look like:

launch.json

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

tasks.json

Just showing what I understand is the relevant section...

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "host function",
      "command": "func host start",
      "type": "shell",
      "options": {
        "cwd": "${workspaceFolder}/src"
      }
    },

But the error I'm getting is this:

Failed to detect running Functions host within "60" seconds. You may want to adjust the "azureFunctions.pickProcessTimeout" setting.

When I try Run -> Start with debugging, the application starts, and I can trigger my API... but it doesn't stop at any of the breakpoints.

1 Answers

So the complete solution was to

a) Revert my launch.json back to the original version which looks like this:

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

b) added new section to my tasks.json:

{
  "label": "host function",
  "command": "func host start",
  "type": "shell",
  "options": {
    "cwd": "${workspaceFolder}/src"
  }
},

c) Then I changed ALL references to "process" to "shell" in the tasks.json. d) Lastly, to fix the error with azureFunctions.pickProcessTimeout, I did the following:

File -> Preferences -> Settings -> search for the specific setting and increased from 60 seconds to 180

enter image description here

Related