Ошибка инструкции Typescript: "Точки останова установлены, но еще не связаны" в VS2017

Я создаю проект с "dotnet new angular". Когда точка останова установлена ​​в инструкции Typescript, она отображается в виде открытого красного круга при запуске. Сообщение об ошибке: "Точка останова в настоящее время не будет достигнута. Точки останова установлены, но еще не связаны".

Эта проблема возникла, когда я обновил.Net Core SDK 1.x до 2.x Это ошибка в 2.x или что-то связанное с моей настройкой? У кого-нибудь, использующего 2.x, есть точки останова Typescript, работающие в VS2017? Я опишу мою настройку подробно ниже и где она терпит неудачу.

Чтобы продублировать проблему, вы можете установить точку останова на this.currentCount++; в ClientApp\src\app\counter\counter.component.ts, а затем нажмите "Увеличение" на странице "Счетчик".

Я в настоящее время использую то, что должно быть последними официальными выпусками:

Visual Studio Pro 15.7.2
.Net Core SDK 2.1.300 (x64)
.Net Core Runtime 2.1.0 (x64)

Я пробовал другие выпуски SDK 2.x. Это терпит неудачу в v2.1.4 & v2.1.300. Но точки останова успешны в v2.0.0, 2.1.200 и 2.1.201.

Разница в том, что при успешном выполнении каждый из SDK генерирует файлы "webpack.config.js" и "webpack.config.vendor.js" в корневом каталоге проекта во время "dotnet new angular". Последний выпуск 2.x не генерирует эти файлы в корне. Поэтому я не хочу использовать предыдущие выпуски, которые были.

Другое отличие состоит в том, что рабочие проекты определяют местоположение "ClientApp" в webpack.config.js. В тех проектах, которые терпят неудачу, расположение ClientApp определяется в файле startup.cs.

Еще немного информации:

Используя SDK v2.1.201 (работает), сгенерированный package.json содержит:

"typescript": "2.4.1",
"webpack": "2.5.1",
"webpack-hot-middleware": "2.18.2",
"webpack-merge": "4.1.0",

Используя sdk v2.1.300 (который не работает), сгенерированный package.json содержит:

"typescript": "~2.5.3"

но не содержит записей для веб-пакета. В node_modules/.bin есть "webpack.cmd", версия которого 3.11.0.

Когда я набираю "tsc -v" в окне Команды разработчика VS2017, я получаю:

version 2.8.4

ОБНОВЛЕНИЕ: я добавил проблему к проблемам .Net SDK.
Там меня попросили открыть пункт "Отзывы разработчиков" для Visual Studio. Они считают, что это проблема VS для оснастки TS/JS.

Если у вас также есть эта проблема, это может помочь повысить ее приоритет, если вы добавите на страницу обратной связи.

1 ответ

Обновление от Microsoft в связанной ветке:

Точки останова Typescript в Visual Studio не будут работать для базовых проектов ASP.NET в настоящее время в любой из двух ситуаций:

  1. Если вы переименовали / удалили каталог "ClientApp" в вашем проекте Visual Studio, чтобы он был чем-то другим, ИЛИ
  2. У вас есть файлы Typescript/JavaScript в другом каталоге (кроме ClientApp).

К сожалению, в настоящее время у нас нет способа разрешения точек останова в файлах Typescript за пределами папки ClientApp. Мы работаем с соответствующими командами в Visual Studio для исправления того же самого, но если это изменение повлияет на вас, я бы рекомендовал перейти к работе в папке "ClientApp".

Мой обходной путь заключается в том, что я отлаживаю интерфейс отдельно, используя VSCode, который не идеален, но кажется единственным способом заставить его работать с ядром.net и пользовательской структурой проекта.

29 августа 2018 года Блэр Ван сообщил о решении этой проблемы по адресу: https://developercommunity.visualstudio.com/content/problem/268468/typescript-breakpoints-not-hit-in-visual-studio-15.html

    "This issue has been fixed and is now available in our latest update. You can download the update via the in-product notification or from here: https://visualstudio.microsoft.com/vs/"

Я не видел этого до сегодняшнего дня (2018-03-23), когда я тестировал исправление, используя:

    Visual Studio v15.9.9
    .Net Core SDK 2.2.105
    .Net core Host 2.2.3
    Typescript 3.1.2

Для всех, кто сталкивается с этой проблемой при использовании.Net Core 3.1 и Angular/TypeScript, решение для меня заключалось в том, чтобы добавить app.UseSpaStaticFiles() перед строкой app.Use() в методе конфигурации Startup.cs:

// Declare middleware "use" statements before app.Use() in order to run/debug properly.
app.UseAuthentication();
app.UseHttpsRedirection();
app.UseSpaStaticFiles();
app.UseCookiePolicy();
app.UseStaticFiles();

// Necessary to force users to authenticate
app.Use(async (context, next) =>
{
  if (!context.User.Identity.IsAuthenticated)
  {
    await context.ChallengeAsync();
  }
  else
  {
    await next();
  }
});

Изначально у меня был оператор app.UseSpaStaticFiles() под разделом app.Use, и я получил сообщение "точки останова установлены, но еще не связаны". Это произошло в Visual Studio 2019. После перемещения операторов промежуточного программного обеспечения точки останова начали работать. (Я думаю, что это работало до того, как я обновился до.Net Core 3, но я не уверен.)

Другие вопросы по тегам