Настройка Visual Studio 2008 для редактирования устаревших файлов JScript ASP

StackOverflow https://stackoverflow.com/questions/233845

Вопрос

Я работаю над проектом, который объединяет .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.Ты моя единственная надежда.

Это было полезно?

Решение

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

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

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

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

Как ни странно, я обнаружил, что intellisense работает гораздо более естественно в блоках сценариев runat=server, чем в блоках <% %>.По крайней мере, с помощью runat=server я получаю intellisense при вводе «Запрос», «Ответ» и т. д.а также ключевое слово jscript intellisense, похоже, работает лучше в этих блоках.

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

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

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

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

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

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