Azure / Azure/azure-sdk-tools

APIView needs to support different target framework versions (TFMs) for .NET

Open
#5,137 6 comments 0 reactions 0 assignees View on GitHub
.NET APIView
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.