it-swarm.com.ru

Точки останова Javascript в Visual Studio 2017

Я только что установил Visual Studio 2017. После запуска приложения ASP.NET MVC я получаю сообщение о том, что в Visual Studio включена отладка Chrome.

Но мои точки останова в Visual Studio не будут достигнуты. Кажется, что точки останова в коде Razor работают, а Javascript - нет. Точки останова не полностью красные, как они должны быть. Перезапуск, перестройка, похоже, не дают никакого эффекта.

У меня есть следующий пример кода

@Html.Partial("_Test", Model.Test) // debugging works here

<script>
    var i = 1;
    console.log(i); // debugging does not work here or above
</script>

@section scripts {
    <script>
        var a = 11;
        console.log(a); // debugging does not work here or above
    </script>
}

У меня не открыта консоль отладки Chrome, и я установил опцию в Visual Studio («Включить отладку JavaScript»), которая включена.

Согласно этому сообщению в блоге, я думал, что это должно работать: https://blogs.msdn.Microsoft.com/webdev/2016/11/21/client-side-debugging-of-asp-net-projects- in-google-chrome/

Я что-то здесь упускаю? Может быть, это не работает в Visual Studio 2017 как-то?

У меня есть только одно расширение, и это Resharper, но я думаю, что это не проблема.

28
ronaldm

Эта функция не работает для кода JavaScript внутри файла * .cshtml, но только для кода в отдельных файлах * .js (или * .ts).

 enter image description here Обратите внимание, как активна точка останова в файле JavaScript, а точка останова в представлении Razor - нет.

Я также заметил, что точки останова не будут достигнуты для файлов JavaScript, когда код JavaScript выполняется во время загрузки страницы, когда страница загружается в первый раз в текущем сеансе Chrome. Точки останова будут работать только после завершения загрузки документа один раз.

22
NineBerry

Другой совет: только отладка js может быть включена после установки 'start URL' в run/debug. 

Только так VS подключится к процессу браузера.

21
Lw Cui

Я была такая же проблема. Я следовал инструкциям из того же поста: https://blogs.msdn.Microsoft.com/webdev/2016/11/21/client-side-debugging-of-asp-net-projects-in- Гугл Хром/

В Visual Studio я сделал следующее: Перейдите к Tools -> Options -> Debugging -> General и отключил параметр «Включить отладку JavaScript для ASP.NET (Chrome и IE)». Сохраненные изменения, затем запустите веб-страницу. 

После этого я заметил, что Chrome не отображал «Отладочную веб-страницу» перед загрузкой моей страницы. Затем я закрыл свою веб-страницу и остановил сеанс отладки.

Я снова включил опцию «Включить отладку Javascript для ASP.NET (Chrome и IE)», затем запустил веб-страницу с помощью IE, и это сработало. Страница остановилась, и в моей визуальной студии появилась точка останова.

11
Luis Art Guerra

У меня была та же проблема, новая для ядра .net, решение, которое работало для меня, заключалось в добавлении отладчика; в верхней части сценария:

<script>
  debugger;

  -- rest of your jscript here
</script>
8
s1cart3r

В версии 2017 он работает только с включенной опцией «Включить отладку Javascript для ASP.NET (Chrome и IE)» и настройкой отладчика; в коде js в * .cshtml, а также в файл * .js 

3
user1599615
  • Visual Studio Professional 2017 версия 15.8.1 
  • Chrome версии 68.0.3440.106 (официальная сборка) (64-разрядная версия)

Мне пришлось включить Legacy Chrome JavaScript отладчик под:

Параметры -> Инструменты -> Отладка -> Общие -> Включить устаревший отладчик Chrome JavaScript для ASP.NET

0
Sanny Jacobsson

Вы можете попробовать два варианта:

  1. Отключите «Включить отладку JavaScript для ASP.NET (Chrome и IE)» в параметрах VS, а затем используйте отладчик (F12) в своем браузере.
  2. Начните отладку в Visual Studio, а затем добавьте свои точки останова в Solution Explorer -> Internet Explorer -> <your view name>. (Предполагается, что вы используете IE)
0
Phil Haselden

Для тех, кто использует Google Chrome Portable (или добавил Chrome в список отладки браузера вручную), помогает это:

https://docs.Microsoft.com/en-us/visualstudio/javascript/tutorial-nodejs-with-react-and-jsx?view=vs-2017#set-and-hit-a-breakpoint-in- код реакции клиентской стороны

Затем необходимо вручную прикрепить к нужному экземпляру Chrome и альту

0
amarax

Мое лучшее предположение здесь (по крайней мере, в моем случае, возможно, и в вашем случае), что это связано с комплектацией. Проект, над которым я сейчас работаю, объединяет отдельные сценарии в один сценарий Big Daddy (без минимизации в конфигурации отладки), поэтому я догадываюсь, что VS не сопоставит мою точку останова с этим конечным сценарием, выполняемым в браузере.

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

0
John VanZwieten

Подумав, что единственный способ добиться этой цели - это восстановить Visual Studio 2017 с помощью установщика, я понял, что у нас есть BundleTable.EnableOptimizations = true; в Bundle.config. Я удалил эту строку и добавил ее к преобразованию Web.Debug.config, и она начала работать как положено.

0
Froman