Natalie Perret
Natalie Perret

Reputation: 8997

Visual Studio Code debugging the default ASP.NET Core MVC WebApp: does not work

I am using Manjaro linux and tried to debug the default ASP.NET Core MVC project but the debugging stopped without any error

I created the project with: dotnet new mvc in a Meow folder, nothing special, and then added a new configuration .NET Core Launch (web).

It turns out that there is only a call to dotnet build defined in the build task in tasks.json as defined in preLaunchTask of the launch.json and that's it the debugging process starts and stops without showing any error.

When running dotnet run, everything works, so I am suspecting the issue comes more from my Visual Studio debug configuration.

In terminal tab I have:

> Executing task: dotnet build /home/perret/Desktop/Playground/CSharpmusement/Meow/Meow.csproj <

Microsoft (R) Build Engine version 15.9.20.63311 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

  Restore completed in 86.18 ms for /home/perret/Desktop/Playground/CSharpmusement/Meow/Meow.csproj.
  Meow -> /home/perret/Desktop/Playground/CSharpmusement/Meow/bin/Debug/netcoreapp2.2/Meow.dll
  Meow -> /home/perret/Desktop/Playground/CSharpmusement/Meow/bin/Debug/netcoreapp2.2/Meow.Views.dll

Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:04.62

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

The two files below that have been auto generated look fine.

launch.json

{
   // Use IntelliSense to find out which attributes exist for C# debugging
   // Use hover for the description of the existing attributes
   // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
   "version": "0.2.0",
   "configurations": [
        {
            "name": ".NET Core Launch (web)",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build",
            // If you have changed target frameworks, make sure to update the program path.
            "program": "${workspaceFolder}/bin/Debug/netcoreapp2.2/Meow.dll",
            "args": [],
            "cwd": "${workspaceFolder}",
            "stopAtEntry": false,
            "internalConsoleOptions": "openOnSessionStart",
            "launchBrowser": {
                "enabled": true,
                "args": "${auto-detect-url}",
                "windows": {
                    "command": "cmd.exe",
                    "args": "/C start ${auto-detect-url}"
                },
                "osx": {
                    "command": "open"
                },
                "linux": {
                    "command": "xdg-open"
                }
            },
            "env": {
                "ASPNETCORE_ENVIRONMENT": "Development"
            },
            "sourceFileMap": {
                "/Views": "${workspaceFolder}/Views"
            }
        },
        {
            "name": ".NET Core Attach",
            "type": "coreclr",
            "request": "attach",
            "processId": "${command:pickProcess}"
        }
    ,]
}

tasks.json:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "command": "dotnet",
            "type": "process",
            "args": [
                "build",
                "${workspaceFolder}/Meow.csproj"
            ],
            "problemMatcher": "$msCompile"
        }
    ]
}

[Update 1]

Tried to uninstall omnisharp and reinstall it (with a VSCode reboot in between):

Starting OmniSharp server at 2/3/2019, 11:19:16 AM
    Target: /home/perret/Desktop/Playground/CSharpmusement/Meow

OmniSharp server started with Mono 5.16.0.
    Path: /home/perret/.vscode-oss/extensions/ms-vscode.csharp-1.17.1/.omnisharp/1.32.8/omnisharp/OmniSharp.exe
    PID: 21990

[info]: OmniSharp.Stdio.Host
        Starting OmniSharp on manjaro 0.0 (x64)
[info]: OmniSharp.Services.DotNetCliService
        DotNetPath set to dotnet
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Located 2 MSBuild instance(s)
            1: Mono 15.0 - "/usr/lib/mono/msbuild/15.0/bin"
            2: StandAlone 15.0 - "/home/perret/.vscode-oss/extensions/ms-vscode.csharp-1.17.1/.omnisharp/1.32.8/omnisharp/msbuild/15.0/Bin"
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Registered MSBuild instance: Mono 15.0 - "/usr/lib/mono/msbuild/15.0/bin"
            CscToolPath = /home/perret/.vscode-oss/extensions/ms-vscode.csharp-1.17.1/.omnisharp/1.32.8/omnisharp/msbuild/15.0/Bin/Roslyn
            CscToolExe = csc.exe
[info]: OmniSharp.Cake.CakeProjectSystem
        Detecting Cake files in '/home/perret/Desktop/Playground/CSharpmusement/Meow'.
[info]: OmniSharp.Cake.CakeProjectSystem
        Could not find any Cake files
[info]: OmniSharp.WorkspaceInitializer
        Project system 'OmniSharp.DotNet.DotNetProjectSystem' is disabled in the configuration.
[info]: OmniSharp.MSBuild.ProjectSystem
        No solution files found in '/home/perret/Desktop/Playground/CSharpmusement/Meow'
