Proposal: Support for contract versioning (and other WinRT attributes) on published WinRT interfaces
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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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