Skip to content

Suppress AOT configuration-binding SYSLIB warnings in AotCompatibility test app#3774

Merged
bgavrilMS merged 2 commits intomasterfrom
copilot/fix-syslib-warnings-net10
Apr 15, 2026
Merged

Suppress AOT configuration-binding SYSLIB warnings in AotCompatibility test app#3774
bgavrilMS merged 2 commits intomasterfrom
copilot/fix-syslib-warnings-net10

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 14, 2026

The configuration binding source generator (EnableConfigurationBindingGenerator=true) recursively walks the X509Certificate2 type graph via MicrosoftIdentityApplicationOptionsClientCredentials (IEnumerable<CredentialDescription>) → Certificate (X509Certificate2), producing 18 SYSLIB warnings on net10.0. Root cause is Microsoft.Identity.Abstractions 12 not being fully AOT-compatible. Certificates are never bound from IConfiguration—they are loaded programmatically—so the generated code silently skips those properties at runtime with no behavioral impact.

Changes

  • tests/Microsoft.Identity.Web.AotCompatibility.TestApp/Microsoft.Identity.Web.AotCompatibility.TestApp.csproj — adds <NoWarn> to suppress the 18 warnings:
<NoWarn>$(NoWarn);SYSLIB1100;SYSLIB1101;SYSLIB0026;SYSLIB0027;SYSLIB0028</NoWarn>
Code Count Source
SYSLIB1100 7 Types with no/multiple constructors (X500DistinguishedName, PublicKey, X509Extension, AsymmetricAlgorithm, AsnEncodedData, unsupported collections)
SYSLIB1101 6 Unsupported bindable properties (Certificate, ClientCredentials, IssuerName, PrivateKey, PublicKey, Extensions, EncodedKeyValue)
SYSLIB0026/27/28 4 Obsolete APIs in generated BindingExtensions.g.cs (X509Certificate2(), PublicKey.Key, X509Certificate2.PrivateKey)

The longer-term fix belongs upstream in Microsoft.Identity.Abstractions—annotating CredentialDescription.Certificate and MicrosoftIdentityApplicationOptions.ClientCredentials to be excluded from configuration binding generation.

Original prompt

Problem

The Microsoft.Identity.Web.AotCompatibility.TestApp test project produces 18 SYSLIB warnings when building for net10.0 with PublishAot=true and EnableConfigurationBindingGenerator=true. These warnings are caused by the configuration binding source generator recursively walking the X509Certificate2 type graph through MicrosoftIdentityApplicationOptionsClientCredentials (IEnumerable<CredentialDescription>) → Certificate (X509Certificate2).

The warnings originate from line 22 in Program.cs:

options => azureAdSection.Bind(options),

The affected types (X509Certificate2, X500DistinguishedName, PublicKey, AsymmetricAlgorithm, X509Extension, AsnEncodedData, X509ExtensionCollection) are never actually bound from configuration — certificates are loaded programmatically via DefaultCredentialsLoader and the various ICredentialSourceLoader implementations.

This is caused by referencing Microsoft.Identity.Abstractions 12 which is not fully AOT compatible.

Warnings to suppress

  • SYSLIB1100 (7 warnings) — Types that can't be instantiated by the source generator
  • SYSLIB1101 (6 warnings) — Unsupported properties on X509Certificate2 and related types
  • SYSLIB0026 (1 warning) — Obsolete X509Certificate2() parameterless constructor
  • SYSLIB0027 (1 warning) — Obsolete PublicKey.Key property
  • SYSLIB0028 (2 warnings) — Obsolete X509Certificate2.PrivateKey property

Fix

Add a <NoWarn> entry to the <PropertyGroup> in tests/Microsoft.Identity.Web.AotCompatibility.TestApp/Microsoft.Identity.Web.AotCompatibility.TestApp.csproj:

<NoWarn>$(NoWarn);SYSLIB1100;SYSLIB1101;SYSLIB0026;SYSLIB0027;SYSLIB0028</NoWarn>

This should be added inside the first <PropertyGroup> alongside the other project properties.

Why this is safe

