Отладка Typescript в VSCode с ASP.Net Керн
в это время я пытаюсь создать веб-приложение React на основе ASP.Net Core (C#). Я написал свой код на машинке. Я связал свой код с Webpack. Карты источников включены.
теперь я хотел бы отладить мой код (Typescript) в коде Visual Studio. Отладка в Chrome работает хорошо. Таким образом, все исходные карты работают правильно.
это возможно? Я нашел много вещей / учебников при работе с узлом.сервера JS, но ничего при работе с ASP.Net Ядро.
Спасибо, что указали мне в правильном направлении. Или даже лучше, написав небольшой учебник о том, как я должен настроить свой VSCode (launch.json
и т. д.)
3 ответов
Ok после еще 3 часов поиска в интернете следующие проблемы GitHub я нашел решение.
как @ulubeyn упоминал, вам понадобится расширение Debugger for Chrome
ссылка на отладчик для Chrome
тогда вы должны добавить конфигурацию в свой launch.json
. Что-то вроде этого:--14-->
{
"name": "Launch Chrome",
"type": "chrome",
"request": "launch",
"url": "http://localhost:5000",
"webRoot": "${workspaceRoot}/wwwroot"
}
С ноября прошлого года мы можем запускать несколько отладчиков в VS-коде. Для этого вам нужно добавить "compounds"
(источник) к вашим launch.json
где вы упоминаете различные имена конфигурации, которые вы хотите начать все вместе.
вот мой окончательный launch.json
. Имейте в виду, что я установил "launchBrowser"
"enabled"
свойство false
на ".NET Core Launch (web)"
конфигурация, чтобы предотвратить эту конфигурацию от открытия новой вкладки браузера, так как мы открываем новый Broser с отладчиком, прикрепленным в "Launch Chrome"
конфигурации.
{
"version": "0.2.0",
"compounds": [
{
"name": "ASP.Net Core & Browser",
"configurations": [".NET Core Launch (web)", "Launch Chrome"]
}
],
"configurations": [
{
"name": ".NET Core Attach",
"type": "coreclr",
"request": "attach",
"processId": "${command:pickProcess}"
},
{
"name": ".NET Core Launch (web)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceRoot}/bin/Debug/netcoreapp1.1/VoteExample.dll",
"args": [],
"cwd": "${workspaceRoot}",
"stopAtEntry": false,
"launchBrowser": {
"enabled": false,
"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": "${workspaceRoot}/Views"
}
},
{
"name": "Launch Chrome",
"type": "chrome",
"request": "launch",
"url": "http://localhost:5000",
"webRoot": "${workspaceRoot}/wwwroot"
}
]
}
теперь мы можем отлаживать оба, ASP.NET основное применение и Код на стороне клиента в одном окне кода Visual Studio. The ".NET Core Attach"
раздел конфигурации не требуется, но иногда я хочу прикрепить отладчик к запущенному процессу.
С помощью launch.json
данный VSDekar, я смог отладить код C#, но не TypeScript. Мне также нужно было установить sourceMapPathOverrides
свойство для отладки TypeScript. Вот мой launch.json
:
{
"version": "0.2.0",
"compounds": [
{
"name": "Full stack",
"configurations": [".NET Core Launch (console)", "Launch Chrome"]
}
],
"configurations": [
{
"name": ".NET Core Launch (console)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/bin/Debug/netcoreapp2.1/ExpenseMgmt.dll",
"args": [],
"cwd": "${workspaceFolder}",
"stopAtEntry": false,
"console": "internalConsole"
},
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome",
"url": "http://localhost:5000",
"webRoot": "${workspaceFolder}/wwwroot",
"breakOnLoad": true,
"sourceMaps": true,
"sourceMapPathOverrides": {
"webpack:\*": "${workspaceFolder}/*"
}
}
]
}
просто используйте возможности многоцелевой отладки Microsoft в VS-коде. https://code.visualstudio.com/docs/editor/debugging#_multitarget-debugging
это работает для меня отладки ASP.NET ядро 2.1 + реагировать СПА шаблон.
сначала я запускаю конфигурацию" .NET Core Launch (web)", а затем конфигурацию" Launch Chrome". Я могу поразить точки останова как в коде C#, так и в коде JS.
одно отличие от конфигурации отладки .NET в том, что я изменил опция в
"launchBrowser": {
"enabled":
от true до false, потому что Chrome config открывает собственное окно браузера.
Я знаю, что вопрос был для Typescript, но я подозреваю, что это та же процедура.