Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

## [Unreleased](https://github.com/openfga/dotnet-sdk/compare/v0.6.0...HEAD)

## v0.7.0

### [0.7.0](https://github.com/openfga/dotnet-sdk/compare/v0.6.0...v0.7.0) (2025-10-01)
- feat!: add support for .NET Standard 2.0, .NET 8.0 and .NET 9.0

[!WARNING]
Expand Down
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ This is an autogenerated SDK for OpenFGA. It provides a wrapper around the [Open
- [About OpenFGA](#about)
- [Resources](#resources)
- [Installation](#installation)
- [Supported Frameworks](#supported-frameworks)
- [Getting Started](#getting-started)
- [Initializing the API Client](#initializing-the-api-client)
- [Get your Store ID](#get-your-store-id)
Expand Down Expand Up @@ -90,6 +91,17 @@ Install-Package OpenFga.Sdk

Search for and install `OpenFga.Sdk` in each of their respective package manager UIs.

## Supported Frameworks

Supported targets: `net8.0` (LTS), `net9.0`, `netstandard2.0`, `net48`.

We follow the official .NET support policy where practical:
https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core

Unsupported / EOL runtimes (e.g. `netcoreapp3.1`, `net7.0`) may still function via the `netstandard2.0` asset but are "best effort"; we may remove incidental compatibility or stop testing them without a major version bump.

See the full matrix, rationale, and troubleshooting guidance in [SUPPORTED_FRAMEWORKS.md](./SUPPORTED_FRAMEWORKS.md).


## Getting Started

Expand Down
84 changes: 84 additions & 0 deletions SUPPORTED_FRAMEWORKS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# Supported .NET Frameworks

As of v0.7.0, the OpenFGA .NET SDK ships as a multi-targeted NuGet package to balance broad compatibility with modern runtime features.

| Target | Status (at v0.7.x release) | Rationale | Notes |
| ------ | -------------------------- | --------- | ----- |
| `net8.0` | LTS (Active) | Primary target | Full feature set, implicit usings enabled. Recommended for new apps. |
| `net9.0` | Current (Non‑LTS) | Early adopter / perf | Falls back to `net8.0` behaviors where APIs identical. Will be replaced by future LTS when available. |
| `netstandard2.0` | Compatibility | Broad legacy reach (Core 2.0+, .NET 5/6/7, Framework ≥4.6.1, Xamarin/Unity) | Used automatically by `net6.0`/`net7.0` projects. Nullable annotations included. |
| `net48` | Legacy Full Framework | Enterprise / classic ASP.NET | Adds binding redirects & `System.Web` reference where needed. |

## Support Policy

We aim to follow the official Microsoft .NET support lifecycle:
https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core

Implications:

1. Frameworks still under Microsoft support (LTS or STS) receive compatibility testing in CI and issues affecting them are prioritized.
2. Runtimes past their end-of-support (EOL) may continue to work through the `netstandard2.0` asset, but:
* They are treated as "best effort".
* Issues specific to EOL frameworks may be closed if a modern supported runtime path exists.
* We may remove explicit tests or even drop a target without a major (SemVer) version bump if Microsoft no longer supports it. (Removing a target that only affects unsupported runtimes is considered non-breaking for this SDK.)

## CI / Test Matrix

Current workflow jobs (see [`.github/workflows/main.yaml`](.github/workflows/main.yaml)) exercise:

| Framework | Platform(s) | Purpose | Support Status |
| --------- | ----------- | ------- | -------------- |
| `net8.0` | Ubuntu, Windows, macOS | Primary validation | Full support |
| `net9.0` | Ubuntu | Forward compatibility sanity | Full support |
| `net48` | Windows | Legacy full framework behavior | Full support |
| `net6.0` | Ubuntu | Validates consumption of the `netstandard2.0` build on a still-supported (if in maintenance) runtime | Maintenance support |
| `netcoreapp3.1` | Windows | EOL: ONLY to detect accidental regressions of the `netstandard2.0` surface; not a commitment of security/bug fix support | Best effort only |

> Note: You may not see a separate `net6.0` (or `net7.0`) target in the DLL list because those runtimes resolve the `netstandard2.0` asset.

## Dropping / Adding Targets

We periodically reevaluate targets based on:

* Microsoft lifecycle phase (Active / Maintenance / EOL)
* Package size impact
* Build/test cost
* Reported issues unique to a target

Criteria for removal without major bump (non-breaking):

* Target is EOL per Microsoft OR
* A supported runtime can consume an alternative asset (e.g., via `netstandard2.0`).

We will call out removals in `CHANGELOG.md`.

## Troubleshooting Matrix Issues

<!--
As new issues come in that can be resolved by the user, add them to this table.
-->

| Symptom | Likely Cause | Mitigation |
| ------- | ------------ | ---------- |
| Only one DLL in `bin` after install | NuGet selected the best TFM | Expected behavior; nothing to fix. |
| Missing `System.Text.Json` on older project | Implicit dependency not restored | Update SDK / ensure `Restore` succeeded; if still failing, add explicit reference temporarily and open an issue. |

## Filing Framework-Specific Issues

Please include:

* Output of `dotnet --info` (or environment details for full framework)
* Your project target framework(s)
* `OpenFga.Sdk` nuget version
* Minimal reproduction (ideally a single .csproj + Program.cs)

## FAQ

**Why no explicit `net6.0` or `net7.0` target?**
`netstandard2.0` already provides the necessary API surface. Adding additional identical builds increases package size and CI time without functional gain.

**Will you add future LTS (e.g., net10.0) on release?**
Yes, typically shortly after GA, once CI images are available.

**Can support be guaranteed for EOL frameworks?**
No. Those frameworks may work incidentally; we may remove related shims at any time.
4 changes: 2 additions & 2 deletions src/OpenFga.Sdk/Configuration/Configuration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -75,9 +75,9 @@ public void EnsureValid() {
/// Version of the package.
/// </summary>
/// <value>Version of the package.</value>
public const string Version = "0.6.0";
public const string Version = "0.7.0";

private const string DefaultUserAgent = "openfga-sdk dotnet/0.6.0";
private const string DefaultUserAgent = "openfga-sdk dotnet/0.7.0";

#endregion Constants

Expand Down
2 changes: 1 addition & 1 deletion src/OpenFga.Sdk/OpenFga.Sdk.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<Description>.NET SDK for OpenFGA</Description>
<Copyright>OpenFGA</Copyright>
<RootNamespace>OpenFga.Sdk</RootNamespace>
<Version>0.6.0</Version>
<Version>0.7.0</Version>
<DocumentationFile>bin\$(Configuration)\$(TargetFramework)\OpenFga.Sdk.xml</DocumentationFile>
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
<PackageReadmeFile>README.md</PackageReadmeFile>
Expand Down
Loading