Skip to content
Merged
Show file tree
Hide file tree
Changes from 25 commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
cfca351
Initial plan
Copilot Jul 3, 2025
5ea52dc
Add .NET 10 preview support to build system and CI/CD
Copilot Jul 3, 2025
bbd5577
Add .NET 10 preview documentation and validation script
Copilot Jul 3, 2025
e6ee766
Complete .NET 10 preview support across all TargetNetNext project files
Copilot Jul 3, 2025
f659d9d
Remove invalid include-prerelease parameter from setup-dotnet action
Copilot Jul 3, 2025
a04d982
Update .NET 10 preview versions to latest 10.0.0-preview.5.25277.114
Copilot Jul 3, 2025
80dfa7a
Remove net10.0 from Microsoft.Bcl.Memory warning suppression conditions
Copilot Jul 3, 2025
9ddd24b
Add .NET 10 preview support to AOT check workflow
Copilot Jul 3, 2025
93a7d44
Add .NET 10 preview support to CodeQL analysis workflow
Copilot Jul 3, 2025
9941dd8
Fix .NET 10 unit test failures by updating project references and SDK…
Copilot Jul 4, 2025
29127df
remove unneeded package refs
JoshLozensky Aug 8, 2025
9a3d818
add api docs
JoshLozensky Aug 9, 2025
5575e57
Adjust config files from AI edits
JoshLozensky Aug 9, 2025
97f3965
merge main
JoshLozensky Aug 9, 2025
530d258
fixing build errors
JoshLozensky Aug 14, 2025
5173ff8
fix props error
JoshLozensky Aug 14, 2025
8796aea
fix package warnings/errors
JoshLozensky Aug 15, 2025
afec494
fix package warnings/errors
JoshLozensky Aug 15, 2025
6fcd07c
Merge branch 'master' into lozensky/TargetNetTenPreview
JoshLozensky Aug 15, 2025
c689b07
merge
JoshLozensky Aug 15, 2025
644fac5
Address warnings/errors
JoshLozensky Aug 19, 2025
6d40cdd
organize props and clean up README
JoshLozensky Aug 20, 2025
ff838ba
fixing cache test reflection
JoshLozensky Aug 21, 2025
33f3086
merge main
JoshLozensky Aug 21, 2025
4c125ca
Fix x-unit collection
JoshLozensky Aug 21, 2025
a83d8bb
add suppression for NU5104
JoshLozensky Aug 22, 2025
d895fb8
addressing PR feedback
JoshLozensky Aug 26, 2025
263123c
Merge branch 'master' into lozensky/TargetNetTenPreview
JoshLozensky Aug 26, 2025
b71281c
removing unneeded version logic
JoshLozensky Aug 27, 2025
b14facc
Merge branch 'master' into lozensky/TargetNetTenPreview
JoshLozensky Aug 27, 2025
28042ed
fix ui tests
JoshLozensky Aug 29, 2025
8cee0e2
Merge branch 'master' into lozensky/TargetNetTenPreview
JoshLozensky Sep 8, 2025
c1660ba
merge latest main
JoshLozensky Sep 13, 2025
d5f67dc
experimenting with E2E test retry logic
JoshLozensky Sep 13, 2025
a13a4fb
merge main
JoshLozensky Oct 17, 2025
19003f5
update to rc 1
JoshLozensky Oct 28, 2025
8c30404
Merge branch 'master' into lozensky/TargetNetTenPreview
JoshLozensky Oct 28, 2025
d36e254
fix various warnings
JoshLozensky Oct 28, 2025
2550f34
fix a couple more warnings
JoshLozensky Oct 28, 2025
4ff353f
Merge branch 'master' into lozensky/TargetNetTenPreview
JoshLozensky Oct 29, 2025
1803c06
add net 10 directly to devapps for testing
JoshLozensky Oct 30, 2025
05d259c
exclude test from running with net 10
JoshLozensky Oct 31, 2025
2df2de8
move exclusion inside namespace
JoshLozensky Nov 4, 2025
67c3514
Merge branch 'master' into lozensky/TargetNetTenPreview
JoshLozensky Nov 4, 2025
c1d4c4b
exclude UI tests from net 10
JoshLozensky Nov 5, 2025
a5c6252
address PR feedback
JoshLozensky Nov 7, 2025
3e2493f
Merge branch 'master' into lozensky/TargetNetTenPreview
JoshLozensky Nov 7, 2025
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
19 changes: 17 additions & 2 deletions .github/workflows/aot-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ on:
- ready_for_review
branches: [ "master", "rel/v2" ]

env:
TargetNetNext: True

jobs:
analyze:
runs-on: windows-latest
Expand All @@ -27,7 +30,19 @@ jobs:
with:
dotnet-version: 9.0.x

- name: Runs powershell script
id: aot-powershell
- name: Setup .NET 10.0.x preview
if: env.TargetNetNext == 'True'
uses: actions/setup-dotnet@v4
with:
dotnet-version: 10.0.x

- name: Runs AOT check with .NET 9.0
id: aot-powershell-net9
run: build\test-aot.ps1 'net9.0'

- name: Runs AOT check with .NET 10.0
id: aot-powershell-net10
if: env.TargetNetNext == 'True'
run: build\test-aot.ps1 'net10.0'
continue-on-error: true

14 changes: 14 additions & 0 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ on:
branches:
- master

env:
TargetNetNext: 'True'

jobs:
analyse:
name: Analyse
Expand Down Expand Up @@ -54,6 +57,12 @@ jobs:
with:
dotnet-version: 9.0.x

- name: Setup .NET 10.0.x preview
uses: actions/setup-dotnet@v4
if: env.TargetNetNext == 'True'
with:
dotnet-version: 10.0.x

# Install workload
- name: Setup wasm-tools
run: dotnet workload install wasm-tools
Expand All @@ -64,5 +73,10 @@ jobs:
- name: Build with .NET 9
run: dotnet test Microsoft.Identity.Web.sln -f net9.0 -p:FROM_GITHUB_ACTION=true --configuration Release --filter "(FullyQualifiedName!~Microsoft.Identity.Web.Test.Integration)&(FullyQualifiedName!~WebAppUiTests)&(FullyQualifiedName=IntegrationTests)"

- name: Build with .NET 10
if: env.TargetNetNext == 'True'
run: dotnet test Microsoft.Identity.Web.sln -f net10.0 -p:FROM_GITHUB_ACTION=true -p:TargetNetNext=${{env.TargetNetNext}} --configuration Release --filter "(FullyQualifiedName!~Microsoft.Identity.Web.Test.Integration)&(FullyQualifiedName!~WebAppUiTests)&(FullyQualifiedName=IntegrationTests)"
continue-on-error: true

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
16 changes: 15 additions & 1 deletion .github/workflows/dotnetcore.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ on:
branches:
- master

env:
TargetNetNext: 'True'

jobs:
build:
runs-on: windows-latest
Expand All @@ -31,6 +34,12 @@ jobs:
with:
dotnet-version: 9.0.x

- name: Setup .NET 10.0.x preview
if: env.TargetNetNext == 'True'
uses: actions/setup-dotnet@v4
with:
dotnet-version: 10.0.x

- name: 'Setup MSBuild'
uses: microsoft/setup-msbuild@v2
with:
Expand All @@ -40,14 +49,19 @@ jobs:
run: dotnet workload install wasm-tools

- name: Build solution
run: msbuild Microsoft.Identity.Web.sln -r -t:build -verbosity:m -property:Configuration=Release
run: msbuild Microsoft.Identity.Web.sln -r -t:build -verbosity:m -property:Configuration=Release -property:TargetNetNext=${{env.TargetNetNext}}

- name: Test with .NET 8.0.x
run: dotnet test --no-restore --no-build Microsoft.Identity.Web.sln -f net8.0 -v m -p:FROM_GITHUB_ACTION=true --configuration Release --collect "Xplat Code Coverage" --filter "(FullyQualifiedName!~Microsoft.Identity.Web.Test.Integration)&(FullyQualifiedName!~WebAppUiTests)&(FullyQualifiedName!~IntegrationTests)&(FullyQualifiedName!~TokenAcquirerTests)&(FullyQualifiedName!~AgentApplicationsTests)"

