Настройка Visual Studio 2008 для редактирования устаревших файлов JScript ASP - PullRequest
2 голосов
/ 24 октября 2008

Я работаю над проектом, который объединяет .NET с некоторым устаревшим ASP-кодом через COM-взаимодействие. Устаревший ASP написан на JScript - файлы выглядят как этот пример helloworld.asp.

<%@Language="JScript"%>
<html>
<head>
  <title>Jscript ASP Page</title>
</head>
<body>
  <h1>JScript ASP</h1>
  <p>This is JScript ASP at <%=new Date()%></p>
  <%
  var helloWorld = Server.CreateObject("Interop.HelloWorld")
  helloWorld.Name = "Dylan"
  %>
  <%=helloWorld.SayHello() %>
  </body>
</html>

Мне бы очень хотелось использовать VS2008 для редактирования устаревшего кода ASP вместе с остальной частью проекта, но Intellisense ведет себя крайне странно. Одна минута даст мне правильные ключевые слова и методы JScript:

JS Intellisense в VS2008 - работает http://www.dylanbeattie.net/vs_js_working.jpg

... поэтому я наберу строку, нажмите Enter, начните вводить следующую строку, и те же самые нажатия клавиш дадут мне то, что кажется VBScript intellisense:

ASP intellisense в VS2008 - не работает http://www.dylanbeattie.net/vs_js_wrong.jpg

Можно ли как-то сказать VSу, что файлы .asp ВСЕГДА являются кодом Javascript и никогда вообще не используют код VB? Когда IDE превращает «var» в «vArray», когда вы нажимаете Enter, это немного разочаровывает ...

Помогите мне, Stackoverflow. Ты моя единственная надежда.

1 Ответ

4 голосов
/ 30 октября 2009

Классический ASP intellisense, как вы заметили, не работает в VS2008. Microsoft фактически полностью прекратила поддержку цветовой подсветки синтаксиса Classic и intellisense в RTM VS2008, а затем восстановила ее в SP1 из-за протестов клиентов. Посмотрите этот отчет об ошибке на сайте Microsoft Connect для получения дополнительной информации о том, как он был восстановлен.

В любом случае, позвольте мне подробно рассказать, как именно он сломался. То, что вы видите, на самом деле не является VB intellisense - вместо этого вы видите методы и объекты, присутствующие в любом из следующего:

  • объект отклика на стороне сервера иногда другие объекты на стороне сервера, такие как Session или Request, как если бы перед любым из вашего кода существовал оператор javascript «with» для этих объектов. это не имеет смысла-- это ошибка в VS.
  • объект окна на стороне клиента (!!!!). Это не имеет смысла, так как это серверный скрипт. это ошибка в VS.
  • ключевые слова javascript и глобальные объекты, такие как String. Это ожидаемо (хотя, если вы определяете свой сценарий с помощью runat = server, он работает более надежно - если я определяю сценарий с помощью <%%>, я часто не получаю правильное ключевое слово intellisense.

Обратите внимание, что ни один из них не является VB Intellisense - то, что вы видите, это просто методы PascalCased допустимых встроенных методов объектов Request, Response и т. Д., Встроенных в объектную модель сценария на стороне сервера Classic ASP.

Неожиданно я обнаружил, что intellisense работает гораздо более естественно в блоках runat = server script, чем в <%%> блоках. По крайней мере, с runat = server я получаю intellisense для ввода "Request.", "Response." И т. Д., А также ключевое слово jscript intellisense, похоже, также работает лучше в этих блоках.

Существуют и другие причуды в intellisense, например, когда у вас есть блок сценария <%%>, когда вы набираете символ, этот символ игнорируется в списке вариантов выбора intellisense, которые вы возвращаете. (это также лучше работает в runat = серверных блоках)

Другими словами, все это очень сломано. У меня нет внутренней информации о том, почему он так отключен, кроме этой функции, которая устарела в VS2008, возвращена в виде пакета обновления и, вероятно, имеет гораздо меньше тестов, чем другие части VS - поэтому неудивительно, что она сломана. Особенно, если учесть, что он поддерживает функцию классического ASP, от которой Microsoft, вероятно, захочет отказаться. Это не означает, что Redmontonians активно пытаются саботировать это, но в команде с ограниченными ресурсами классическая работа ASP великолепна, вероятно, не будет привлекать такой же уровень внимания, как, например, ASP.NET MVC.

Тем не менее, ИМХО, даже эта ограниченная поддержка лучше, чем была в VS2008 RTM, когда классические ASP-файлы выглядели как блокнот, без всякой интеллигентности или синтаксической раскраски.

Если вы недовольны таким плачевным положением дел, я бы посоветовал подать отчет об ошибке на https://connect.microsoft.com/VisualStudio. Так же, как отчет об ошибках заставил Microsoft восстановить классический ASP intellisense в VS2008 SP1, он может получить их исправить это для SP2 и / или VS2010. Вы также можете проверить последнюю бета-версию VS2010, чтобы убедиться, что проблема исправлена ​​или хуже.

Извините, если это не тот ответ, на который вы надеялись. : - (

...