Visual Studio Code 调试默认的 ASP.NET Core MVC WebApp:不起作用 [英] Visual Studio Code debugging the default ASP.NET Core MVC WebApp: does not work
问题描述
我正在使用 Manjaro linux 并尝试调试默认的 ASP.NET Core MVC 项目,但调试停止而没有任何错误
I am using Manjaro linux and tried to debug the default ASP.NET Core MVC project but the debugging stopped without any error
我创建了项目:dotnet new mvc
在一个 Meow
文件夹中,没什么特别的,然后添加了一个新的配置 .NET Core Launch (web)
.
I created the project with: dotnet new mvc
in a Meow
folder, nothing special, and then added a new configuration .NET Core Launch (web)
.
事实证明,tasks.json
中的 build
任务中定义的 dotnet build
只调用了 launch.json
的 >preLaunchTask 就是这样,调试过程开始和停止而不显示任何错误.
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.
当运行 dotnet run
时,一切正常,所以我怀疑问题更多地来自我的 Visual Studio 调试配置.
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"
}
]
}
[更新 1]
尝试卸载 omnisharp 并重新安装它(中间重启 VSCode):
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
[更新 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
推荐答案
我在 GitHub 上的那些问题上回答了我自己的问题:
I answered my own question on those GitHub issues:
- https://github.com/OmniSharp/omnisharp-vscode/issues/2604#issuecomment-460593882
- https://github.com/OmniSharp/omnisharp-vscode/issues/2837
我在新鲜 Manjaro Gnome 变体实时会话中的解决方案的基本步骤:
Basically steps of my solution on a fresh Manjaro Gnome variant live session:
安装~~
yay
即可享受 AUR,而无需在命令行中挣扎:sudo pacman -Sy yay
~~yay -S dotnet-sdkmono binutils msbuild-stable visual-studio-code-bin --noconfirm
(请参阅下面的 [更新]).
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).
设置您需要的一切(又名 .NET Core SDK、Mono、MSBuild 和 Visual Studio Code Insiders):yay -S dotnet-sdk mono binutils msbuild-stable visual-studio-code-insiders --noconfirm
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
- 注意:
binutils
导致 Gnome 变体似乎并未在本机嵌入该变体,这需要在msbuild-stable
安装的步骤之一中进行剥离.
- 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 themsbuild-stable
installation.
在您的主文件夹中的 .bashrc
文件末尾添加您想要导出的所需环境变量:
Add the required environment variables that you would like to export at the end of your .bashrc
file in your home folder:
导出 MSBuildSDKsPath=/opt/dotnet/sdk/$(dotnet --version)/Sdks
导出路径="$PATH:/home/manjaro/.dotnet/tools"
创建一个虚拟项目:dotnet new mvc
开始 Visual Studio Code Insiders:code-insiders .
Start Visual Studio Code Insiders: code-insiders .
安装 C# 扩展CTRL + SHIFT + Pext install ms-vscode.csharp
Install the C# extension
CTRL + SHIFT + P
ext install ms-vscode.csharp
下载 C# 扩展的 .NET 代码调试器(如果需要/尚未第一次完成)CTRL + SHIFT + P调试:下载.NET Core调试器
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
生成 launch.json
和 tasks.json
文件(如果还没有对弹出显示回答是:您想添加所需的资产吗?构建和调试您的项目?")CTRL + SHIFT + P.NET:生成用于构建和调试的资产
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
安装开发自签名证书的工具dotnet 工具安装 --global dotnet-dev-certs
Install the tools for the development self-signed certificate
dotnet tool install --global dotnet-dev-certs
注册开发自签名证书:dotnet dev-certs https
调试(.NET Core Launch (web)
)CTRL + SHIFT + DF5
虽然这并不稳定,正如我最初的帖子中的一条评论指出的那样,调试器不正式支持 Arch/Manjaro,但我发现这与 Visual Studio Code 的版本更相关,atm it出于某些我完全忽略的原因,只使用了内部人员版本.
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.
每当我注意到我不再需要使用 Insiders 版本时,我都会更新这个答案.
I will keep this answer updated whenever I will notice that I will no longer need to resort to the Insiders Edition.
[更新]官方 Visual Code AUR 页面 显示了可用的不同版本:
[UPDATE] The official Visual Code AUR page shows the different versions available:
以下软件包提供了 VSCode:
The following packages provide VSCode:
- 代码(开源版本)
- visual-studio-code-bin AUR(微软品牌版本)
- code-git AUR(开发中的开源版本)
我想我一开始可能安装了错误的版本(非内部人员是开源版本:code
.
I think I may have had installed the wrong version at first (the non insiders one was the open source release: code
.
实际上,在使用网站上的官方 tar.gz
时(这是一种等效于安装 visual-studio-code-bin
的困难方式),它运行良好.
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.
正确的方法是(显然)使用官方的 Microsoft 品牌版本:visual-studio-code-bin
.
The right way is to (obviously) go with the official Microsoft branded release: visual-studio-code-bin
.
这篇关于Visual Studio Code 调试默认的 ASP.NET Core MVC WebApp:不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!