- name: Test with .NET 9.0.x
run: dotnet test --no-restore --no-build Microsoft.Identity.Web.sln -f net9.0 -v m -p:FROM_GITHUB_ACTION=true --configuration Release --collect "Xplat Code Coverage" --filter "(FullyQualifiedName!~Microsoft.Identity.Web.Test.Integration)&(FullyQualifiedName!~WebAppUiTests)&(FullyQualifiedName!~IntegrationTests)&(FullyQualifiedName!~TokenAcquirerTests)&(FullyQualifiedName!~AgentApplicationsTests)"

- name: Test with .NET 10.0.x
if: env.TargetNetNext == 'True'
run: dotnet test --no-restore --no-build Microsoft.Identity.Web.sln -f net10.0 -v m -p:FROM_GITHUB_ACTION=true -p:TargetNetNext=${{env.TargetNetNext}} --configuration Release --collect "Xplat Code Coverage" --filter "(FullyQualifiedName!~Microsoft.Identity.Web.Test.Integration)&(FullyQualifiedName!~WebAppUiTests)&(FullyQualifiedName!~IntegrationTests)&(FullyQualifiedName!~TokenAcquirerTests)"
continue-on-error: true

- name: Test with .NET 6.0.x
run: dotnet test Microsoft.Identity.Web.sln -f net6.0 -v m -p:FROM_GITHUB_ACTION=true --configuration Release --filter "(FullyQualifiedName!~Microsoft.Identity.Web.Test.Integration)&(FullyQualifiedName!~WebAppUiTests)&(FullyQualifiedName!~IntegrationTests)&(FullyQualifiedName!~TokenAcquirerTests)&(FullyQualifiedName!~AgentApplicationsTests)"

Expand Down
43 changes: 39 additions & 4 deletions Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
<Project>
<PropertyGroup>
<!--This should be passed from the VSTS build-->
<!-- This needs to be greater than or equal to the validation baseline version -->
<MicrosoftIdentityWebVersion Condition="'$(MicrosoftIdentityWebVersion)' == ''">3.13.2</MicrosoftIdentityWebVersion>
<!-- This needs to be greater than or equal to the validation baseline version. The conditional logic around TargetNetNext is there
to avoid NU5104 for packing a release version library with prerelease deps. By adding preview to it, that warning is avoided.
-->
<MicrosoftIdentityWebVersion Condition="'$(MicrosoftIdentityWebVersion)' == '' and '$(TargetNetNext)' != 'True'">3.13.2</MicrosoftIdentityWebVersion>
<MicrosoftIdentityWebVersion Condition="'$(MicrosoftIdentityWebVersion)' == '' and '$(TargetNetNext)' == 'True'">3.14.0-preview.net10.1</MicrosoftIdentityWebVersion>
<!--This will generate AssemblyVersion, AssemblyFileVersion and AssemblyInformationVersion-->
<Version>$(MicrosoftIdentityWebVersion)</Version>

Expand All @@ -23,11 +26,16 @@
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
</PropertyGroup>

<!-- Uncomment this property group to build with NET 10.0 locally or set TargetNetNext to True in a CLI arg-->
<!-- <PropertyGroup>
<TargetNetNext>True</TargetNetNext>
</PropertyGroup> -->

<PropertyGroup>
<!-- For files to appear in the Visual Studio Solution explorer given we have conditional inclusion in some projects (IdWeb for instance)
we need to have the higher framework, even if this produces a warning in the IDE -->
<TargetFrameworks>net6.0; net7.0; net8.0; net9.0; net462; net472; netstandard2.0</TargetFrameworks>
<TargetFrameworks Condition="'$(TargetNetNext)'== 'True'">$(TargetFrameworks); </TargetFrameworks>
<TargetFrameworks Condition="'$(TargetNetNext)'== 'True'">$(TargetFrameworks); net10.0</TargetFrameworks>
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>../../build/MSAL.snk</AssemblyOriginatorKeyFile>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
Expand All @@ -36,7 +44,15 @@
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
<LangVersion>13</LangVersion>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<NoWarn>$(NoWarn);NETSDK1138</NoWarn>
</PropertyGroup>


