Skip to content
| Marketplace
Sign in
Visual Studio>Tools>ASP Classic Syntax Highlight
ASP Classic Syntax Highlight

ASP Classic Syntax Highlight

Asp Classic Syntax Highlight

|
5 installs
| (0) | Free
Coloring, outlining, IntelliSense (completion, QuickInfo, signature help), pairwise delimiter highlight and Go To Definition for classic ASP (VBScript + HTML) files.
Download

AspClassic — Classic ASP language support for Visual Studio 2026

Visual Studio 2026 does not recognize .asp as a language. The file opens, but it comes up practically dead: no block folding, no pair highlighting, no completion, no go-to-definition. AspClassic gives classic ASP an editor that understands what it is reading, without asking you to rewrite a line of legacy code.

Before — VS 2026 on an unedited .asp file, with only what the IDE ships:

An .asp file in VS 2026 with the legacy WebForms colorizer: the ASP delimiters in green, everything else in plain text

After — the same file, unchanged, with AspClassicSyntaxHighlight loaded:

The same .asp file with the extension loaded: keywords, strings, comments and numbers colored

The problem

What Visual Studio offers .asp files today is the legacy WebForms colorizer, which paints <% %> and nothing else. The real pain sits in the two thirds of the file that is VBScript. Measured across 30 real files, the composition looks like this:

Content Share of lines
VBScript inside <% %> 66.9%
Client-side JavaScript 20.9%
HTML 10.4%
CSS 1.8%

Rewriting the legacy is not on the table. This extension exists to make the editor usable over code that is already in production.

What it does

Feature How Where
TextMate coloring Grammar + language-configuration AspClassic.Vsix/Grammars/
Native semantic coloring Projection classifier + color formats anchored to the legacy type AspClassic.Vsix/Coloring/
Block folding If/Sub/Function/Class/Property/For/Do/While/Select Case/With, crossing <% %>; JavaScript by braces AspClassic.Vsix/Outlining/, AspClassic.Core/Structure/
Pair highlighting Innermost VBScript block under the cursor, plus <% %> and " AspClassic.Vsix/PairHighlight/, AspClassic.Core/PairFinding/
Structure guides Vertical block lines in the editor AspClassic.Vsix/Structure/
IntelliSense Completion, QuickInfo (hover) and signature help AspClassic.Vsix/IntelliSense/
Ctrl+Click / Go To Definition Navigates to symbol definitions with Ctrl+Click or the Go To Definition command AspClassic.Vsix/IntelliSense/AspCtrlClickMouseProcessor.cs, Commands/GoToDefinition.vsct
<!--#include file="..."--> Recursive resolution (depth cap 8, cycle guard, file= only), consumed by definition and hover AspClassic.Core/Declarations/
Unresolved-include notice Hovering the directive tells you whether it resolved and, if not, why: not found, rooted, over 1 MB, unreadable or invalid path AspClassic.Vsix/IntelliSense/AspQuickInfoSource.cs

Design goals

  • Work with the editor, not against it. The extension adds to what Visual Studio already does rather than replacing it. Where the host already delivers (HTML color, folding of HTML elements), the extension stays out, so behavior follows your theme and does not brees.
  • One analysis, several views. The lexer runs once per buffer and feeds color, folding, pairs, structure and IntelliSense. There is no scanner per feature.
  • **Logic that does not need the IDE lives oer, classifier, pairs, folding and includeresolution live in AspClassic.Core, which does not reference the Visual Studio SDK. That is why they are testable with dotnet test, without opening Visual S208 tests live.
  • Fail by omission, never by excess. A malformed file must not produce an exception or an absurd region. When in doubt, the extension stays quiet.
  • Measure before deciding. Every scope decision carries the number that supported it (corpus composition, cost in ms, priority in the format map), recorded in the plan.

What is deliberately out, and why

  • HTML and JavaScript color, and HTML folding. The Visual Studio editor already does both. Implementing them would mean replacing the host's color and paying tst class by class, only to swap theme-awarecolors for fixed ones. JavaScript folding by braces stays, because that is what the host does not do.
  • An LSP server. IntelliSense is native ops Node, the process handshake and a serverto maintain. The only real asset in the reference extensions was the data, which came in as an embedded C# table.
  • Debugging, refactoring and error validation. Out of scope. In particular, there is no squiggle for unresolved includes: in the real code measured, 185 of 193 directives point at files that do not exist on disk, and marking them all would paint the screen red over data only the IIS server has.

Feedback

Found a classic ASP file that confuses the editor? Open an issue with a minimal sample. The extension is built to stay quiet when unsure, so a missing feature on ad of case worth reporting.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft