microsoft / microsoft/CsWinRT

Proposal: Support for contract versioning (and other WinRT attributes) on published WinRT interfaces

Open
#1,981 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C#
Stars
665
Forks
134
Avg merge
1d 3h
Merged PRs (30d)
32

Description

Summary

There's a set of WinRT attributes that affect the WinMD generation that enable devs to create stable ABIs. Currently to meet this need we have devs write IDL, then we implement those interfaces in C#/WinRT. This works ok but you then have a vcxproj in your .sln (yuck!) and you have to deal with IDL (double yuck) and there's a handful of clumsy workarounds to implement runtimeclasses you didn't author in C#/WinRT.

What we'd like is to close those gaps and support:

  • Contract versioning
  • Method name overloading
  • Interface naming and interface GUID specifications
Rationale
  • Fixing this would get us fully onto C# and drop the need for any vcxproj in our solutions, which would be glorious
  • Would greatly speed up dev inner loop as vcxproj and MIDL are very slow to run and compile
Important Notes

No response

Open Questions

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No implementation files or tests are named. Start by reviewing the C#/WinRT WinMD generation path and its IDL, MIDL, and vcxproj integration; done means contract versioning, method overloading, and interface naming/GUID specifications work without those authoring requirements.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
desktop, developer-experience
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.