<PropertyGroup Condition="'$(TargetNetNext)' == 'True'">
<SuppressNETCoreSdkPreviewMessage>true</SuppressNETCoreSdkPreviewMessage>
<!-- Compiling w/ Net 10.0 SDK gives this warning in every net core version "PackageReference System.Formats.Asn1 will not be pruned.
Consider removing this package from your dependencies, as it is likely unnecessary." However, the ref is necessary due to Microsoft Security Advisory CVE-2024-38095. -->
<WarningsNotAsErrors>$(WarningsNotAsErrors);NU1510</WarningsNotAsErrors>
<CheckEolTargetFramework>false</CheckEolTargetFramework>
</PropertyGroup>

<PropertyGroup Condition="'$(TargetFramework)' == 'net6.0' Or '$(TargetFramework)' == 'net7.0'">
Expand Down Expand Up @@ -113,6 +129,23 @@
<MicrosoftExtensionsDependencyInjectionVersion>$(NetNineRuntimeVersion)</MicrosoftExtensionsDependencyInjectionVersion>
</PropertyGroup>

<PropertyGroup Condition="'$(TargetFramework)' == 'net10.0'">
<NetTenRuntimeVersion>10.0.0-preview.*</NetTenRuntimeVersion>
<AspNetCoreTenRuntimeVersion>10.0.0-preview.*</AspNetCoreTenRuntimeVersion>
<MicrosoftAspNetCoreAuthenticationJwtBearerVersion>$(AspNetCoreTenRuntimeVersion)</MicrosoftAspNetCoreAuthenticationJwtBearerVersion>
<MicrosoftAspNetCoreAuthenticationOpenIdConnectVersion>$(AspNetCoreTenRuntimeVersion)</MicrosoftAspNetCoreAuthenticationOpenIdConnectVersion>
<MicrosoftExtensionsCachingMemoryVersion>$(NetTenRuntimeVersion)</MicrosoftExtensionsCachingMemoryVersion>
<MicrosoftExtensionsHostingVersion>$(NetTenRuntimeVersion)</MicrosoftExtensionsHostingVersion>
<MicrosoftAspNetCoreDataProtectionVersion>$(AspNetCoreTenRuntimeVersion)</MicrosoftAspNetCoreDataProtectionVersion>
<SystemSecurityCryptographyPkcsVersion>$(NetTenRuntimeVersion)</SystemSecurityCryptographyPkcsVersion>
<SystemSecurityCryptographyXmlVersion>$(NetTenRuntimeVersion)</SystemSecurityCryptographyXmlVersion>
<MicrosoftExtensionsLoggingVersion>$(NetTenRuntimeVersion)</MicrosoftExtensionsLoggingVersion>
<MicrosoftExtensionsConfigurationBinderVersion>$(NetTenRuntimeVersion)</MicrosoftExtensionsConfigurationBinderVersion>
<SystemFormatsAsn1Version>$(NetTenRuntimeVersion)</SystemFormatsAsn1Version>
<SystemTextJsonVersion>$(NetTenRuntimeVersion)</SystemTextJsonVersion>
<MicrosoftExtensionsDependencyInjectionVersion>$(NetTenRuntimeVersion)</MicrosoftExtensionsDependencyInjectionVersion>
</PropertyGroup>

<PropertyGroup Condition="'$(TargetFramework)' == 'net8.0'">
<MicrosoftAspNetCoreAuthenticationJwtBearerVersion>8.0.0</MicrosoftAspNetCoreAuthenticationJwtBearerVersion>
<MicrosoftAspNetCoreAuthenticationOpenIdConnectVersion>8.0.0</MicrosoftAspNetCoreAuthenticationOpenIdConnectVersion>
Expand Down Expand Up @@ -192,6 +225,8 @@
<MicrosoftExtensionsLoggingVersion>2.1.0</MicrosoftExtensionsLoggingVersion>
<MicrosoftExtensionsDependencyInjectionVersion>2.1.0</MicrosoftExtensionsDependencyInjectionVersion>
<MicrosoftExtensionsConfigurationBinderVersion>2.2.4</MicrosoftExtensionsConfigurationBinderVersion>
<!-- Microsoft Security Advisory CVE-2024-38095 -->
<SystemFormatsAsn1Version>8.0.1</SystemFormatsAsn1Version>
</PropertyGroup>

