3

I'm pretty new to OS X (4 days with my new mac), and I am working on setting up an environment where I can debug my Asp.Net 5 web project locally with the debugger built into Visual Studio Code, specifically getting the breakpoint to work when attaching to mono.

I followed these instructions for installing asp.net 5 and visual studio code. (http://docs.asp.net/en/latest/getting-started/installing-on-mac.html)

I then installed yeoman, and scaffolded out an aspnet project.

I ran commands dnu restore, dnu build, and dnx web.

The project runs locally on Kestrel at localhost:5000 just fine. I can also attach it to mono via the VS Code debugger.

The issue arises when I try to set breakpoints in the C# code. The debugger will not hit them.

After doing some research I found that I needed to specify the Startup.cs file to mono as the one to debug. (https://code.visualstudio.com/Docs/editor/debugging)

But after running mcs -debug Startup.cs, I get these errors:

Startup.cs(5,17): error CS0234: The type or namespace name `AspNet'     does not exist in the namespace `Microsoft'. Are you missing an assembly  reference?
Startup.cs(6,17): error CS0234: The type or namespace name `AspNet' does not exist in the namespace `Microsoft'. Are you missing an assembly reference?
Startup.cs(7,17): error CS0234: The type or namespace name `AspNet' does not exist in the namespace `Microsoft'. Are you missing an assembly reference?
Startup.cs(8,17): error CS0234: The type or namespace name `Data' does not exist in the namespace `Microsoft'. Are you missing an assembly reference?
Startup.cs(9,17): error CS0234: The type or namespace name `Extensions' does not exist in the namespace `Microsoft'. Are you missing an assembly reference?
Startup.cs(10,17): error CS0234: The type or namespace name `Extensions' does not exist in the namespace `Microsoft'. Are you missing an assembly reference?
Startup.cs(11,17): error CS0234: The type or namespace name `Extensions' does not exist in the namespace `Microsoft'. Are you missing an assembly reference?
Startup.cs(12,17): error CS0234: The type or namespace name `Extensions' does not exist in the namespace `Microsoft'. Are you missing an assembly reference?
Startup.cs(13,16): error CS0234: The type or namespace name `Models' does not exist in the namespace `palmtree'. Are you missing an assembly reference?
Startup.cs(14,16): error CS0234: The type or namespace name `Services' does not exist in the namespace `palmtree'. Are you missing an assembly reference?
Startup.cs(20,24): error CS0246: The type or namespace name `IHostingEnvironment' could not be found. Are you missing an assembly reference?
Startup.cs(20,49): error CS0246: The type or namespace name `IApplicationEnvironment' could not be found. Are you missing an assembly reference?
Startup.cs(39,16): error CS0246: The type or namespace name `IConfigurationRoot' could not be found. Are you missing an assembly reference?
Startup.cs(42,39): error CS0246: The type or namespace name `IServiceCollection' could not be found. Are you missing an assembly reference?
Startup.cs(62,31): error CS0246: The type or namespace name `IApplicationBuilder' could not be found. Are you missing an assembly reference?
Startup.cs(62,56): error CS0246: The type or namespace name `IHostingEnvironment' could not be found. Are you missing an assembly reference?
Startup.cs(62,81): error CS0246: The type or namespace name `ILoggerFactory' could not be found. Are you missing an assembly reference?

It looks like mono cannot debug compile the Startup.cs properly. Is anyone else getting this error when trying to set up debugging? Or does anyone have breakpoints working with mono, asp.net 5, kestrel, vs code, and OS X?

DavidG
  • 113,891
  • 12
  • 217
  • 223

1 Answers1

6

Debugging Visual Studio Code and ASP.NET 5 are in preview and at this time debugging ASP.NET 5 is not supported in Visual Studio Code (on any platform). Rest assured, we are working hard to bring these experiences to you in the near future.

Ref: https://code.visualstudio.com/docs/runtimes/ASPnet5

The Mono section that you are referring to is for compiling and attaching to a mono/.Net program (not an dnx ASP.NET-based one). ASP.NET 5 applications are compiled using the Roslyn compiler, not Mono's mcs.

Debugging a Mono Application Example:

Create a directory, cd into it and type code . to start VSCode using that directory.

mkdir monoconsoletest
cd monoconsoletest
code .

Create a new file in VSCode

enter image description here

Name it program.cs

enter image description here

Enter the following code into the editor:

using System;

namespace consoleViaVSCode
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            Console.WriteLine ("Hello VSCode!");
        }
    }
}

enter image description here

You could compile and run this in a shell, but let create a tasks.json file so we can do it via the Command Palette.

Create a tasks.json file:

The next step is to set up the task configuration. To do this open the Command Palette with F1 and type in Configure Task Runner, press Enter to select it.

This will create a sample tasks.json file in the .vscode folder. The initial file has a large number of examples within it. Highlight it all, delete it and add:

{
    "version": "0.1.0",
    "command": "mcs",
    "isShellCommand": true,
    "showOutput": "silent",
    "args": ["-debug", "program.cs"]
}

enter image description here

Now you have one task that you can execute via task mcs down the Command Palette and this task will build your program.cs using Mono's mcs compiler with the '-debug' option that will create a program.exe.mdb file that has the debugging symbols for the program.exe application.

So execute that task and if you have no errors, a program.exe and program.exe.mdb` will show up in the file pane:

enter image description here

If you have any errors, they will show up in the Output pane (right of the source code pane).

Now lets add a task to run your program with mono .Net runtime with the options for it to wait for a debugger to attach.

Note: I would show you a mono debugger task but running a shell process like that is broken in VSC 0.10.1. and you would be to wrap it in a glup routine... :-/ so...

In the process.cs, set a break point on the Console.Write.... line:

enter image description here

From the shell that you started VSCode from:

mono --debug --debugger-agent=transport=dt_socket,server=y,address=127.0.0.1:5858 program.exe

Back in VSCode:

Click the Bug Icon and than the Config\Gear Icon and select "C# mono" to generate the default "attach" configuration. Select "Attach" and click green Start button:

enter image description here

And you will hit your breakpoint:

enter image description here

SushiHangover
  • 73,120
  • 10
  • 106
  • 165
  • Any thoughts about [run time issues on Ubuntu with VS Code?](http://stackoverflow.com/q/35068910/2404470) – Zameer Ansari Feb 01 '16 at 17:32
  • I have not tried VSCode under Ubuntu recently, kind-of waiting for all the various bits to come together for a complete dev environment...just do not have the time right now to debug the dev tools vs actually writing code for the current project... :-/ – SushiHangover Feb 01 '16 at 17:56
  • Hammhh, understood it looks like debugging is gonna some take more time. I'll try to get started with nGinx + Kestrel hosting. – Zameer Ansari Feb 02 '16 at 05:35
  • It seems to be a [Omnisharp bug](https://github.com/OmniSharp/omnisharp-vscode/issues/27) man. Just keeping you with up with the progress :) – Zameer Ansari Feb 04 '16 at 06:19
  • 1
    Anyone knows if debugging ASP.NET Core 1.0 (previously known as ASP.NET 5) is now supported in VS Code or not, as a half year passed? It's really such an **important** feature. – cateyes May 07 '16 at 10:01
  • Can someone please answer @cateyes, I want to be able to debug on OSX! – friartuck May 12 '16 at 19:00
  • 1
    @Prof Have you tried version VSC 1.1? https://code.visualstudio.com/docs/editor/debugging Plus http://tattoocoder.azurewebsites.net/setting-up-asp-net-core-debugging-in-vs-code/ Plus a lot of debugger extensions are available @ https://marketplace.visualstudio.com/search?term=debug&target=VSCode&sortBy=Relevance – SushiHangover May 12 '16 at 20:13
  • This worked: http://tattoocoder.azurewebsites.net/setting-up-asp-net-core-debugging-in-vs-code/ I tried this last night, but I think I was on a different .NET SDK version – friartuck May 13 '16 at 00:00