Context
PR #249 surfaced a build warning: Microsoft.Extensions.ApiDescription.Client is deprecated as of .NET 10 Preview 7.
Scope
Two projects reference the deprecated package (both at v8.0.8):
Source/ISHRemote/Trisoft.ISHRemote.OpenApiAM10/Trisoft.ISHRemote.OpenApiAM10.csproj
Source/ISHRemote/Trisoft.ISHRemote.OpenApiISH30/Trisoft.ISHRemote.OpenApiISH30.csproj
Both also reference NSwag.ApiDescription.Client v14.1.0 — the actual C# code-generation engine. That package is not deprecated and remains the target toolchain.
Decision: stay with NSwag, not Kiota
Microsoft's breaking-change doc lists NSwag as a supported migration target. Kiota is Microsoft's newer alternative but generates a fundamentally different client architecture (fluent request-builder pattern, System.Text.Json, different exception types) — adopting it would require rewriting every cmdlet that calls IshSession.OpenApiISH30Client or IshSession.OpenApiAM10Client, which is a breaking internal change. Aligning to NSwag CLI tooling preserves the generated output unchanged.
Work items
- Remove
<PackageReference Include="Microsoft.Extensions.ApiDescription.Client" Version="8.0.8" /> from both .csproj files.
- Extract the inline
<Options> currently embedded in each <OpenApiReference> item into standalone .nswag config files alongside each OpenApi*.json spec.
- Add a pre-build or CI step that invokes
dotnet tool run nswag run <config.nswag> (or npx nswag run) to regenerate the clients before compilation.
- Confirm the generated
obj/OpenApi*Client.cs output is identical to today — no cmdlet code changes should be necessary.
- Update any build or developer-setup documentation that describes how client generation works.
Out of scope
Migration to Kiota is explicitly excluded. It may be revisited as a separate, future major-version initiative.
Context
PR #249 surfaced a build warning:
Microsoft.Extensions.ApiDescription.Clientis deprecated as of .NET 10 Preview 7.<OpenApiReference>items to invoke NSwag at build time. It is now unmaintained and removed in a future .NET release.Scope
Two projects reference the deprecated package (both at v8.0.8):
Source/ISHRemote/Trisoft.ISHRemote.OpenApiAM10/Trisoft.ISHRemote.OpenApiAM10.csprojSource/ISHRemote/Trisoft.ISHRemote.OpenApiISH30/Trisoft.ISHRemote.OpenApiISH30.csprojBoth also reference
NSwag.ApiDescription.Clientv14.1.0 — the actual C# code-generation engine. That package is not deprecated and remains the target toolchain.Decision: stay with NSwag, not Kiota
Microsoft's breaking-change doc lists NSwag as a supported migration target. Kiota is Microsoft's newer alternative but generates a fundamentally different client architecture (fluent request-builder pattern, System.Text.Json, different exception types) — adopting it would require rewriting every cmdlet that calls
IshSession.OpenApiISH30ClientorIshSession.OpenApiAM10Client, which is a breaking internal change. Aligning to NSwag CLI tooling preserves the generated output unchanged.Work items
<PackageReference Include="Microsoft.Extensions.ApiDescription.Client" Version="8.0.8" />from both.csprojfiles.<Options>currently embedded in each<OpenApiReference>item into standalone.nswagconfig files alongside eachOpenApi*.jsonspec.dotnet tool run nswag run <config.nswag>(ornpx nswag run) to regenerate the clients before compilation.obj/OpenApi*Client.csoutput is identical to today — no cmdlet code changes should be necessary.Out of scope
Migration to Kiota is explicitly excluded. It may be revisited as a separate, future major-version initiative.