[info]: OmniSharp.MSBuild.ProjectManager
        Queue project update for '/home/perret/Desktop/Playground/CSharpmusement/Meow/Meow.csproj'
[info]: OmniSharp.Script.ScriptProjectSystem
        Detecting CSX files in '/home/perret/Desktop/Playground/CSharpmusement/Meow'.
[info]: OmniSharp.Script.ScriptProjectSystem
        Could not find any CSX files
[info]: OmniSharp.WorkspaceInitializer
        Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.CSharpWorkspaceOptionsProvider
[info]: OmniSharp.WorkspaceInitializer
        Configuration finished.
[info]: OmniSharp.Stdio.Host
        Omnisharp server running using Stdio at location '/home/perret/Desktop/Playground/CSharpmusement/Meow' on host 21903.
[info]: OmniSharp.MSBuild.ProjectManager
        Loading project: /home/perret/Desktop/Playground/CSharpmusement/Meow/Meow.csproj
[info]: OmniSharp.MSBuild.ProjectManager
        Successfully loaded project file '/home/perret/Desktop/Playground/CSharpmusement/Meow/Meow.csproj'.
[info]: OmniSharp.MSBuild.ProjectManager
        Adding project '/home/perret/Desktop/Playground/CSharpmusement/Meow/Meow.csproj'
[info]: OmniSharp.MSBuild.ProjectManager
        Update project: Meow

[Update 2]

The debugger is installed properly (I tried a brand new fresh installed):

Installing C# dependencies...
Platform: linux, x86_64, name=manjaro, version=unknown

Downloading package 'OmniSharp for Linux (x64)' (30903 KB).................... Done!
Installing package 'OmniSharp for Linux (x64)'

Downloading package '.NET Core Debugger (linux / x64)' (59407 KB).................... Done!
Installing package '.NET Core Debugger (linux / x64)'

Downloading package 'Razor Language Server (Linux / x64)' (44979 KB).................... Done!
Installing package 'Razor Language Server (Linux / x64)'

Finished

Also filed an issue on Github.

Upvotes: 2

Views: 4639

Answers (1)

Natalie Perret
Natalie Perret

Reputation: 8997

I answered my own question on those GitHub issues:

Basically steps of my solution on a fresh Manjaro Gnome variant live session:

  • Install ~~yay to enjoy AUR without struggling with the command line: sudo pacman -Sy yay~~ yay -S dotnet-sdk mono binutils msbuild-stable visual-studio-code-bin --noconfirm (see the [UPDATE] below).

  • Setup everything you need (aka the .NET Core SDK, Mono, MSBuild and Visual Studio Code Insiders): yay -S dotnet-sdk mono binutils msbuild-stable visual-studio-code-insiders --noconfirm

    • Note: binutils cause the Gnome variant does not seem to embed that one natively, and this require for stripping in one of the steps of the msbuild-stable installation.
  • Add the required environment variables that you would like to export at the end of your .bashrc file in your home folder:

    • export MSBuildSDKsPath=/opt/dotnet/sdk/$(dotnet --version)/Sdks
    • export PATH="$PATH:/home/manjaro/.dotnet/tools"
  • Create a dummy project: dotnet new mvc

  • Start Visual Studio Code Insiders: code-insiders .

  • Install the C# extension CTRL + SHIFT + P ext install ms-vscode.csharp

  • Download the .NET Code Debugger for the C# extension (if needed / not already done the first time) CTRL + SHIFT + P Debug: Download .NET Core Debugger

  • Generate the launch.json and tasks.json files (if not already answered yes to the popup shows: "Would you like to add the required assets to build and debug your project?") CTRL + SHIFT + P .NET: Generate Assets for Build and Debug

  • Install the tools for the development self-signed certificate dotnet tool install --global dotnet-dev-certs

  • Register the development self-signed certificate: dotnet dev-certs https

  • Debugging (.NET Core Launch (web)) CTRL + SHIFT + D F5

This is not stable though, as pointed by one of the comments in my initial post, Arch / Manjaro are not officially supported by the debugger, but I found that this is more related to the version of Visual Studio Code, atm it only worked with the insiders edition for some reasons I completely ignore.

I will keep this answer updated whenever I will notice that I will no longer need to resort to the Insiders Edition.


[UPDATE] The official Visual Code AUR page shows the different versions available:

The following packages provide VSCode:

  • code (open-source release)
  • visual-studio-code-bin AUR (Microsoft-branded release)
  • code-git AUR (in-development open-source version)

I think I may have had installed the wrong version at first (the non insiders one was the open source release: code.

Actually when playing with the official tar.gz from the website (which is the hard way equivalent of installing visual-studio-code-bin) it worked fine.

The right way is to (obviously) go with the official Microsoft branded release: visual-studio-code-bin.

Upvotes: 1

Related Questions