Reputation: 43
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?
Upvotes: 3
Views: 1907
Reputation: 74164
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
Name it program.cs
Enter the following code into the editor:
using System;
namespace consoleViaVSCode
{
class MainClass
{
public static void Main (string[] args)
{
Console.WriteLine ("Hello VSCode!");
}
}
}
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"]
}
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:
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:
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:
And you will hit your breakpoint:
Upvotes: 6