Native Visual Studio 2022 extension for Enma (.em) — completion, hover docs, and diagnostics via the same language servers used by the VS Code extensions.
Visual Studio and VS Code use different extension models. A VS Code
.vsixwill not install in Visual Studio, and vice versa. These projects produce VS-compatible.vsixpackages.
Prebuilt VS .vsix files are attached to each release (filename PcxEnmaVS.vsix).
- Download the
.vsix - Double-click it, or in Visual Studio: Extensions → Manage Extensions → Install from VSIX
- Restart Visual Studio
- Open a
.emfile — the language server starts automatically
Requirement: Node.js 18+ on your PATH. The extension launches the bundled language server with node.
The extension is a MEF ILanguageClient (the Microsoft-recommended way to add an LSP language to Visual Studio). When you open a matching file:
- VS loads the client for the registered content type (
.em→enma) ActivateAsynclaunchesnode Server/...server.js --stdio- VS speaks LSP to the server over stdio
The Node.js language server payload is bundled inside the .vsix under Server/.
VS extensions require Windows + MSBuild + the Visual Studio extension development workload (VSSDK). They cannot be built on Linux/macOS.
# 1. Build the language servers (from repo root)
cd lsp\enma-lsp; npm install; npm run compile; cd ..\..
# 2. Stage the server payloads
# Enma: bin\ + server\dist\ -> visualstudio\EnmaVS\Server\
# 3. Build the VSIX
msbuild visualstudio\EnmaVS\EnmaVS.csproj /p:Configuration=Release /restoreThe exact staging commands are in .github/workflows/release.yml, which builds the .vsix on every release tag.
visualstudio/
├── EnmaVS/
│ ├── EnmaVS.csproj VSIX project (net472, VSSDK BuildTools)
│ ├── source.extension.vsixmanifest VS 2022 manifest, MEF component asset
│ ├── EnmaLanguageClient.cs ILanguageClient — launches node server
│ ├── EnmaContentDefinition.cs .em -> "enma" content type
│ └── Server/ node payload (populated at build time)
The VS extension code in this directory is MIT (toolkit license). The bundled language server is an MIT build of enma-lsp.