All 18 warnings trace back to the source generator recursively walking the X509Certificate2 type graph. Nobody configures certificates via IConfiguration binding — they're loaded programmatically. The generated binding code simply skips those unsupported properties at runtime, which is correct behavior. Suppressing these warnings just silences the noise without changing any runtime behavior.

The following is the prior conversation context from the user's chat exploration (may be truncated):

User: Build succeeded.

C:__w\1\s\microsoft-identity-web\tests\Microsoft.Identity.Web.AotCompatibility.TestApp\Program.cs(22,28): warning SYSLIB1100: Cannot create instance of type 'System.Security.Cryptography.X509Certificates.X500DistinguishedName' because it has multiple public parameterized constructors. (https://learn.microsoft.com/dotnet/fundamentals/syslib-diagnostics/syslib1100) [C:__w\1\s\microsoft-identity-web\tests\Microsoft.Identity.Web.AotCompatibility.TestApp\Microsoft.Identity.Web.AotCompatibility.TestApp.csproj::TargetFramework=net10.0]
C:__w\1\s\microsoft-identity-web\tests\Microsoft.Identity.Web.AotCompatibility.TestApp\Program.cs(22,28): warning SYSLIB1101: Property 'IssuerName' on type 'System.Security.Cryptography.X509Certificates.X509Certificate2' is not supported. (https://learn.microsoft.com/dotnet/fundamentals/syslib-diagnostics/syslib1101) [C:__w\1\s\microsoft-identity-web\tests\Microsoft.Identity.Web.AotCompatibility.TestApp\Microsoft.Identity.Web.AotCompatibility.TestApp.csproj::TargetFramework=net10.0]
C:__w\1\s\microsoft-identity-web\tests\Microsoft.Identity.Web.AotCompatibility.TestApp\Program.cs(22,28): warning SYSLIB1101: Property 'Certificate' on type 'Microsoft.Identity.Abstractions.CredentialDescription' is not supported. (https://learn.microsoft.com/dotnet/fundamentals/syslib-diagnostics/syslib1101) [C:__w\1\s\microsoft-identity-web\tests\Microsoft.Identity.Web.AotCompatibility.TestApp\Microsoft.Identity.Web.AotCompatibility.TestApp.csproj::TargetFramework=net10.0]
C:__w\1\s\microsoft-identity-web\tests\Microsoft.Identity.Web.AotCompatibility.TestApp\Program.cs(22,28): warning SYSLIB1100: The collection element type is not supported: 'System.Collections.Generic.IEnumerable'. (https://learn.microsoft.com/dotnet/fundamentals/syslib-diagnostics/syslib1100) [C:__w\1\s\microsoft-identity-web\tests\Microsoft.Identity.Web.AotCompatibility.TestApp\Microsoft.Identity.Web.AotCompatibility.TestApp.csproj::TargetFramework=net10.0]
C:__w\1\s\microsoft-identity-web\tests\Microsoft.Identity.Web.AotCompatibility.TestApp\Program.cs(22,28): warning SYSLIB1101: Property 'ClientCredentials' on type 'Microsoft.Identity.Abstractions.MicrosoftIdentityApplicationOptions' is not supported. (https://learn.microsoft.com/dotnet/fundamentals/syslib-diagnostics/syslib1101) [C:__w\1\s\microsoft-identity-web\tests\Microsoft.Identity.Web.AotCompatibility.TestApp\Microsoft.Identity.Web.AotCompatibility.TestApp.csproj::TargetFramework=net10.0]
C:__w\1\s\microsoft-identity-web\tests\Microsoft.Identity.Web.AotCompatibility.TestApp\Program.cs(22,28): warning ...

This pull request was created from Copilot chat.

Copilot AI changed the title [WIP] Fix SYSLIB warnings in test project for net10.0 build Suppress AOT configuration-binding SYSLIB warnings in AotCompatibility test app Apr 15, 2026
Copilot AI requested a review from gladjohn April 15, 2026 01:13
@gladjohn gladjohn marked this pull request as ready for review April 15, 2026 02:16
@gladjohn gladjohn requested a review from a team as a code owner April 15, 2026 02:16
@bgavrilMS bgavrilMS merged commit a25c032 into master Apr 15, 2026
6 checks passed
@bgavrilMS bgavrilMS deleted the copilot/fix-syslib-warnings-net10 branch April 15, 2026 11:37
This was referenced Apr 20, 2026
github-actions Bot pushed a commit to EelcoLos/nx-tinkering that referenced this pull request Apr 21, 2026
Pinned
[Microsoft.Identity.Web](https://github.com/AzureAD/microsoft-identity-web)
at 4.8.0.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Identity.Web's
releases](https://github.com/AzureAD/microsoft-identity-web/releases)._

## 4.8.0

## What's Changed
* Bump flatted from 3.3.3 to 3.4.2 in
/tests/DevApps/SidecarAdapter/typescript by @​dependabot[bot] in
AzureAD/microsoft-identity-web#3753
* Update changelog.md for ID.Web 4.6.0 by @​bgavrilMS in
AzureAD/microsoft-identity-web#3756
* Add token binding to MicrosoftIdentityMessageHandler by @​cpp11nullptr
in AzureAD/microsoft-identity-web#3743
* Bump picomatch in /tests/DevApps/SidecarAdapter/typescript by
@​dependabot[bot] in
AzureAD/microsoft-identity-web#3759
* Documentation: Clarify managed identity credential types for
containerized vs. VM/App Service deployments by @​Copilot in
AzureAD/microsoft-identity-web#3585
* Bump path-to-regexp from 8.3.0 to 8.4.0 in
/tests/DevApps/SidecarAdapter/typescript by @​dependabot[bot] in
AzureAD/microsoft-identity-web#3762
* Upgrade Microsoft Application Insights packages by @​RojaEnnam in
AzureAD/microsoft-identity-web#3763
* Use Abstractions 12 by @​pmaytak in
AzureAD/microsoft-identity-web#3761
* Post-4.7.0 by @​pmaytak in
AzureAD/microsoft-identity-web#3768
* Fix Comp Gov DOTNET-Security-10.0 by @​reginayap8 in
AzureAD/microsoft-identity-web#3769
* Upgrade CodeQL to V4: Fix 10 CodeQL Analysis Warnings and Errors by
@​reginayap8 in
AzureAD/microsoft-identity-web#3770
* fix warnings by @​gladjohn in
AzureAD/microsoft-identity-web#3771
* adding examples for using postgres as a distributed cache by
@​JaredMSFT in
AzureAD/microsoft-identity-web#3766
* Suppress AOT configuration-binding SYSLIB warnings in AotCompatibility
test app by @​Copilot in
AzureAD/microsoft-identity-web#3774
* Bump vite from 7.1.11 to 7.3.2 in
/tests/DevApps/SidecarAdapter/typescript by @​dependabot[bot] in
AzureAD/microsoft-identity-web#3772
* Skip legacy B2C local-account Todo UI test in WebAppUiTests by
@​Copilot in AzureAD/microsoft-identity-web#3778
* Fix initialization of ConfidentialClientApplicationOptions in
MergedOptions by @​cpp11nullptr in
AzureAD/microsoft-identity-web#3760
* Bump net8/net9/net10 runtime package baselines to patched crypto
servicing versions by @​Copilot in
AzureAD/microsoft-identity-web#3779
* Fix flaky certificate test failures on CI by @​gladjohn in
AzureAD/microsoft-identity-web#3780
* MTLS Without Tokens Support by @​tlupes in
AzureAD/microsoft-identity-web#3747
* Fix CredentialsProvider DI lifetime mismatch causing startup crash in
Development by @​Avery-Dunn in
AzureAD/microsoft-identity-web#3783
* Remove unused DataProtection configuration from Sidecar by @​Copilot
in AzureAD/microsoft-identity-web#3776

## New Contributors
* @​RojaEnnam made their first contribution in
AzureAD/microsoft-identity-web#3763
* @​reginayap8 made their first contribution in
AzureAD/microsoft-identity-web#3769
* @​JaredMSFT made their first contribution in
AzureAD/microsoft-identity-web#3766

**Full Changelog**:
AzureAD/microsoft-identity-web@4.6.0...4.8.0

Commits viewable in [compare
view](AzureAD/microsoft-identity-web@4.7.0...4.8.0).
</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants