Skip to content

Tooling: IDE plugin, MSBuild integration, NuGet packaging #32

@danfma

Description

@danfma

Priority: Future

Three tooling-adjacent improvements that share no implementation details but all target the "make Metano feel like a first-class part of the .NET toolchain" goal. Grouped in one issue so the small items don't clutter the tracker.

1. IDE plugin for Rider / VS Code

Highlight transpiled types differently from regular C# types — users should be able to glance at a `.cs` file and know which types cross the TS boundary without reading the attributes.

  • Resolve transpilable symbols via a Roslyn analyzer (already have the machinery from `TypeTransformer.DiscoverTranspilableTypes`)
  • Publish the analyzer as a NuGet package that integrates with Rider / VS Code C# extension
  • Maybe: show the generated TS snippet in a hover tooltip

2. MSBuild integration (`Metano.Build` already exists — iterate)

The current `Metano.Build` package hooks into `dotnet build` to auto-run the transpiler. Improvements:

  • Only re-run when C# sources actually changed (see Incremental compilation and parallel TypeTransformer #21 incremental compilation — shares the hash infrastructure)
  • Emit `.ts` files into `obj/Metano/` during build and copy to the real output only when tests / consumers need them
  • MSBuild warning output routed through `MetanoDiagnostic` (ADR-0010)
  • Integration test coverage via a dedicated sample

3. NuGet packaging for distribution

Currently `Metano.Compiler.TypeScript` ships as a dotnet tool. Extend distribution:

  • Pack the core `Metano.Compiler` and `Metano` (attributes) as regular NuGet libraries consumers can reference
  • Document the release flow for each package in CONTRIBUTING or a dedicated releases doc
  • Evaluate whether users want to embed the compiler as a library (e.g. for incremental build tools) rather than always going through the CLI

Notes

Splitting this into three issues would be reasonable too. Kept together because the effort is small per item and the motivation is shared.

Part of #14.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions