APIView needs to support different target framework versions (TFMs) for .NET
- Dominant language
- C#
- Stars
- 135
- Forks
- 260
- Avg merge
- 3d 1h
- Merged PRs (30d)
- 143
Description
For now, given Azure/azure-sdk#5361, this is not a problem except for _Azure.Core_, but eventually we'll need APIView to support different public APIs. This could be done any number of ways, including - but not limited to - a combination of the following (numbered only for referential convenience, though we might consider 1 as necessary):
1. Show in the "front matter" at the top of any API which TFMs a package targets. This can be relatively easily from the nupkg alone by looking at the directories under lib e.g., "net461" and "netstandard2.0" means it targets .NET Framework 4.6.1 and .NET Standard 2.0. Realistically, that display name mapping doesn't need to be done, though it would be nice. See [_Azure.Core_](https://www.nuget.org/packages/azure.core#supportedframeworks-body-tab) for an example where they don't change the display names. Most people in this area will know what those TFMs mean.
2. A drop down like .NET documentation to pick which TFM you want to look at.
3. An indication - again, perhaps in the front matter - if APIs for different TFMs even matter. I believe this would be as easy as a simple text diff against the API files we'd generate for APIView, as long as there's a stable sort of types and members (which, IMO, there should be to always be alphabetical and easy to find stuff).
Contributor guide
Research direction
The issue names APIView, nupkg contents under lib, front matter, and generated API files, but no repository files or tests. Start by locating APIView's package-reading and API-generation entry points, then determine how target framework versions are currently represented. Done should be defined by the selected approach for exposing or comparing APIs across distinct TFMs, with tests covering the behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100