Вопрос

Я только что установил VS 2010 Beta 2 и хотел поиграть с проектом ASP.NET MVC 2.Я просто добавил какой-то скрипт (alert('hello');) в представление index.aspx домашнего контроллера, и я вижу, как он выполняется.Однако, когда я пытаюсь установить точку останова, она никогда не попадает.Я также попытался использовать ключевое слово "debugger", и когда я это делаю, я получаю разочаровывающее сообщение "исходный код недоступен для текущего местоположения".Я также получаю это сообщение, когда пытаюсь независимо подключиться к процессу IE, в котором запущено мое приложение.

Что мне нужно сделать, чтобы получить удобный опыт отладки скрипта?(Я успешно использовал Firebug для отладки этого, но по какой-то причине я предпочитаю VS debugger.)

Вот некоторые детали моей конфигурации:

  • Я запускаю свой материал в бета-версии VS 2010 2.
  • IE8 версии 8.0.7 по умолчанию - это мой браузер по умолчанию.
  • Расширенный параметр "Отключить отладку скрипта (Internet Explorer)" снят.
  • Флажок "Отключить отладку скрипта (Другое)" снят.
  • На вкладке свойств моего проекта ASP.NET MVC 2 "web" установлен флажок ASP.NET отладчик.Все остальные непроверены.
  • Отладка скрипта Visual Studio 2008, похоже, работает просто отлично.
Это было полезно?

Решение

Отладчик не может отлаживать одновременно код Silverlight и код скрипта, если выбран отладчик Silverlight, отладка JavaScript отключена.

  1. Перейдите в Свойства проекта (Alt+Enter).
  2. Для проекта веб-сайта:Выберите "Параметры запуска".Или для веб-приложения:Перейдите на вкладку Web, и внизу вы увидите опцию Debuggers (Отладчики).
  3. Убедитесь, что флажок Silverlight НЕ установлен, если вы хотите иметь возможность отлаживать JavaScript.(К сожалению, в пользовательском интерфейсе здесь неясно, что это за побочный эффект.)

Другие советы

У меня были те же проблемы.Мне не удалось заставить IDE даже прерваться по точке останова, установленной внутри тега script.Однако, когда я добавил "debugger;" в качестве первой строки в теге script, удалось заставить IDE ответить, но затем только сказать, что disassebly недоступен.

Тем не менее, я смог нажать на инструменты отладки, такие как "step into" и "step over".Когда я сделал это, IDE внедрилась в некоторые внешние скрипты, которые я использую (jQuery и Google Maps).Поэтому я убрал блок кода JavaScript из представления и поместил его в отдельный js-файл в папке "Content".Затем я добавил тег script для ссылки на этот новый файл .js (url = "/Content/Test.js").

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

При отладке в IE VS, похоже, добавляет папку с именем "Документы сценария" в обозреватель решений.Внутри этой папки есть другая папка под названием "Windows Internet Explorer", и внутри нее я вижу все загруженные js-скрипты и (скомпилированный) HTML-файл, который в данный момент отображается в IE.Установка точек останова для тегов скрипта в этом HTML-файле действительно работает для меня.

Чтобы устранить эту проблему, перейдите в Свойства проекта и выберите "Параметры запуска".Затем установите флажок Машинный код.и снимите флажок Silverlight, потому что оба параметра не работают вместе.

CTRL + Alt + P (Прикрепить к процессу), выберите IE, выберите "скрипт" для типа отладки.

Как отметил Райан выше, я переместил свой скрипт в отдельный файл в папке Scripts.Я также добавил debug в название скрипта, чтобы он стал MyTestScript.отлаживать.джс.Я включил скрипт через тег script и мог установить точки останова в файле скрипта, к которому подключился отладчик.

Я обнаружил, что инструмент Google Chrome devloper отлично отображает JavaScript.В моем случае я обычно загружаю скрипт с помощью функции getScript от jQuery, и выполнение кода обычно осуществляется посредством обратного вызова jQuery при загрузке страницы или обработке события.В Visual Studio 2010 я часто сталкивался с ошибкой "Нет исходного кода".К сожалению, мне нужен Chrome для отладки JavaScript, который является частью моего проекта Visual Studio.

Использование отдельного js-файла имеет свои недостатки.Например, вы не можете использовать помощники MVC.Microsoft действительно нужно разобраться с этим.

Intellisense также не работает должным образом в блоках скрипта в представлении, даже если вы включаете ссылочные комментарии, подобные этому:

/// <reference path="/Scripts/jquery-1.6-vsdoc.js" />
/// <reference path="/Scripts/jquery-1.6.js" />

Однако Intellisense прекрасно работает в файле js при таком подходе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top