<ItemGroup>
Expand Down
32 changes: 32 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,38 @@ This library controls how users sign-in and access services. We recommend you al

If you find a security issue with our libraries or services, please report it to [[email protected]](mailto:[email protected]) with as much detail as possible. Your submission may be eligible for a bounty through the [Microsoft Bounty](http://aka.ms/bugbounty) program. Please do not post security issues to GitHub Issues or any other public site. We will contact you shortly upon receiving the information. We encourage you to get notifications of when security incidents occur by visiting [this page](https://technet.microsoft.com/en-us/security/dd252948) and subscribing to Security Advisory Alerts.

## Building with .NET 10 Preview

Microsoft Identity Web supports building and testing with .NET 10 preview versions using the `TargetNetNext` conditional compilation flag. This enables early testing and compatibility validation with the latest .NET preview releases.

### Prerequisites

- Install .NET 10 preview SDK from [https://dotnet.microsoft.com/download/dotnet/10.0](https://dotnet.microsoft.com/download/dotnet/10.0)

### Building with .NET 10 Preview

To build the solution with .NET 10 preview support:

```bash
# Build with .NET 10 preview targets included
dotnet build Microsoft.Identity.Web.sln -p:TargetNetNext=True

# Or using MSBuild
msbuild Microsoft.Identity.Web.sln -p:TargetNetNext=True
```
You can also set the TargetNetNext environment variable on your machine with the value `True`.

### Testing with .NET 10 Preview

To run tests targeting .NET 10 preview:

```bash
# Run tests with .NET 10 preview (conditional)
dotnet test Microsoft.Identity.Web.sln -f net10.0 -p:TargetNetNext=True
```

**Note:** .NET 10 preview support is conditional and requires setting `TargetNetNext=True` during build/test operations. This ensures compatibility with the latest preview versions while maintaining stability for production builds.

## Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow [Microsoft's Trademark & Brand Guidelines](https://www.microsoft.com/legal/intellectualproperty/trademarks). Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.
Expand Down
1 change: 1 addition & 0 deletions benchmark/Benchmarks.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
<ItemGroup>
<PackageReference Include="BenchmarkDotNet" Version="$(BenchmarkDotNetVersion)" />
<PackageReference Include="BenchmarkDotNet.Diagnostics.Windows" Version="$(BenchmarkDotNetDiagnosticsWindowsVersion)" />
<PackageReference Include="System.Text.RegularExpressions" Version="$(SystemTextRegularExpressionsVersion)" />
</ItemGroup>

<ItemGroup>
Expand Down
2 changes: 2 additions & 0 deletions benchmark/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
<MicrosoftIdentityLabApiVersion>1.0.0</MicrosoftIdentityLabApiVersion>
<BenchmarkDotNetVersion>0.13.12</BenchmarkDotNetVersion>
<BenchmarkDotNetDiagnosticsWindowsVersion>0.13.12</BenchmarkDotNetDiagnosticsWindowsVersion>
<SystemNetHttpVersion>4.3.4</SystemNetHttpVersion>
<SystemTextRegularExpressionsVersion>4.3.1</SystemTextRegularExpressionsVersion>
</PropertyGroup>

<ItemGroup>
Expand Down
7 changes: 7 additions & 0 deletions build/template-install-dependencies.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,13 @@ steps:
inputs:
useGlobalJson: true

- task: UseDotNet@2
displayName: 'Use .NET SDK 10.0.x preview'
inputs:
version: 10.0.x
useGlobalJson: false
includePreviewVersions: true

# Run Nuget Tool Installer

- task: NuGetToolInstaller@1
Expand Down
9 changes: 8 additions & 1 deletion build/test-aot.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,14 @@ param([string]$targetNetFramework)

$projectName='Microsoft.Identity.Web.AotCompatibility.TestApp'
$rootDirectory = Split-Path $PSScriptRoot -Parent
$publishOutput = dotnet publish $rootDirectory/tests/$projectName/$projectName.csproj --framework $targetNetFramework -nodeReuse:false /p:UseSharedCompilation=false

# Add TargetNetNext parameter if targeting .NET 10
$additionalParams = ""
if ($targetNetFramework -eq "net10.0") {
$additionalParams = "/p:TargetNetNext=True"
}

$publishOutput = dotnet publish $rootDirectory/tests/$projectName/$projectName.csproj --framework $targetNetFramework -nodeReuse:false /p:UseSharedCompilation=false $additionalParams

$actualWarningCount = 0

Expand Down
3 changes: 2 additions & 1 deletion global.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
},
"sdk": {
"version": "9.0.108",
"rollForward": "latestFeature"
"allowPrerelease": true,
"rollForward": "latestMajor"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#nullable enable
Microsoft.Identity.Web.Diagnostics.IdHelper
Microsoft.Identity.Web.Diagnostics.OsHelper
Microsoft.Identity.Web.Diagnostics.OsHelper.OsHelper() -> void
Microsoft.Identity.Web.IdHelper
Microsoft.Identity.Web.Throws
static Microsoft.Identity.Web.Diagnostics.IdHelper.CreateTelemetryInfo() -> string!
static Microsoft.Identity.Web.Diagnostics.IdHelper.GetIdWebVersion() -> string!
static Microsoft.Identity.Web.Diagnostics.OsHelper.IsLinuxPlatform() -> bool
static Microsoft.Identity.Web.Diagnostics.OsHelper.IsMacPlatform() -> bool
static Microsoft.Identity.Web.Diagnostics.OsHelper.IsWindowsPlatform() -> bool
static Microsoft.Identity.Web.IdHelper.CreateTelemetryInfo() -> string!
static Microsoft.Identity.Web.IdHelper.GetIdWebVersion() -> string!
static Microsoft.Identity.Web.Throws.ArgumentException(string! paramName, string? message) -> void
static Microsoft.Identity.Web.Throws.ArgumentException(string! paramName, string? message, System.Exception? innerException) -> void
static Microsoft.Identity.Web.Throws.ArgumentNullException(string! paramName) -> void
static Microsoft.Identity.Web.Throws.ArgumentNullException(string! paramName, string? message) -> void
static Microsoft.Identity.Web.Throws.ArgumentOutOfRangeException(string! paramName) -> void
static Microsoft.Identity.Web.Throws.ArgumentOutOfRangeException(string! paramName, object? actualValue, string? message) -> void
static Microsoft.Identity.Web.Throws.ArgumentOutOfRangeException(string! paramName, string? message) -> void
static Microsoft.Identity.Web.Throws.IfBufferTooSmall(int bufferSize, int requiredSize, string! paramName = "") -> void
static Microsoft.Identity.Web.Throws.IfMemberNull<TParameter, TMember>(TParameter argument, TMember member, string! paramName = "", string! memberName = "") -> TMember
static Microsoft.Identity.Web.Throws.IfNull<T>(T argument, string! paramName = "") -> T
static Microsoft.Identity.Web.Throws.IfNullOrEmpty(string? argument, string! paramName = "") -> string!
static Microsoft.Identity.Web.Throws.IfNullOrEmpty<T>(System.Collections.Generic.ICollection<T>? argument, string! paramName = "") -> System.Collections.Generic.ICollection<T>!
static Microsoft.Identity.Web.Throws.IfNullOrEmpty<T>(System.Collections.Generic.IReadOnlyCollection<T>? argument, string! paramName = "") -> System.Collections.Generic.IReadOnlyCollection<T>!
static Microsoft.Identity.Web.Throws.IfNullOrMemberNull<TParameter, TMember>(TParameter argument, TMember member, string! paramName = "", string! memberName = "") -> TMember
static Microsoft.Identity.Web.Throws.IfNullOrWhitespace(string? argument, string! paramName = "") -> string!
static Microsoft.Identity.Web.Throws.IfOutOfRange<T>(T argument, string! paramName = "") -> T
static Microsoft.Identity.Web.Throws.InvalidOperationException(string! message) -> void
static Microsoft.Identity.Web.Throws.InvalidOperationException(string! message, System.Exception? innerException) -> void
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#nullable enable
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#nullable enable
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#nullable enable
Loading
Loading