1
0
mirror of synced 2025-12-19 18:06:02 -05:00

Fix APIDiff to include NETCore references for AspNetCore and WindowsDesktop (#9989)

* Initial plan

* Add NETCore reference support for AspNetCore and WindowsDesktop API diffs

Co-authored-by: ericstj <8918108+ericstj@users.noreply.github.com>

* Run the updated script

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: ericstj <8918108+ericstj@users.noreply.github.com>
Co-authored-by: Eric StJohn <ericstj@microsoft.com>
This commit is contained in:
Copilot
2025-07-21 14:15:25 -07:00
committed by GitHub
parent 79822ab09a
commit 6b610a7544
12 changed files with 157 additions and 106 deletions

View File

@@ -6,7 +6,7 @@
public sealed class CircuitOptions public sealed class CircuitOptions
{ {
+ public Microsoft.Extensions.Caching.Hybrid.HybridCache? HybridPersistenceCache { get; set; } + public Microsoft.Extensions.Caching.Hybrid.HybridCache? HybridPersistenceCache { get; set; }
+ public System.Nullable<System.TimeSpan> PersistedCircuitDistributedRetentionPeriod { get; set; } + public System.TimeSpan? PersistedCircuitDistributedRetentionPeriod { get; set; }
+ public int PersistedCircuitInMemoryMaxRetained { get; set; } + public int PersistedCircuitInMemoryMaxRetained { get; set; }
+ public System.TimeSpan PersistedCircuitInMemoryRetentionPeriod { get; set; } + public System.TimeSpan PersistedCircuitInMemoryRetentionPeriod { get; set; }
} }

View File

@@ -3,7 +3,7 @@
```diff ```diff
namespace Microsoft.AspNetCore.Components.Routing namespace Microsoft.AspNetCore.Components.Routing
{ {
public sealed class NotFoundEventArgs public sealed class NotFoundEventArgs : System.EventArgs
{ {
- public NotFoundEventArgs(); - public NotFoundEventArgs();
+ public NotFoundEventArgs(string url); + public NotFoundEventArgs(string url);

View File

@@ -3,36 +3,43 @@
```diff ```diff
- namespace Microsoft.AspNetCore.Http.Validation - namespace Microsoft.AspNetCore.Http.Validation
- { - {
- [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")]
- public interface IValidatableInfo - public interface IValidatableInfo
- { - {
- System.Threading.Tasks.Task ValidateAsync(object? value, Microsoft.AspNetCore.Http.Validation.ValidateContext context, System.Threading.CancellationToken cancellationToken); - System.Threading.Tasks.Task ValidateAsync(object? value, Microsoft.AspNetCore.Http.Validation.ValidateContext context, System.Threading.CancellationToken cancellationToken);
- } - }
- [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")]
- public interface IValidatableInfoResolver - public interface IValidatableInfoResolver
- { - {
- bool TryGetValidatableParameterInfo(System.Reflection.ParameterInfo parameterInfo, out Microsoft.AspNetCore.Http.Validation.IValidatableInfo? validatableInfo); - bool TryGetValidatableParameterInfo(System.Reflection.ParameterInfo parameterInfo, out Microsoft.AspNetCore.Http.Validation.IValidatableInfo? validatableInfo);
- bool TryGetValidatableTypeInfo(System.Type type, out Microsoft.AspNetCore.Http.Validation.IValidatableInfo? validatableInfo); - bool TryGetValidatableTypeInfo(System.Type type, out Microsoft.AspNetCore.Http.Validation.IValidatableInfo? validatableInfo);
- } - }
- [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")]
- public abstract class ValidatableParameterInfo : Microsoft.AspNetCore.Http.Validation.IValidatableInfo - public abstract class ValidatableParameterInfo : Microsoft.AspNetCore.Http.Validation.IValidatableInfo
- { - {
- protected ValidatableParameterInfo(System.Type parameterType, string name, string displayName); - protected ValidatableParameterInfo(System.Type parameterType, string name, string displayName);
- protected abstract System.ComponentModel.DataAnnotations.ValidationAttribute[] GetValidationAttributes(); - protected abstract System.ComponentModel.DataAnnotations.ValidationAttribute[] GetValidationAttributes();
- public virtual System.Threading.Tasks.Task ValidateAsync(object? value, Microsoft.AspNetCore.Http.Validation.ValidateContext context, System.Threading.CancellationToken cancellationToken); - public virtual System.Threading.Tasks.Task ValidateAsync(object? value, Microsoft.AspNetCore.Http.Validation.ValidateContext context, System.Threading.CancellationToken cancellationToken);
- } - }
- [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")]
- public abstract class ValidatablePropertyInfo : Microsoft.AspNetCore.Http.Validation.IValidatableInfo - public abstract class ValidatablePropertyInfo : Microsoft.AspNetCore.Http.Validation.IValidatableInfo
- { - {
- protected ValidatablePropertyInfo(System.Type declaringType, System.Type propertyType, string name, string displayName); - protected ValidatablePropertyInfo(System.Type declaringType, System.Type propertyType, string name, string displayName);
- protected abstract System.ComponentModel.DataAnnotations.ValidationAttribute[] GetValidationAttributes(); - protected abstract System.ComponentModel.DataAnnotations.ValidationAttribute[] GetValidationAttributes();
- public virtual System.Threading.Tasks.Task ValidateAsync(object? value, Microsoft.AspNetCore.Http.Validation.ValidateContext context, System.Threading.CancellationToken cancellationToken); - public virtual System.Threading.Tasks.Task ValidateAsync(object? value, Microsoft.AspNetCore.Http.Validation.ValidateContext context, System.Threading.CancellationToken cancellationToken);
- } - }
- public sealed class ValidatableTypeAttribute - [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")]
- public sealed class ValidatableTypeAttribute : System.Attribute
- { - {
- public ValidatableTypeAttribute(); - public ValidatableTypeAttribute();
- } - }
- [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")]
- public abstract class ValidatableTypeInfo : Microsoft.AspNetCore.Http.Validation.IValidatableInfo - public abstract class ValidatableTypeInfo : Microsoft.AspNetCore.Http.Validation.IValidatableInfo
- { - {
- protected ValidatableTypeInfo(System.Type type, System.Collections.Generic.IReadOnlyList<Microsoft.AspNetCore.Http.Validation.ValidatablePropertyInfo> members); - protected ValidatableTypeInfo(System.Type type, System.Collections.Generic.IReadOnlyList<Microsoft.AspNetCore.Http.Validation.ValidatablePropertyInfo> members);
- public virtual System.Threading.Tasks.Task ValidateAsync(object? value, Microsoft.AspNetCore.Http.Validation.ValidateContext context, System.Threading.CancellationToken cancellationToken); - public virtual System.Threading.Tasks.Task ValidateAsync(object? value, Microsoft.AspNetCore.Http.Validation.ValidateContext context, System.Threading.CancellationToken cancellationToken);
- } - }
- [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")]
- public sealed class ValidateContext - public sealed class ValidateContext
- { - {
- public ValidateContext(); - public ValidateContext();
@@ -45,9 +52,12 @@
- public class ValidationOptions - public class ValidationOptions
- { - {
- public ValidationOptions(); - public ValidationOptions();
- [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")]
- public bool TryGetValidatableParameterInfo(System.Reflection.ParameterInfo parameterInfo, out Microsoft.AspNetCore.Http.Validation.IValidatableInfo? validatableInfo); - public bool TryGetValidatableParameterInfo(System.Reflection.ParameterInfo parameterInfo, out Microsoft.AspNetCore.Http.Validation.IValidatableInfo? validatableInfo);
- [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")]
- public bool TryGetValidatableTypeInfo(System.Type type, out Microsoft.AspNetCore.Http.Validation.IValidatableInfo? validatableTypeInfo); - public bool TryGetValidatableTypeInfo(System.Type type, out Microsoft.AspNetCore.Http.Validation.IValidatableInfo? validatableTypeInfo);
- public int MaxDepth { get; set; } - public int MaxDepth { get; set; }
- [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")]
- public System.Collections.Generic.IList<Microsoft.AspNetCore.Http.Validation.IValidatableInfoResolver> Resolvers { get; } - public System.Collections.Generic.IList<Microsoft.AspNetCore.Http.Validation.IValidatableInfoResolver> Resolvers { get; }
- } - }
- } - }

View File

@@ -3,8 +3,7 @@
```diff ```diff
namespace Microsoft.AspNetCore.Identity namespace Microsoft.AspNetCore.Identity
{ {
public class SignInManager<TUser> public class SignInManager<TUser> where TUser : class
where TUser : class
{ {
+ public SignInManager(Microsoft.AspNetCore.Identity.UserManager<TUser> userManager, Microsoft.AspNetCore.Http.IHttpContextAccessor contextAccessor, Microsoft.AspNetCore.Identity.IUserClaimsPrincipalFactory<TUser> claimsFactory, Microsoft.Extensions.Options.IOptions<Microsoft.AspNetCore.Identity.IdentityOptions> optionsAccessor, Microsoft.Extensions.Logging.ILogger<Microsoft.AspNetCore.Identity.SignInManager<TUser>> logger, Microsoft.AspNetCore.Authentication.IAuthenticationSchemeProvider schemes, Microsoft.AspNetCore.Identity.IUserConfirmation<TUser> confirmation, Microsoft.AspNetCore.Identity.IPasskeyHandler<TUser> passkeyHandler); + public SignInManager(Microsoft.AspNetCore.Identity.UserManager<TUser> userManager, Microsoft.AspNetCore.Http.IHttpContextAccessor contextAccessor, Microsoft.AspNetCore.Identity.IUserClaimsPrincipalFactory<TUser> claimsFactory, Microsoft.Extensions.Options.IOptions<Microsoft.AspNetCore.Identity.IdentityOptions> optionsAccessor, Microsoft.Extensions.Logging.ILogger<Microsoft.AspNetCore.Identity.SignInManager<TUser>> logger, Microsoft.AspNetCore.Authentication.IAuthenticationSchemeProvider schemes, Microsoft.AspNetCore.Identity.IUserConfirmation<TUser> confirmation, Microsoft.AspNetCore.Identity.IPasskeyHandler<TUser> passkeyHandler);
+ public virtual System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.PasskeyCreationOptions> ConfigurePasskeyCreationOptionsAsync(Microsoft.AspNetCore.Identity.PasskeyCreationArgs creationArgs); + public virtual System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.PasskeyCreationOptions> ConfigurePasskeyCreationOptionsAsync(Microsoft.AspNetCore.Identity.PasskeyCreationArgs creationArgs);
@@ -21,7 +20,7 @@
+ { + {
+ public AuthenticatorSelectionCriteria(); + public AuthenticatorSelectionCriteria();
+ public string? AuthenticatorAttachment { get; set; } + public string? AuthenticatorAttachment { get; set; }
+ public bool? RequireResidentKey { get; } + public bool RequireResidentKey { get; }
+ public string? ResidentKey { get; set; } + public string? ResidentKey { get; set; }
+ public string UserVerification { get; set; } + public string UserVerification { get; set; }
+ } + }
@@ -41,8 +40,7 @@
+ System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.PasskeyAssertionResult<TUser>> PerformAssertionAsync(Microsoft.AspNetCore.Identity.PasskeyAssertionContext<TUser> context); + System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.PasskeyAssertionResult<TUser>> PerformAssertionAsync(Microsoft.AspNetCore.Identity.PasskeyAssertionContext<TUser> context);
+ System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.PasskeyAttestationResult> PerformAttestationAsync(Microsoft.AspNetCore.Identity.PasskeyAttestationContext<TUser> context); + System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.PasskeyAttestationResult> PerformAttestationAsync(Microsoft.AspNetCore.Identity.PasskeyAttestationContext<TUser> context);
+ } + }
+ public sealed class PasskeyAssertionContext<TUser> + public sealed class PasskeyAssertionContext<TUser> where TUser : class
+ where TUser : class
+ { + {
+ public PasskeyAssertionContext(); + public PasskeyAssertionContext();
+ public required string CredentialJson { get; init; } + public required string CredentialJson { get; init; }
@@ -58,16 +56,17 @@
+ public static Microsoft.AspNetCore.Identity.PasskeyAssertionResult<TUser> Success<TUser>(Microsoft.AspNetCore.Identity.UserPasskeyInfo passkey, TUser user) + public static Microsoft.AspNetCore.Identity.PasskeyAssertionResult<TUser> Success<TUser>(Microsoft.AspNetCore.Identity.UserPasskeyInfo passkey, TUser user)
+ where TUser : class; + where TUser : class;
+ } + }
+ public sealed class PasskeyAssertionResult<TUser> + public sealed class PasskeyAssertionResult<TUser> where TUser : class
+ where TUser : class
+ { + {
+ public Microsoft.AspNetCore.Identity.PasskeyException? Failure { get; } + public Microsoft.AspNetCore.Identity.PasskeyException? Failure { get; }
+ public Microsoft.AspNetCore.Identity.UserPasskeyInfo? Passkey { get; } + public Microsoft.AspNetCore.Identity.UserPasskeyInfo? Passkey { get; }
+ public bool? Succeeded { get; } + [System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute(true, "Passkey")]
+ [System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute(true, "User")]
+ [System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute(false, "Failure")]
+ public bool Succeeded { get; }
+ public TUser? User { get; } + public TUser? User { get; }
+ } + }
+ public sealed class PasskeyAttestationContext<TUser> + public sealed class PasskeyAttestationContext<TUser> where TUser : class
+ where TUser : class
+ { + {
+ public PasskeyAttestationContext(); + public PasskeyAttestationContext();
+ public required string CredentialJson { get; init; } + public required string CredentialJson { get; init; }
@@ -81,14 +80,16 @@
+ public static Microsoft.AspNetCore.Identity.PasskeyAttestationResult Success(Microsoft.AspNetCore.Identity.UserPasskeyInfo passkey); + public static Microsoft.AspNetCore.Identity.PasskeyAttestationResult Success(Microsoft.AspNetCore.Identity.UserPasskeyInfo passkey);
+ public Microsoft.AspNetCore.Identity.PasskeyException? Failure { get; } + public Microsoft.AspNetCore.Identity.PasskeyException? Failure { get; }
+ public Microsoft.AspNetCore.Identity.UserPasskeyInfo? Passkey { get; } + public Microsoft.AspNetCore.Identity.UserPasskeyInfo? Passkey { get; }
+ public bool? Succeeded { get; } + [System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute(true, "Passkey")]
+ [System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute(false, "Failure")]
+ public bool Succeeded { get; }
+ } + }
+ public sealed class PasskeyCreationArgs + public sealed class PasskeyCreationArgs
+ { + {
+ public PasskeyCreationArgs(Microsoft.AspNetCore.Identity.PasskeyUserEntity userEntity); + public PasskeyCreationArgs(Microsoft.AspNetCore.Identity.PasskeyUserEntity userEntity);
+ public string Attestation { get; set; } + public string Attestation { get; set; }
+ public Microsoft.AspNetCore.Identity.AuthenticatorSelectionCriteria? AuthenticatorSelection { get; set; } + public Microsoft.AspNetCore.Identity.AuthenticatorSelectionCriteria? AuthenticatorSelection { get; set; }
+ public System.Nullable<System.Text.Json.JsonElement> Extensions { get; set; } + public System.Text.Json.JsonElement? Extensions { get; set; }
+ public Microsoft.AspNetCore.Identity.PasskeyUserEntity UserEntity { get; } + public Microsoft.AspNetCore.Identity.PasskeyUserEntity UserEntity { get; }
+ } + }
+ public sealed class PasskeyCreationOptions + public sealed class PasskeyCreationOptions
@@ -98,22 +99,21 @@
+ public override string ToString(); + public override string ToString();
+ public Microsoft.AspNetCore.Identity.PasskeyUserEntity UserEntity { get; } + public Microsoft.AspNetCore.Identity.PasskeyUserEntity UserEntity { get; }
+ } + }
+ public sealed class PasskeyException + public sealed class PasskeyException : System.Exception
+ { + {
+ public PasskeyException(string message, System.Exception? innerException); + public PasskeyException(string message, System.Exception? innerException);
+ public PasskeyException(string message); + public PasskeyException(string message);
+ } + }
+ public sealed class PasskeyOriginInfo + public readonly struct PasskeyOriginInfo
+ { + {
+ public PasskeyOriginInfo(string origin, bool crossOrigin); + public PasskeyOriginInfo(string origin, bool crossOrigin);
+ public bool CrossOrigin { get; } + public bool CrossOrigin { get; }
+ public string Origin { get; } + public string Origin { get; }
+ } + }
+ public sealed class PasskeyRequestArgs<TUser> + public sealed class PasskeyRequestArgs<TUser> where TUser : class
+ where TUser : class
+ { + {
+ public PasskeyRequestArgs(); + public PasskeyRequestArgs();
+ public System.Nullable<System.Text.Json.JsonElement> Extensions { get; set; } + public System.Text.Json.JsonElement? Extensions { get; set; }
+ public TUser? User { get; set; } + public TUser? User { get; set; }
+ public string UserVerification { get; set; } + public string UserVerification { get; set; }
+ } + }

View File

@@ -5,7 +5,7 @@
{ {
public class HttpSysOptions public class HttpSysOptions
{ {
- public System.Action<Microsoft.AspNetCore.Http.Features.IFeatureCollection, System.ReadOnlySpan<byte>> TlsClientHelloBytesCallback { get; set; } - public System.Action<Microsoft.AspNetCore.Http.Features.IFeatureCollection, System.ReadOnlySpan<byte>>? TlsClientHelloBytesCallback { get; set; }
} }
+ public interface IHttpSysRequestPropertyFeature + public interface IHttpSysRequestPropertyFeature
+ { + {

View File

@@ -5,7 +5,7 @@
{ {
public class Matcher public class Matcher
{ {
+ public Matcher(System.StringComparison comparisonType = 5, bool preserveFilterOrder = false); + public Matcher(System.StringComparison comparisonType = System.StringComparison.OrdinalIgnoreCase, bool preserveFilterOrder = false);
} }
} }
``` ```

View File

@@ -11,8 +11,7 @@
{ {
+ public static readonly System.Version Version3; + public static readonly System.Version Version3;
} }
public class UserManager<TUser> public class UserManager<TUser> : System.IDisposable where TUser : class
where TUser : class
{ {
+ public virtual System.Threading.Tasks.Task<TUser?> FindByPasskeyIdAsync(byte[] credentialId); + public virtual System.Threading.Tasks.Task<TUser?> FindByPasskeyIdAsync(byte[] credentialId);
+ public virtual System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.UserPasskeyInfo?> GetPasskeyAsync(TUser user, byte[] credentialId); + public virtual System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.UserPasskeyInfo?> GetPasskeyAsync(TUser user, byte[] credentialId);
@@ -21,7 +20,7 @@
+ public virtual System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult> SetPasskeyAsync(TUser user, Microsoft.AspNetCore.Identity.UserPasskeyInfo passkey); + public virtual System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.IdentityResult> SetPasskeyAsync(TUser user, Microsoft.AspNetCore.Identity.UserPasskeyInfo passkey);
+ public virtual bool SupportsUserPasskey { get; } + public virtual bool SupportsUserPasskey { get; }
} }
+ public interface IUserPasskeyStore<TUser> : Microsoft.AspNetCore.Identity.IUserStore<TUser> where TUser : class + public interface IUserPasskeyStore<TUser> : Microsoft.AspNetCore.Identity.IUserStore<TUser>, System.IDisposable where TUser : class
+ { + {
+ System.Threading.Tasks.Task<TUser?> FindByPasskeyIdAsync(byte[] credentialId, System.Threading.CancellationToken cancellationToken); + System.Threading.Tasks.Task<TUser?> FindByPasskeyIdAsync(byte[] credentialId, System.Threading.CancellationToken cancellationToken);
+ System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.UserPasskeyInfo?> FindPasskeyAsync(TUser user, byte[] credentialId, System.Threading.CancellationToken cancellationToken); + System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.UserPasskeyInfo?> FindPasskeyAsync(TUser user, byte[] credentialId, System.Threading.CancellationToken cancellationToken);
@@ -40,12 +39,11 @@
+ public int ChallengeSize { get; set; } + public int ChallengeSize { get; set; }
+ public string? ServerDomain { get; set; } + public string? ServerDomain { get; set; }
+ public System.TimeSpan Timeout { get; set; } + public System.TimeSpan Timeout { get; set; }
+ public sealed class CredentialBackupPolicy + public enum CredentialBackupPolicy
+ { + {
+ public const Microsoft.AspNetCore.Identity.PasskeyOptions.CredentialBackupPolicy Allowed = 1; + Required = 0,
+ public const Microsoft.AspNetCore.Identity.PasskeyOptions.CredentialBackupPolicy Disallowed = 2; + Allowed = 1,
+ public const Microsoft.AspNetCore.Identity.PasskeyOptions.CredentialBackupPolicy Required = 0; + Disallowed = 2,
+ public int value__;
+ } + }
+ } + }
+ public class UserPasskeyInfo + public class UserPasskeyInfo

View File

@@ -3,8 +3,7 @@
```diff ```diff
namespace Microsoft.AspNetCore.Identity namespace Microsoft.AspNetCore.Identity
{ {
+ public class IdentityUserPasskey<TKey> + public class IdentityUserPasskey<TKey> where TKey : System.IEquatable<TKey>
+ where TKey : System.IEquatable<TKey>
+ { + {
+ public IdentityUserPasskey(); + public IdentityUserPasskey();
+ public virtual byte[] AttestationObject { get; set; } + public virtual byte[] AttestationObject { get; set; }

View File

@@ -10,39 +10,46 @@
+ } + }
+ namespace Microsoft.Extensions.Validation + namespace Microsoft.Extensions.Validation
+ { + {
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")]
+ public interface IValidatableInfo + public interface IValidatableInfo
+ { + {
+ System.Threading.Tasks.Task ValidateAsync(object? value, Microsoft.Extensions.Validation.ValidateContext context, System.Threading.CancellationToken cancellationToken); + System.Threading.Tasks.Task ValidateAsync(object? value, Microsoft.Extensions.Validation.ValidateContext context, System.Threading.CancellationToken cancellationToken);
+ } + }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")]
+ public interface IValidatableInfoResolver + public interface IValidatableInfoResolver
+ { + {
+ bool TryGetValidatableParameterInfo(System.Reflection.ParameterInfo parameterInfo, out Microsoft.Extensions.Validation.IValidatableInfo? validatableInfo); + bool TryGetValidatableParameterInfo(System.Reflection.ParameterInfo parameterInfo, out Microsoft.Extensions.Validation.IValidatableInfo? validatableInfo);
+ bool TryGetValidatableTypeInfo(System.Type type, out Microsoft.Extensions.Validation.IValidatableInfo? validatableInfo); + bool TryGetValidatableTypeInfo(System.Type type, out Microsoft.Extensions.Validation.IValidatableInfo? validatableInfo);
+ } + }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")]
+ public abstract class ValidatableParameterInfo : Microsoft.Extensions.Validation.IValidatableInfo + public abstract class ValidatableParameterInfo : Microsoft.Extensions.Validation.IValidatableInfo
+ { + {
+ protected ValidatableParameterInfo(System.Type parameterType, string name, string displayName); + protected ValidatableParameterInfo(System.Type parameterType, string name, string displayName);
+ protected abstract System.ComponentModel.DataAnnotations.ValidationAttribute[] GetValidationAttributes(); + protected abstract System.ComponentModel.DataAnnotations.ValidationAttribute[] GetValidationAttributes();
+ public virtual System.Threading.Tasks.Task ValidateAsync(object? value, Microsoft.Extensions.Validation.ValidateContext context, System.Threading.CancellationToken cancellationToken); + public virtual System.Threading.Tasks.Task ValidateAsync(object? value, Microsoft.Extensions.Validation.ValidateContext context, System.Threading.CancellationToken cancellationToken);
+ } + }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")]
+ public abstract class ValidatablePropertyInfo : Microsoft.Extensions.Validation.IValidatableInfo + public abstract class ValidatablePropertyInfo : Microsoft.Extensions.Validation.IValidatableInfo
+ { + {
+ protected ValidatablePropertyInfo(System.Type declaringType, System.Type propertyType, string name, string displayName); + protected ValidatablePropertyInfo(System.Type declaringType, System.Type propertyType, string name, string displayName);
+ protected abstract System.ComponentModel.DataAnnotations.ValidationAttribute[] GetValidationAttributes(); + protected abstract System.ComponentModel.DataAnnotations.ValidationAttribute[] GetValidationAttributes();
+ public virtual System.Threading.Tasks.Task ValidateAsync(object? value, Microsoft.Extensions.Validation.ValidateContext context, System.Threading.CancellationToken cancellationToken); + public virtual System.Threading.Tasks.Task ValidateAsync(object? value, Microsoft.Extensions.Validation.ValidateContext context, System.Threading.CancellationToken cancellationToken);
+ } + }
+ public sealed class ValidatableTypeAttribute + [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")]
+ public sealed class ValidatableTypeAttribute : System.Attribute
+ { + {
+ public ValidatableTypeAttribute(); + public ValidatableTypeAttribute();
+ } + }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")]
+ public abstract class ValidatableTypeInfo : Microsoft.Extensions.Validation.IValidatableInfo + public abstract class ValidatableTypeInfo : Microsoft.Extensions.Validation.IValidatableInfo
+ { + {
+ protected ValidatableTypeInfo(System.Type type, System.Collections.Generic.IReadOnlyList<Microsoft.Extensions.Validation.ValidatablePropertyInfo> members); + protected ValidatableTypeInfo(System.Type type, System.Collections.Generic.IReadOnlyList<Microsoft.Extensions.Validation.ValidatablePropertyInfo> members);
+ public virtual System.Threading.Tasks.Task ValidateAsync(object? value, Microsoft.Extensions.Validation.ValidateContext context, System.Threading.CancellationToken cancellationToken); + public virtual System.Threading.Tasks.Task ValidateAsync(object? value, Microsoft.Extensions.Validation.ValidateContext context, System.Threading.CancellationToken cancellationToken);
+ } + }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")]
+ public sealed class ValidateContext + public sealed class ValidateContext
+ { + {
+ public event System.Action<Microsoft.Extensions.Validation.ValidationErrorContext?>? OnValidationError { add; remove; } + public event System.Action<Microsoft.Extensions.Validation.ValidationErrorContext>? OnValidationError { add; remove; }
+ public ValidateContext(); + public ValidateContext();
+ public int CurrentDepth { get; set; } + public int CurrentDepth { get; set; }
+ public string CurrentValidationPath { get; set; } + public string CurrentValidationPath { get; set; }
@@ -50,9 +57,11 @@
+ public System.Collections.Generic.Dictionary<string, string[]>? ValidationErrors { get; set; } + public System.Collections.Generic.Dictionary<string, string[]>? ValidationErrors { get; set; }
+ public required Microsoft.Extensions.Validation.ValidationOptions ValidationOptions { get; set; } + public required Microsoft.Extensions.Validation.ValidationOptions ValidationOptions { get; set; }
+ } + }
+ public sealed class ValidationErrorContext + [System.Diagnostics.DebuggerDisplayAttribute("{GetDebuggerDisplay(),nq}")]
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")]
+ public readonly struct ValidationErrorContext
+ { + {
+ public required object? Container { get; init; } + public required object? Container { get; init; }
+ public required System.Collections.Generic.IReadOnlyList<string> Errors { get; init; } + public required System.Collections.Generic.IReadOnlyList<string> Errors { get; init; }
+ public required string Name { get; init; } + public required string Name { get; init; }
+ public required string Path { get; init; } + public required string Path { get; init; }
@@ -60,9 +69,12 @@
+ public class ValidationOptions + public class ValidationOptions
+ { + {
+ public ValidationOptions(); + public ValidationOptions();
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")]
+ public bool TryGetValidatableParameterInfo(System.Reflection.ParameterInfo parameterInfo, out Microsoft.Extensions.Validation.IValidatableInfo? validatableInfo); + public bool TryGetValidatableParameterInfo(System.Reflection.ParameterInfo parameterInfo, out Microsoft.Extensions.Validation.IValidatableInfo? validatableInfo);
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")]
+ public bool TryGetValidatableTypeInfo(System.Type type, out Microsoft.Extensions.Validation.IValidatableInfo? validatableTypeInfo); + public bool TryGetValidatableTypeInfo(System.Type type, out Microsoft.Extensions.Validation.IValidatableInfo? validatableTypeInfo);
+ public int MaxDepth { get; set; } + public int MaxDepth { get; set; }
+ [System.Diagnostics.CodeAnalysis.ExperimentalAttribute("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")]
+ public System.Collections.Generic.IList<Microsoft.Extensions.Validation.IValidatableInfoResolver> Resolvers { get; } + public System.Collections.Generic.IList<Microsoft.Extensions.Validation.IValidatableInfoResolver> Resolvers { get; }
+ } + }
+ } + }

View File

@@ -3,28 +3,30 @@
```diff ```diff
+ namespace System.Formats.Cbor + namespace System.Formats.Cbor
+ { + {
+ public sealed class CborConformanceMode + public enum CborConformanceMode
+ { + {
+ public const System.Formats.Cbor.CborConformanceMode Canonical = 2; + Lax = 0,
+ public const System.Formats.Cbor.CborConformanceMode Ctap2Canonical = 3; + Strict = 1,
+ public const System.Formats.Cbor.CborConformanceMode Lax = 0; + Canonical = 2,
+ public const System.Formats.Cbor.CborConformanceMode Strict = 1; + Ctap2Canonical = 3,
+ public int value__;
+ } + }
+ public class CborContentException + public class CborContentException : System.Exception
+ { + {
+ [System.ObsoleteAttribute("This API supports obsolete formatter-based serialization. It should not be called or extended by application code.", DiagnosticId = "SYSLIB0051", UrlFormat = "https://aka.ms/dotnet-warnings/{0}")]
+ protected CborContentException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);
+ public CborContentException(string? message, System.Exception? inner); + public CborContentException(string? message, System.Exception? inner);
+ public CborContentException(string? message); + public CborContentException(string? message);
+ protected CborContentException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);
+ } + }
+ public class CborReader + public class CborReader
+ { + {
+ public CborReader(System.ReadOnlyMemory<byte> data, System.Formats.Cbor.CborConformanceMode conformanceMode = 1, bool allowMultipleRootLevelValues = false); + public CborReader(System.ReadOnlyMemory<byte> data, System.Formats.Cbor.CborConformanceMode conformanceMode = System.Formats.Cbor.CborConformanceMode.Strict, bool allowMultipleRootLevelValues = false);
+ public System.Formats.Cbor.CborReaderState PeekState(); + public System.Formats.Cbor.CborReaderState PeekState();
+ [System.CLSCompliantAttribute(false)]
+ public System.Formats.Cbor.CborTag PeekTag(); + public System.Formats.Cbor.CborTag PeekTag();
+ public System.Numerics.BigInteger ReadBigInteger(); + public System.Numerics.BigInteger ReadBigInteger();
+ public bool ReadBoolean(); + public bool ReadBoolean();
+ public byte[] ReadByteString(); + public byte[] ReadByteString();
+ [System.CLSCompliantAttribute(false)]
+ public ulong ReadCborNegativeIntegerRepresentation(); + public ulong ReadCborNegativeIntegerRepresentation();
+ public System.DateTimeOffset ReadDateTimeOffset(); + public System.DateTimeOffset ReadDateTimeOffset();
+ public decimal ReadDecimal(); + public decimal ReadDecimal();
@@ -42,13 +44,16 @@
+ public void ReadNull(); + public void ReadNull();
+ public System.Formats.Cbor.CborSimpleValue ReadSimpleValue(); + public System.Formats.Cbor.CborSimpleValue ReadSimpleValue();
+ public float ReadSingle(); + public float ReadSingle();
+ public System.Nullable<int> ReadStartArray(); + public int? ReadStartArray();
+ public void ReadStartIndefiniteLengthByteString(); + public void ReadStartIndefiniteLengthByteString();
+ public void ReadStartIndefiniteLengthTextString(); + public void ReadStartIndefiniteLengthTextString();
+ public System.Nullable<int> ReadStartMap(); + public int? ReadStartMap();
+ [System.CLSCompliantAttribute(false)]
+ public System.Formats.Cbor.CborTag ReadTag(); + public System.Formats.Cbor.CborTag ReadTag();
+ public string ReadTextString(); + public string ReadTextString();
+ [System.CLSCompliantAttribute(false)]
+ public uint ReadUInt32(); + public uint ReadUInt32();
+ [System.CLSCompliantAttribute(false)]
+ public ulong ReadUInt64(); + public ulong ReadUInt64();
+ public System.DateTimeOffset ReadUnixTimeSeconds(); + public System.DateTimeOffset ReadUnixTimeSeconds();
+ public void Reset(System.ReadOnlyMemory<byte> data); + public void Reset(System.ReadOnlyMemory<byte> data);
@@ -61,62 +66,60 @@
+ public System.Formats.Cbor.CborConformanceMode ConformanceMode { get; } + public System.Formats.Cbor.CborConformanceMode ConformanceMode { get; }
+ public int CurrentDepth { get; } + public int CurrentDepth { get; }
+ } + }
+ public sealed class CborReaderState + public enum CborReaderState
+ { + {
+ public const System.Formats.Cbor.CborReaderState Boolean = 19; + Undefined = 0,
+ public const System.Formats.Cbor.CborReaderState ByteString = 3; + UnsignedInteger = 1,
+ public const System.Formats.Cbor.CborReaderState DoublePrecisionFloat = 17; + EndArray = 10,
+ public const System.Formats.Cbor.CborReaderState EndArray = 10; + StartMap = 11,
+ public const System.Formats.Cbor.CborReaderState EndIndefiniteLengthByteString = 5; + EndMap = 12,
+ public const System.Formats.Cbor.CborReaderState EndIndefiniteLengthTextString = 8; + Tag = 13,
+ public const System.Formats.Cbor.CborReaderState EndMap = 12; + SimpleValue = 14,
+ public const System.Formats.Cbor.CborReaderState Finished = 20; + HalfPrecisionFloat = 15,
+ public const System.Formats.Cbor.CborReaderState HalfPrecisionFloat = 15; + SinglePrecisionFloat = 16,
+ public const System.Formats.Cbor.CborReaderState NegativeInteger = 2; + DoublePrecisionFloat = 17,
+ public const System.Formats.Cbor.CborReaderState Null = 18; + Null = 18,
+ public const System.Formats.Cbor.CborReaderState SimpleValue = 14; + Boolean = 19,
+ public const System.Formats.Cbor.CborReaderState SinglePrecisionFloat = 16; + NegativeInteger = 2,
+ public const System.Formats.Cbor.CborReaderState StartArray = 9; + Finished = 20,
+ public const System.Formats.Cbor.CborReaderState StartIndefiniteLengthByteString = 4; + ByteString = 3,
+ public const System.Formats.Cbor.CborReaderState StartIndefiniteLengthTextString = 7; + StartIndefiniteLengthByteString = 4,
+ public const System.Formats.Cbor.CborReaderState StartMap = 11; + EndIndefiniteLengthByteString = 5,
+ public const System.Formats.Cbor.CborReaderState Tag = 13; + TextString = 6,
+ public const System.Formats.Cbor.CborReaderState TextString = 6; + StartIndefiniteLengthTextString = 7,
+ public const System.Formats.Cbor.CborReaderState Undefined = 0; + EndIndefiniteLengthTextString = 8,
+ public const System.Formats.Cbor.CborReaderState UnsignedInteger = 1; + StartArray = 9,
+ public int value__;
+ } + }
+ public sealed class CborSimpleValue + public enum CborSimpleValue : byte
+ { + {
+ public const System.Formats.Cbor.CborSimpleValue False = 20; + False = 20,
+ public const System.Formats.Cbor.CborSimpleValue Null = 22; + True = 21,
+ public const System.Formats.Cbor.CborSimpleValue True = 21; + Null = 22,
+ public const System.Formats.Cbor.CborSimpleValue Undefined = 23; + Undefined = 23,
+ public byte value__;
+ } + }
+ public sealed class CborTag + [System.CLSCompliantAttribute(false)]
+ public enum CborTag : ulong
+ { + {
+ public const System.Formats.Cbor.CborTag Base16StringLaterEncoding = 23UL; + DateTimeString = 0UL,
+ public const System.Formats.Cbor.CborTag Base64 = 34UL; + UnixTimeSeconds = 1UL,
+ public const System.Formats.Cbor.CborTag Base64StringLaterEncoding = 22UL; + UnsignedBigNum = 2UL,
+ public const System.Formats.Cbor.CborTag Base64Url = 33UL; + Base64UrlLaterEncoding = 21UL,
+ public const System.Formats.Cbor.CborTag Base64UrlLaterEncoding = 21UL; + Base64StringLaterEncoding = 22UL,
+ public const System.Formats.Cbor.CborTag BigFloat = 5UL; + Base16StringLaterEncoding = 23UL,
+ public const System.Formats.Cbor.CborTag DateTimeString = 0UL; + EncodedCborDataItem = 24UL,
+ public const System.Formats.Cbor.CborTag DecimalFraction = 4UL; + NegativeBigNum = 3UL,
+ public const System.Formats.Cbor.CborTag EncodedCborDataItem = 24UL; + Uri = 32UL,
+ public const System.Formats.Cbor.CborTag MimeMessage = 36UL; + Base64Url = 33UL,
+ public const System.Formats.Cbor.CborTag NegativeBigNum = 3UL; + Base64 = 34UL,
+ public const System.Formats.Cbor.CborTag Regex = 35UL; + Regex = 35UL,
+ public const System.Formats.Cbor.CborTag SelfDescribeCbor = 55799UL; + MimeMessage = 36UL,
+ public const System.Formats.Cbor.CborTag UnixTimeSeconds = 1UL; + DecimalFraction = 4UL,
+ public const System.Formats.Cbor.CborTag UnsignedBigNum = 2UL; + BigFloat = 5UL,
+ public const System.Formats.Cbor.CborTag Uri = 32UL; + SelfDescribeCbor = 55799UL,
+ public ulong value__;
+ } + }
+ public class CborWriter + public class CborWriter
+ { + {
+ public CborWriter(System.Formats.Cbor.CborConformanceMode conformanceMode = 1, bool convertIndefiniteLengthEncodings = false, bool allowMultipleRootLevelValues = false, int initialCapacity = -1); + public CborWriter(System.Formats.Cbor.CborConformanceMode conformanceMode = System.Formats.Cbor.CborConformanceMode.Strict, bool convertIndefiniteLengthEncodings = false, bool allowMultipleRootLevelValues = false, int initialCapacity = -1);
+ public CborWriter(System.Formats.Cbor.CborConformanceMode conformanceMode, bool convertIndefiniteLengthEncodings, bool allowMultipleRootLevelValues); + public CborWriter(System.Formats.Cbor.CborConformanceMode conformanceMode, bool convertIndefiniteLengthEncodings, bool allowMultipleRootLevelValues);
+ public byte[] Encode(); + public byte[] Encode();
+ public int Encode(System.Span<byte> destination); + public int Encode(System.Span<byte> destination);
@@ -126,6 +129,7 @@
+ public void WriteBoolean(bool value); + public void WriteBoolean(bool value);
+ public void WriteByteString(byte[] value); + public void WriteByteString(byte[] value);
+ public void WriteByteString(System.ReadOnlySpan<byte> value); + public void WriteByteString(System.ReadOnlySpan<byte> value);
+ [System.CLSCompliantAttribute(false)]
+ public void WriteCborNegativeIntegerRepresentation(ulong value); + public void WriteCborNegativeIntegerRepresentation(ulong value);
+ public void WriteDateTimeOffset(System.DateTimeOffset value); + public void WriteDateTimeOffset(System.DateTimeOffset value);
+ public void WriteDecimal(decimal value); + public void WriteDecimal(decimal value);
@@ -141,14 +145,17 @@
+ public void WriteNull(); + public void WriteNull();
+ public void WriteSimpleValue(System.Formats.Cbor.CborSimpleValue value); + public void WriteSimpleValue(System.Formats.Cbor.CborSimpleValue value);
+ public void WriteSingle(float value); + public void WriteSingle(float value);
+ public void WriteStartArray(System.Nullable<int> definiteLength); + public void WriteStartArray(int? definiteLength);
+ public void WriteStartIndefiniteLengthByteString(); + public void WriteStartIndefiniteLengthByteString();
+ public void WriteStartIndefiniteLengthTextString(); + public void WriteStartIndefiniteLengthTextString();
+ public void WriteStartMap(System.Nullable<int> definiteLength); + public void WriteStartMap(int? definiteLength);
+ [System.CLSCompliantAttribute(false)]
+ public void WriteTag(System.Formats.Cbor.CborTag tag); + public void WriteTag(System.Formats.Cbor.CborTag tag);
+ public void WriteTextString(System.ReadOnlySpan<char> value); + public void WriteTextString(System.ReadOnlySpan<char> value);
+ public void WriteTextString(string value); + public void WriteTextString(string value);
+ [System.CLSCompliantAttribute(false)]
+ public void WriteUInt32(uint value); + public void WriteUInt32(uint value);
+ [System.CLSCompliantAttribute(false)]
+ public void WriteUInt64(ulong value); + public void WriteUInt64(ulong value);
+ public void WriteUnixTimeSeconds(double seconds); + public void WriteUnixTimeSeconds(double seconds);
+ public void WriteUnixTimeSeconds(long seconds); + public void WriteUnixTimeSeconds(long seconds);

View File

@@ -3,24 +3,23 @@
```diff ```diff
namespace System.Windows.Forms namespace System.Windows.Forms
{ {
public class DataGridView : System.Windows.Forms.Control public class DataGridView : System.Windows.Forms.Control, System.ComponentModel.ISupportInitialize
{ {
+ protected override System.Windows.Forms.CreateParams CreateParams { get; } + protected override System.Windows.Forms.CreateParams CreateParams { get; }
} }
public class Form : System.Windows.Forms.ContainerControl public class Form : System.Windows.Forms.ContainerControl
{ {
+ public System.Windows.Forms.ScreenCaptureMode? FormScreenCaptureMode { get; set; } + public System.Windows.Forms.ScreenCaptureMode FormScreenCaptureMode { get; set; }
} }
public class TabPage : System.Windows.Forms.Panel public class TabPage : System.Windows.Forms.Panel
{ {
+ protected override System.Windows.Forms.CreateParams CreateParams { get; } + protected override System.Windows.Forms.CreateParams CreateParams { get; }
} }
+ public sealed class ScreenCaptureMode + public enum ScreenCaptureMode
+ { + {
+ public const System.Windows.Forms.ScreenCaptureMode Allow = 0; + Allow = 0,
+ public const System.Windows.Forms.ScreenCaptureMode HideContent = 1; + HideContent = 1,
+ public const System.Windows.Forms.ScreenCaptureMode HideWindow = 2; + HideWindow = 2,
+ public int value__;
+ } + }
} }
``` ```

View File

@@ -381,13 +381,28 @@ Function RunApiDiff {
[ValidateNotNullOrEmpty()] [ValidateNotNullOrEmpty()]
[string] [string]
$afterFriendlyName $afterFriendlyName
,
[Parameter(Mandatory = $false)]
[string]
$beforeReferenceFolder = ""
,
[Parameter(Mandatory = $false)]
[string]
$afterReferenceFolder = ""
) )
VerifyPathOrExit $apiDiffExe VerifyPathOrExit $apiDiffExe
VerifyPathOrExit $beforeFolder VerifyPathOrExit $beforeFolder
VerifyPathOrExit $afterFolder VerifyPathOrExit $afterFolder
RunCommand "$apiDiffExe -b '$beforeFolder' -a '$afterFolder' -o '$outputFolder' -tc '$tableOfContentsFileNamePrefix' -eas '$assembliesToExclude' -eattrs '$attributesToExclude' -bfn '$beforeFriendlyName' -afn '$afterFriendlyName'" $referenceParams = ""
if (-not [string]::IsNullOrEmpty($beforeReferenceFolder) -and -not [string]::IsNullOrEmpty($afterReferenceFolder)) {
VerifyPathOrExit $beforeReferenceFolder
VerifyPathOrExit $afterReferenceFolder
$referenceParams = " -rb '$beforeReferenceFolder' -ra '$afterReferenceFolder'"
}
RunCommand "$apiDiffExe -b '$beforeFolder' -a '$afterFolder' -o '$outputFolder' -tc '$tableOfContentsFileNamePrefix' -eas '$assembliesToExclude' -eattrs '$attributesToExclude' -bfn '$beforeFriendlyName' -afn '$afterFriendlyName'$referenceParams"
} }
Function CreateReadme { Function CreateReadme {
@@ -599,10 +614,21 @@ Function ProcessSdk
DownloadPackage $UseDefaultNuGetFeed $sdkName "After" $CurrentDotNetVersion $CurrentPreviewOrRC $CurrentPreviewNumberVersion ([ref]$afterDllFolder) DownloadPackage $UseDefaultNuGetFeed $sdkName "After" $CurrentDotNetVersion $CurrentPreviewOrRC $CurrentPreviewNumberVersion ([ref]$afterDllFolder)
VerifyPathOrExit $afterDllFolder VerifyPathOrExit $afterDllFolder
# For AspNetCore and WindowsDesktop, also download NETCore references to provide core assemblies
$beforeReferenceFolder = ""
$afterReferenceFolder = ""
if ($sdkName -eq "AspNetCore" -or $sdkName -eq "WindowsDesktop") {
DownloadPackage $UseDefaultNuGetFeed "NETCore" "Before" $PreviousDotNetVersion $PreviousPreviewOrRC $PreviousPreviewNumberVersion ([ref]$beforeReferenceFolder)
VerifyPathOrExit $beforeReferenceFolder
DownloadPackage $UseDefaultNuGetFeed "NETCore" "After" $CurrentDotNetVersion $CurrentPreviewOrRC $CurrentPreviewNumberVersion ([ref]$afterReferenceFolder)
VerifyPathOrExit $afterReferenceFolder
}
$targetFolder = [IO.Path]::Combine($previewFolderPath, "Microsoft.$sdkName.App") $targetFolder = [IO.Path]::Combine($previewFolderPath, "Microsoft.$sdkName.App")
RecreateFolder $targetFolder RecreateFolder $targetFolder
RunApiDiff $apiDiffExe $targetFolder $beforeDllFolder $afterDllFolder $currentDotNetFullName $assembliesToExclude $attributesToExclude $previousDotNetFriendlyName $currentDotNetFriendlyName RunApiDiff $apiDiffExe $targetFolder $beforeDllFolder $afterDllFolder $currentDotNetFullName $assembliesToExclude $attributesToExclude $previousDotNetFriendlyName $currentDotNetFriendlyName $beforeReferenceFolder $afterReferenceFolder
} }
##################### #####################