{"adoption": {"forks": 3698, "observed_at": "2026-08-28T04:11:38.761234+00:00", "stars": 25954}, "canonical_url": "https://ross.abutalabs.com/products/ilspy", "card": {"archived": false, "artifact_type": "application", "description": ".NET Decompiler with support for PDB generation, ReadyToRun, Metadata (&more) - cross-platform!", "domain": ["developer-tools", "reverse-engineering", "programming-languages"], "enriched": true, "function": ["reverse-engineering", "developer-tools", "gui", "cli", "parser"], "health_score": 100, "homepage": null, "language": "C#", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["icsharpcode/ILSpy", "icsharpcode/AvaloniaILSpy"], "name": "ILSpy", "platform": ["windows", "cross-platform", "dotnet", "cli"], "pushed_at": "2026-08-26T20:53:29+00:00", "repo": "icsharpcode/ILSpy", "stars": 25954, "tags": ["decompiler", "dotnet", "csharp", "assembly-browser", "pdb", "avalonia", "nuget-library", "linux", "macos"], "topics": ["decompiler", "decompiler-engine", "c-sharp", "dotnet", "dotnetcore", "mono", "unity", "pdb", "ilspy", "decompile"], "urls": [], "use_cases": ["decompile a .NET dll back to C# source", "inspect the contents of a compiled .NET assembly", "recover source code when only binaries are available", "generate PDB files from .NET assemblies", "browse and analyze third-party NuGet package internals", "decompile assemblies from the command line in CI", "analyze Unity or Mono game assemblies"], "what_it_is": "ILSpy is an open-source, cross-platform .NET assembly browser and decompiler that converts compiled .NET binaries back into readable C# source code. It ships as a desktop GUI built on Avalonia, plus a CLI dotnet tool, editor extensions, and NuGet libraries (ICSharpCode.Decompiler) for embedding decompilation.", "when_to_avoid": ["you need to decompile JVM bytecode or native binaries rather than .NET assemblies", "you require debugging or live patching of assemblies (tools like dnSpy are better suited)", "you need obfuscation removal or guaranteed perfect source recovery"], "when_to_choose": ["you need to read or recover C# code from compiled .NET binaries", "you want a free, open-source alternative to .NET Reflector or dnSpy", "you need cross-platform decompilation on Windows, Linux, or macOS", "you want to embed a decompiler engine in your own tooling via NuGet"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/repos/icsharpcode/ILSpy", "repo": "icsharpcode/ILSpy", "role": "main", "score": 98}, {"path": "/repos/icsharpcode/AvaloniaILSpy", "repo": "icsharpcode/AvaloniaILSpy", "role": "mirror", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:11:38.761234+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T16:55:57.373297+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9c3c8554d2b278b44e15520c457c262f5309af12f3d5ee1c897414b41985661a", "fetched_at": "2026-08-28T04:11:38.761234+00:00", "kind": "readme", "missing": false, "url": "https://github.com/icsharpcode/ILSpy"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:11:38.761234+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T16:55:57.373297+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9c3c8554d2b278b44e15520c457c262f5309af12f3d5ee1c897414b41985661a", "fetched_at": "2026-08-28T04:11:38.761234+00:00", "kind": "readme", "missing": false, "url": "https://github.com/icsharpcode/ILSpy"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T16:55:57.373297+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9c3c8554d2b278b44e15520c457c262f5309af12f3d5ee1c897414b41985661a", "fetched_at": "2026-08-28T04:11:38.761234+00:00", "kind": "readme", "missing": false, "url": "https://github.com/icsharpcode/ILSpy"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:11:38.761234+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:11:38.761234+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:11:38.761234+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T16:55:57.373297+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9c3c8554d2b278b44e15520c457c262f5309af12f3d5ee1c897414b41985661a", "fetched_at": "2026-08-28T04:11:38.761234+00:00", "kind": "readme", "missing": false, "url": "https://github.com/icsharpcode/ILSpy"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:11:38.761234+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:11:38.761234+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T16:55:57.373297+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9c3c8554d2b278b44e15520c457c262f5309af12f3d5ee1c897414b41985661a", "fetched_at": "2026-08-28T04:11:38.761234+00:00", "kind": "readme", "missing": false, "url": "https://github.com/icsharpcode/ILSpy"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:11:38.761234+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:11:38.761234+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:11:38.761234+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T16:55:57.373297+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9c3c8554d2b278b44e15520c457c262f5309af12f3d5ee1c897414b41985661a", "fetched_at": "2026-08-28T04:11:38.761234+00:00", "kind": "readme", "missing": false, "url": "https://github.com/icsharpcode/ILSpy"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:11:38.761234+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:11:38.761234+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T16:55:57.373297+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9c3c8554d2b278b44e15520c457c262f5309af12f3d5ee1c897414b41985661a", "fetched_at": "2026-08-28T04:11:38.761234+00:00", "kind": "readme", "missing": false, "url": "https://github.com/icsharpcode/ILSpy"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T16:55:57.373297+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9c3c8554d2b278b44e15520c457c262f5309af12f3d5ee1c897414b41985661a", "fetched_at": "2026-08-28T04:11:38.761234+00:00", "kind": "readme", "missing": false, "url": "https://github.com/icsharpcode/ILSpy"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T16:55:57.373297+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9c3c8554d2b278b44e15520c457c262f5309af12f3d5ee1c897414b41985661a", "fetched_at": "2026-08-28T04:11:38.761234+00:00", "kind": "readme", "missing": false, "url": "https://github.com/icsharpcode/ILSpy"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T16:55:57.373297+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9c3c8554d2b278b44e15520c457c262f5309af12f3d5ee1c897414b41985661a", "fetched_at": "2026-08-28T04:11:38.761234+00:00", "kind": "readme", "missing": false, "url": "https://github.com/icsharpcode/ILSpy"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 97}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5689, "days_push": 7, "days_rel": 21, "gap_med": 27, "n_releases_24m": 12}, "score": 98, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}