How to setup envs in neovim DAP configs for dotnet c#?

944 Views Asked by At

I am trying to debug my c# app with neovim DAP. Here is my configs:

local dap = require('dap')

dap.adapters.coreclr = {
  type = 'executable',
  command = '/home/asd/netcoredbg/netcoredbg',
  args = { '--interpreter=vscode' },
}

dap.configurations.cs = {
  {
    type = "coreclr",
    name = "launch - netcoredbg",
    request = "launch",
    program = function()
      -- return vim.fn.input('Path to dll', vim.fn.getcwd() .. '/bin/Debug/', 'file')
      return vim.fn.input('Path to dll: ')
    end
  },
}

When i run DAP with my dll, I get these errors: enter image description here

I tried to use netcoredbg cli tool separately, like this: ~/netcoredbg/netcoredbg --interpreter=cli -- dotnet run ./bin/Debug/net7.0/WebApi.dll environment=DevelopmentLocalhost and everything works fine.

So i pretty sure that my dap configs are wrong. Thanks for help!

UPD: I answered my actual question below. BUT! The last question remains: is there a way to setup dap to just use launch.json generated by VsCode and how to do that?

1

There are 1 best solutions below

1
Vlad Mosienko On BEST ANSWER

So.. I get it working with configs like this:

...
    justMyCode = false,
    stopAtEntry = false,
    program = function()
      -- todo: request input from ui
      return "/path/to/your.dll"
    end,
    env = {
      ASPNETCORE_ENVIRONMENT = function()
        -- todo: request input from ui
        return "Development"
      end,
      ASPNETCORE_URLS = function()
        -- todo: request input from ui
        return "http://localhost:5050"
      end,
    },
    cwd = function()
        -- todo: request input from ui
        return vim.fn.getcwd()
    end,
...

So key thing here is that we pass envs using env property of cs config object. Just like other fields it can be exact value, or can be a function where we can e.g. get input from ui and then use as a value for env variable:

ASPNETCORE_ENVIRONMENT = "Development"

or

ASPNETCORE_ENVIRONMENT = function()
   return vim.fn.input("ASPNETCORE_ENVIRONMENT: ", "Development")
end,

Also, its important to set cwd, e.g. because appsettings.json will be searched there

cwd = function()
   return vim.fn.input("Workspace folder: ", vim.fn.getcwd() .. "/", "file")
end,