Skip to content

Referencia

Línea de comandos y MCP

Maneja Glass sin interfaz desde CI y agentes de codificación: descompilar, un diff de API pública con verja de cambios incompatibles, diff de versiones de NuGet, inspección de ofuscación, exportar a proyecto, SBOM y un servidor MCP.

Glass es sobre todo una aplicación de escritorio, pero desde la 1.3.0 también incluye una herramienta de línea de comandos gratuita y sin interfaz — el mismo motor de descompilación, sin GUI y sin dependencia de Avalonia — para pipelines de CI y agentes de codificación. Sin licencia, sin cuenta.

Instalación

La CLI es una herramienta global de .NET:

dotnet tool install -g Glass.NET.Tool

Eso te da el comando glass (requiere el runtime de .NET 8). Cada versión de GitHub también adjunta el Glass.NET.Tool.<versión>.nupkg por si prefieres instalar desde un archivo local.

Comandos

glass decompile <assembly> [--type <ReflectionName>] [--out <file>]
glass diff <old.dll> <new.dll> [--fail-on-breaking] [--json|--md]
glass nuget-diff <PackageId> <oldVersion> <newVersion> [--tfm <tfm>] [--fail-on-breaking] [--json|--md]
glass export <assembly> --out <folder>
glass sbom <.csproj | folder | project.assets.json> [--out <file>]
glass inspect <assembly> [--html <file>] [--json]
glass mcp
glass --version | --help

decompile

Descompila un ensamblado completo, o un solo tipo, a C#. Imprime en stdout, o escribe un archivo con --out.

glass decompile MyApp.dll --type MyApp.Services.Billing --out Billing.cs

diff — la verja de cambios incompatibles en CI

Compara la superficie de API pública de dos ensamblados y clasifica cada cambio como incompatible (un miembro público/protegido eliminado o cambiado) o aditivo. Con --fail-on-breaking, Glass sale con 2 cuando encuentra algún cambio incompatible — así un pipeline puede bloquear un PR que rompa a los consumidores:

glass diff baseline/MyLib.dll build/MyLib.dll --fail-on-breaking
# salida 0 = compatible · salida 2 = cambios incompatibles

Añade --json para salida legible por máquina o --md para una tabla Markdown (útil en comentarios de PR).

nuget-diff

El mismo diff, pero descarga dos versiones directamente de nuget.org — sin compilación local:

glass nuget-diff Newtonsoft.Json 12.0.3 13.0.3 --fail-on-breaking

Usa --tfm net8.0 para fijar un target framework cuando un paquete trae varios.

inspect

Un informe de exposición: cuántos tipos y métodos públicos son legibles, cuántas cadenas embebidas y posibles secretos, y un veredicto en lenguaje sencillo — con una recomendación para proteger el ensamblado. --html escribe un informe compartible; --json emite salida estructurada.

glass inspect MyApp.dll --html exposure.html

export y sbom

export reconstruye un proyecto C# de estilo SDK compilable a partir de un ensamblado. sbom emite un SBOM CycloneDX 1.5 de las dependencias NuGet restauradas de un proyecto (ejecuta dotnet restore primero).

glass export MyApp.dll --out ./recovered
glass sbom ./MyApp.csproj --out sbom.cdx.json

Códigos de salida

CódigoSignificado
0Éxito
2Se encontraron cambios de API incompatibles (con --fail-on-breaking)
1Cualquier otro error (uso incorrecto, archivo no encontrado, fallo)

Los resultados van a stdout; los diagnósticos van a stderr, para que un job de CI pueda encaminarlos por separado.

Servidor MCP (agentes de codificación)

glass mcp ejecuta un servidor Model Context Protocol sobre stdio, exponiendo decompile, diff, nuget_diff e inspect como herramientas. Apunta un agente compatible con MCP — Claude Code, Cursor, Copilot — al comando glass mcp y podrá descompilar, comparar e inspeccionar ensamblados por ti. Cada respuesta está anclada en el IL real, no en una suposición.

Una entrada de cliente típica ejecuta el comando glass con el único argumento mcp.

Ejemplo de CI (GitHub Actions)

Protege los PR de una biblioteca verificando la compatibilidad de API frente a la última versión:

- run: dotnet tool install -g Glass.NET.Tool
- run: glass nuget-diff MyLib "$LAST_RELEASE" "$PR_VERSION" --fail-on-breaking

Un miembro público eliminado o cambiado hace fallar el paso; los cambios puramente aditivos pasan.

Solo análisis estático

Como la aplicación de escritorio, la CLI nunca ejecuta el ensamblado objetivo — todo es análisis estático de metadatos e IL.