Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/core.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Sanchez <1175054+carlossanlop@users.noreply.github.com>2022-10-25 23:26:49 +0300
committerGitHub <noreply@github.com>2022-10-25 23:26:49 +0300
commit2660e49f085134d121419f4adf0a8b2e9bc1795e (patch)
tree6d897635a40855178f9f2dcf68ef5a422b807760
parentfc21f5f1e63236cfc830f80086f2ee030b384f33 (diff)
Api-diff between 7.0-rc1 and 7.0-rc2 (#7889)
Co-authored-by: carlossanlop <carlossanlop@users.noreply.github.com>
-rw-r--r--release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2.md14
-rw-r--r--release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.Components.Routing.md11
-rw-r--r--release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.Http.HttpResults.md107
-rw-r--r--release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.Http.Metadata.md27
-rw-r--r--release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.Http.md46
-rw-r--r--release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.OutputCaching.md40
-rw-r--r--release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.Routing.md11
-rw-r--r--release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.Server.Kestrel.Transport.Quic.md21
-rw-r--r--release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.Extensions.DependencyInjection.md10
-rw-r--r--release-notes/7.0/preview/api-diff/rc2/Microsoft.NETCore.App/7.0-rc2.md7
-rw-r--r--release-notes/7.0/preview/api-diff/rc2/Microsoft.NETCore.App/7.0-rc2_System.Runtime.InteropServices.JavaScript.md18
-rw-r--r--release-notes/7.0/preview/api-diff/rc2/Microsoft.WindowsDesktop.App/7.0-rc2.md6
-rw-r--r--release-notes/7.0/preview/api-diff/rc2/README.md7
13 files changed, 325 insertions, 0 deletions
diff --git a/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2.md b/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2.md
new file mode 100644
index 00000000..a34c8b8a
--- /dev/null
+++ b/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2.md
@@ -0,0 +1,14 @@
+# API Difference 7.0-rc1 vs 7.0-rc2
+
+API listing follows standard diff formatting.
+Lines preceded by a '+' are additions and a '-' indicates removal.
+
+* [Microsoft.AspNetCore.Components.Routing](7.0-rc2_Microsoft.AspNetCore.Components.Routing.md)
+* [Microsoft.AspNetCore.Http](7.0-rc2_Microsoft.AspNetCore.Http.md)
+* [Microsoft.AspNetCore.Http.HttpResults](7.0-rc2_Microsoft.AspNetCore.Http.HttpResults.md)
+* [Microsoft.AspNetCore.Http.Metadata](7.0-rc2_Microsoft.AspNetCore.Http.Metadata.md)
+* [Microsoft.AspNetCore.OutputCaching](7.0-rc2_Microsoft.AspNetCore.OutputCaching.md)
+* [Microsoft.AspNetCore.Routing](7.0-rc2_Microsoft.AspNetCore.Routing.md)
+* [Microsoft.AspNetCore.Server.Kestrel.Transport.Quic](7.0-rc2_Microsoft.AspNetCore.Server.Kestrel.Transport.Quic.md)
+* [Microsoft.Extensions.DependencyInjection](7.0-rc2_Microsoft.Extensions.DependencyInjection.md)
+
diff --git a/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.Components.Routing.md b/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.Components.Routing.md
new file mode 100644
index 00000000..db194b76
--- /dev/null
+++ b/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.Components.Routing.md
@@ -0,0 +1,11 @@
+# Microsoft.AspNetCore.Components.Routing
+
+``` diff
+ namespace Microsoft.AspNetCore.Components.Routing {
+- public sealed class NavigationLock : IAsyncDisposable, IComponent {
++ public sealed class NavigationLock : IAsyncDisposable, IComponent, IHandleAfterRender {
++ Task IHandleAfterRender.OnAfterRenderAsync();
+ }
+ }
+```
+
diff --git a/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.Http.HttpResults.md b/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.Http.HttpResults.md
new file mode 100644
index 00000000..d027e587
--- /dev/null
+++ b/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.Http.HttpResults.md
@@ -0,0 +1,107 @@
+# Microsoft.AspNetCore.Http.HttpResults
+
+``` diff
+ namespace Microsoft.AspNetCore.Http.HttpResults {
+ public sealed class Accepted : IEndpointMetadataProvider, IResult, IStatusCodeHttpResult {
+- static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context);
++ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, EndpointBuilder builder);
+ }
+ public sealed class Accepted<TValue> : IEndpointMetadataProvider, IResult, IStatusCodeHttpResult, IValueHttpResult, IValueHttpResult<TValue> {
+- static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context);
++ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, EndpointBuilder builder);
+ }
+ public sealed class AcceptedAtRoute : IEndpointMetadataProvider, IResult, IStatusCodeHttpResult {
+- static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context);
++ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, EndpointBuilder builder);
+ }
+ public sealed class AcceptedAtRoute<TValue> : IEndpointMetadataProvider, IResult, IStatusCodeHttpResult, IValueHttpResult, IValueHttpResult<TValue> {
+- static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context);
++ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, EndpointBuilder builder);
+ }
+ public sealed class BadRequest : IEndpointMetadataProvider, IResult, IStatusCodeHttpResult {
+- static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context);
++ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, EndpointBuilder builder);
+ }
+ public sealed class BadRequest<TValue> : IEndpointMetadataProvider, IResult, IStatusCodeHttpResult, IValueHttpResult, IValueHttpResult<TValue> {
+- static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context);
++ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, EndpointBuilder builder);
+ }
+ public sealed class Conflict : IEndpointMetadataProvider, IResult, IStatusCodeHttpResult {
+- static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context);
++ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, EndpointBuilder builder);
+ }
+ public sealed class Conflict<TValue> : IEndpointMetadataProvider, IResult, IStatusCodeHttpResult, IValueHttpResult, IValueHttpResult<TValue> {
+- static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context);
++ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, EndpointBuilder builder);
+ }
+ public sealed class Created : IEndpointMetadataProvider, IResult, IStatusCodeHttpResult {
+- static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context);
++ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, EndpointBuilder builder);
+ }
+ public sealed class Created<TValue> : IEndpointMetadataProvider, IResult, IStatusCodeHttpResult, IValueHttpResult, IValueHttpResult<TValue> {
+- static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context);
++ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, EndpointBuilder builder);
+ }
+ public sealed class CreatedAtRoute : IEndpointMetadataProvider, IResult, IStatusCodeHttpResult {
+- static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context);
++ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, EndpointBuilder builder);
+ }
+ public sealed class CreatedAtRoute<TValue> : IEndpointMetadataProvider, IResult, IStatusCodeHttpResult, IValueHttpResult, IValueHttpResult<TValue> {
+- static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context);
++ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, EndpointBuilder builder);
+ }
+ public class NoContent : IEndpointMetadataProvider, IResult, IStatusCodeHttpResult {
+- static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context);
++ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, EndpointBuilder builder);
+ }
+ public sealed class NotFound : IEndpointMetadataProvider, IResult, IStatusCodeHttpResult {
+- static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context);
++ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, EndpointBuilder builder);
+ }
+ public sealed class NotFound<TValue> : IEndpointMetadataProvider, IResult, IStatusCodeHttpResult, IValueHttpResult, IValueHttpResult<TValue> {
+- static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context);
++ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, EndpointBuilder builder);
+ }
+ public sealed class Ok : IEndpointMetadataProvider, IResult, IStatusCodeHttpResult {
+- static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context);
++ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, EndpointBuilder builder);
+ }
+ public sealed class Ok<TValue> : IEndpointMetadataProvider, IResult, IStatusCodeHttpResult, IValueHttpResult, IValueHttpResult<TValue> {
+- static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context);
++ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, EndpointBuilder builder);
+ }
+ public sealed class Results<TResult1, TResult2> : IEndpointMetadataProvider, INestedHttpResult, IResult where TResult1 : IResult where TResult2 : IResult {
+- static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context);
++ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, EndpointBuilder builder);
+ }
+ public sealed class Results<TResult1, TResult2, TResult3> : IEndpointMetadataProvider, INestedHttpResult, IResult where TResult1 : IResult where TResult2 : IResult where TResult3 : IResult {
+- static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context);
++ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, EndpointBuilder builder);
+ }
+ public sealed class Results<TResult1, TResult2, TResult3, TResult4> : IEndpointMetadataProvider, INestedHttpResult, IResult where TResult1 : IResult where TResult2 : IResult where TResult3 : IResult where TResult4 : IResult {
+- static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context);
++ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, EndpointBuilder builder);
+ }
+ public sealed class Results<TResult1, TResult2, TResult3, TResult4, TResult5> : IEndpointMetadataProvider, INestedHttpResult, IResult where TResult1 : IResult where TResult2 : IResult where TResult3 : IResult where TResult4 : IResult where TResult5 : IResult {
+- static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context);
++ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, EndpointBuilder builder);
+ }
+ public sealed class Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6> : IEndpointMetadataProvider, INestedHttpResult, IResult where TResult1 : IResult where TResult2 : IResult where TResult3 : IResult where TResult4 : IResult where TResult5 : IResult where TResult6 : IResult {
+- static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context);
++ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, EndpointBuilder builder);
+ }
+ public sealed class UnprocessableEntity : IEndpointMetadataProvider, IResult, IStatusCodeHttpResult {
+- static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context);
++ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, EndpointBuilder builder);
+ }
+ public sealed class UnprocessableEntity<TValue> : IEndpointMetadataProvider, IResult, IStatusCodeHttpResult, IValueHttpResult, IValueHttpResult<TValue> {
+- static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context);
++ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, EndpointBuilder builder);
+ }
+ public sealed class ValidationProblem : IContentTypeHttpResult, IEndpointMetadataProvider, IResult, IStatusCodeHttpResult, IValueHttpResult, IValueHttpResult<HttpValidationProblemDetails> {
+- static void IEndpointMetadataProvider.PopulateMetadata(EndpointMetadataContext context);
++ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, EndpointBuilder builder);
+ }
+ }
+```
+
diff --git a/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.Http.Metadata.md b/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.Http.Metadata.md
new file mode 100644
index 00000000..9f2e038a
--- /dev/null
+++ b/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.Http.Metadata.md
@@ -0,0 +1,27 @@
+# Microsoft.AspNetCore.Http.Metadata
+
+``` diff
+ namespace Microsoft.AspNetCore.Http.Metadata {
+- public sealed class EndpointMetadataContext {
+- public EndpointMetadataContext(MethodInfo method, IList<object> endpointMetadata, IServiceProvider applicationServices);
+- public IServiceProvider ApplicationServices { get; }
+- public IList<object> EndpointMetadata { get; }
+- public MethodInfo Method { get; }
+- }
+- public sealed class EndpointParameterMetadataContext {
+- public EndpointParameterMetadataContext(ParameterInfo parameter, IList<object> endpointMetadata, IServiceProvider applicationServices);
+- public IServiceProvider ApplicationServices { get; }
+- public IList<object> EndpointMetadata { get; }
+- public ParameterInfo Parameter { get; }
+- }
+ public interface IEndpointMetadataProvider {
+- static abstract void PopulateMetadata(EndpointMetadataContext context);
++ static abstract void PopulateMetadata(MethodInfo method, EndpointBuilder builder);
+ }
+ public interface IEndpointParameterMetadataProvider {
+- static abstract void PopulateMetadata(EndpointParameterMetadataContext parameterContext);
++ static abstract void PopulateMetadata(ParameterInfo parameter, EndpointBuilder builder);
+ }
+ }
+```
+
diff --git a/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.Http.md b/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.Http.md
new file mode 100644
index 00000000..42b1021c
--- /dev/null
+++ b/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.Http.md
@@ -0,0 +1,46 @@
+# Microsoft.AspNetCore.Http
+
+``` diff
+ namespace Microsoft.AspNetCore.Http {
+ public sealed class EndpointFilterFactoryContext {
++ public EndpointFilterFactoryContext();
+- public EndpointFilterFactoryContext(MethodInfo methodInfo, IList<object> endpointMetadata, IServiceProvider applicationServices);
+- public IServiceProvider ApplicationServices { get; }
++ public IServiceProvider ApplicationServices { get; set; }
+- public IList<object> EndpointMetadata { get; }
+- public MethodInfo MethodInfo { get; }
++ public required MethodInfo MethodInfo { get; set; }
+ }
+ [UnconditionalSuppressMessageAttribute("Trimmer", "IL2026", Justification="RequestDelegateFactory.Create requires unreferenced code.")]
+ [UnconditionalSuppressMessageAttribute("Trimmer", "IL2060", Justification="RequestDelegateFactory.Create requires unreferenced code.")]
+ [UnconditionalSuppressMessageAttribute("Trimmer", "IL2072", Justification="RequestDelegateFactory.Create requires unreferenced code.")]
+ [UnconditionalSuppressMessageAttribute("Trimmer", "IL2075", Justification="RequestDelegateFactory.Create requires unreferenced code.")]
+ [UnconditionalSuppressMessageAttribute("Trimmer", "IL2077", Justification="RequestDelegateFactory.Create requires unreferenced code.")]
+ public static class RequestDelegateFactory {
+- [RequiresUnreferencedCodeAttribute("RequestDelegateFactory performs object creation, serialization and deserialization on the delegates and its parameters. This cannot be statically analyzed.")]
+- public static RequestDelegateResult Create(Delegate handler, RequestDelegateFactoryOptions? options = null);
++ [RequiresUnreferencedCodeAttribute("RequestDelegateFactory performs object creation, serialization and deserialization on the delegates and its parameters. This cannot be statically analyzed.")]
++ public static RequestDelegateResult Create(Delegate handler, RequestDelegateFactoryOptions? options);
++ [RequiresUnreferencedCodeAttribute("RequestDelegateFactory performs object creation, serialization and deserialization on the delegates and its parameters. This cannot be statically analyzed.")]
++ public static RequestDelegateResult Create(Delegate handler, RequestDelegateFactoryOptions? options = null, RequestDelegateMetadataResult? metadataResult = null);
+- [RequiresUnreferencedCodeAttribute("RequestDelegateFactory performs object creation, serialization and deserialization on the delegates and its parameters. This cannot be statically analyzed.")]
+- public static RequestDelegateResult Create(MethodInfo methodInfo, Func<HttpContext, object>? targetFactory = null, RequestDelegateFactoryOptions? options = null);
++ [RequiresUnreferencedCodeAttribute("RequestDelegateFactory performs object creation, serialization and deserialization on the delegates and its parameters. This cannot be statically analyzed.")]
++ public static RequestDelegateResult Create(MethodInfo methodInfo, Func<HttpContext, object>? targetFactory, RequestDelegateFactoryOptions? options);
++ [RequiresUnreferencedCodeAttribute("RequestDelegateFactory performs object creation, serialization and deserialization on the delegates and its parameters. This cannot be statically analyzed.")]
++ public static RequestDelegateResult Create(MethodInfo methodInfo, Func<HttpContext, object>? targetFactory = null, RequestDelegateFactoryOptions? options = null, RequestDelegateMetadataResult? metadataResult = null);
++ [RequiresUnreferencedCodeAttribute("RequestDelegateFactory performs object creation, serialization and deserialization on the delegates and its parameters. This cannot be statically analyzed.")]
++ public static RequestDelegateMetadataResult InferMetadata(MethodInfo methodInfo, RequestDelegateFactoryOptions? options = null);
+ }
+ public sealed class RequestDelegateFactoryOptions {
++ public EndpointBuilder EndpointBuilder { get; set; }
+- public IReadOnlyList<Func<EndpointFilterFactoryContext, EndpointFilterDelegate, EndpointFilterDelegate>>? EndpointFilterFactories { get; set; }
+- public IList<object>? EndpointMetadata { get; set; }
+ }
++ public sealed class RequestDelegateMetadataResult {
++ public RequestDelegateMetadataResult();
++ public required IReadOnlyList<object> EndpointMetadata { get; set; }
++ }
+ }
+```
+
diff --git a/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.OutputCaching.md b/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.OutputCaching.md
new file mode 100644
index 00000000..8ffd6dff
--- /dev/null
+++ b/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.OutputCaching.md
@@ -0,0 +1,40 @@
+# Microsoft.AspNetCore.OutputCaching
+
+``` diff
+ namespace Microsoft.AspNetCore.OutputCaching {
+ public sealed class CacheVaryByRules {
++ public string CacheKeyPrefix { get; set; }
+- public IDictionary<string, string> VaryByCustom { get; }
++ public bool VaryByHost { get; set; }
+- public StringValues VaryByPrefix { get; set; }
++ public IDictionary<string, string> VaryByValues { get; }
+ }
+ public class OutputCacheOptions {
++ public void AddBasePolicy(Action<OutputCachePolicyBuilder> build, bool excludeDefaultPolicy);
++ public void AddPolicy(string name, Action<OutputCachePolicyBuilder> build, bool excludeDefaultPolicy);
+ }
+ public sealed class OutputCachePolicyBuilder {
+- public OutputCachePolicyBuilder();
+- public OutputCachePolicyBuilder AllowLocking(bool lockResponse = true);
+- public OutputCachePolicyBuilder Clear();
++ public OutputCachePolicyBuilder SetCacheKeyPrefix(Func<HttpContext, string> keyPrefix);
++ public OutputCachePolicyBuilder SetCacheKeyPrefix(Func<HttpContext, CancellationToken, ValueTask<string>> keyPrefix);
++ public OutputCachePolicyBuilder SetCacheKeyPrefix(string keyPrefix);
++ public OutputCachePolicyBuilder SetLocking(bool enabled);
++ public OutputCachePolicyBuilder SetVaryByHeader(string headerName, params string[] headerNames);
++ public OutputCachePolicyBuilder SetVaryByHeader(string[] headerNames);
++ public OutputCachePolicyBuilder SetVaryByHost(bool enabled);
++ public OutputCachePolicyBuilder SetVaryByQuery(string queryKey, params string[] queryKeys);
++ public OutputCachePolicyBuilder SetVaryByQuery(string[] queryKeys);
++ public OutputCachePolicyBuilder SetVaryByRouteValue(string routeValueName, params string[] routeValueNames);
++ public OutputCachePolicyBuilder SetVaryByRouteValue(string[] routeValueNames);
+- public OutputCachePolicyBuilder VaryByHeader(params string[] headerNames);
+- public OutputCachePolicyBuilder VaryByQuery(params string[] queryKeys);
+- public OutputCachePolicyBuilder VaryByRouteValue(params string[] routeValueNames);
+- public OutputCachePolicyBuilder VaryByValue(Func<HttpContext, string> varyBy);
+- public OutputCachePolicyBuilder VaryByValue(Func<HttpContext, CancellationToken, ValueTask<string>> varyBy);
++ public OutputCachePolicyBuilder VaryByValue(string key, string value);
+ }
+ }
+```
+
diff --git a/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.Routing.md b/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.Routing.md
new file mode 100644
index 00000000..625401b3
--- /dev/null
+++ b/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.Routing.md
@@ -0,0 +1,11 @@
+# Microsoft.AspNetCore.Routing
+
+``` diff
+ namespace Microsoft.AspNetCore.Routing {
+ public sealed class RouteEndpointBuilder : EndpointBuilder {
+- public RouteEndpointBuilder(RequestDelegate requestDelegate, RoutePattern routePattern, int order);
++ public RouteEndpointBuilder(RequestDelegate? requestDelegate, RoutePattern routePattern, int order);
+ }
+ }
+```
+
diff --git a/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.Server.Kestrel.Transport.Quic.md b/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.Server.Kestrel.Transport.Quic.md
new file mode 100644
index 00000000..5e76fb62
--- /dev/null
+++ b/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.AspNetCore.Server.Kestrel.Transport.Quic.md
@@ -0,0 +1,21 @@
+# Microsoft.AspNetCore.Server.Kestrel.Transport.Quic
+
+``` diff
+ namespace Microsoft.AspNetCore.Server.Kestrel.Transport.Quic {
+ public sealed class QuicTransportOptions {
+- public int MaxBidirectionalStreamCount { get; set; }
++ [RequiresPreviewFeaturesAttribute]
++ public int MaxBidirectionalStreamCount { get; set; }
+- public long? MaxReadBufferSize { get; set; }
++ [RequiresPreviewFeaturesAttribute]
++ public long? MaxReadBufferSize { get; set; }
+- public int MaxUnidirectionalStreamCount { get; set; }
++ [RequiresPreviewFeaturesAttribute]
++ public int MaxUnidirectionalStreamCount { get; set; }
+- public long? MaxWriteBufferSize { get; set; }
++ [RequiresPreviewFeaturesAttribute]
++ public long? MaxWriteBufferSize { get; set; }
+ }
+ }
+```
+
diff --git a/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.Extensions.DependencyInjection.md b/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.Extensions.DependencyInjection.md
new file mode 100644
index 00000000..ae72f496
--- /dev/null
+++ b/release-notes/7.0/preview/api-diff/rc2/Microsoft.AspNetCore.App/7.0-rc2_Microsoft.Extensions.DependencyInjection.md
@@ -0,0 +1,10 @@
+# Microsoft.Extensions.DependencyInjection
+
+``` diff
+ namespace Microsoft.Extensions.DependencyInjection {
+ public static class OutputCacheConventionBuilderExtensions {
++ public static TBuilder CacheOutput<TBuilder>(this TBuilder builder, Action<OutputCachePolicyBuilder> policy, bool excludeDefaultPolicy) where TBuilder : IEndpointConventionBuilder;
+ }
+ }
+```
+
diff --git a/release-notes/7.0/preview/api-diff/rc2/Microsoft.NETCore.App/7.0-rc2.md b/release-notes/7.0/preview/api-diff/rc2/Microsoft.NETCore.App/7.0-rc2.md
new file mode 100644
index 00000000..5937d718
--- /dev/null
+++ b/release-notes/7.0/preview/api-diff/rc2/Microsoft.NETCore.App/7.0-rc2.md
@@ -0,0 +1,7 @@
+# API Difference 7.0-rc1 vs 7.0-rc2
+
+API listing follows standard diff formatting.
+Lines preceded by a '+' are additions and a '-' indicates removal.
+
+* [System.Runtime.InteropServices.JavaScript](7.0-rc2_System.Runtime.InteropServices.JavaScript.md)
+
diff --git a/release-notes/7.0/preview/api-diff/rc2/Microsoft.NETCore.App/7.0-rc2_System.Runtime.InteropServices.JavaScript.md b/release-notes/7.0/preview/api-diff/rc2/Microsoft.NETCore.App/7.0-rc2_System.Runtime.InteropServices.JavaScript.md
new file mode 100644
index 00000000..2aaba97d
--- /dev/null
+++ b/release-notes/7.0/preview/api-diff/rc2/Microsoft.NETCore.App/7.0-rc2_System.Runtime.InteropServices.JavaScript.md
@@ -0,0 +1,18 @@
+# System.Runtime.InteropServices.JavaScript
+
+``` diff
+ namespace System.Runtime.InteropServices.JavaScript {
+ [CLSCompliantAttribute(false)]
+ [EditorBrowsableAttribute(EditorBrowsableState.Never)]
+ [SupportedOSPlatformAttribute("browser")]
+ public struct JSMarshalerArgument {
+- public delegate void ArgumentToJSCallback<T>(ref JSMarshalerArgument arg, T value);
++ [EditorBrowsableAttribute(EditorBrowsableState.Never)]
++ public delegate void ArgumentToJSCallback<T>(ref JSMarshalerArgument arg, T value);
+- public delegate void ArgumentToManagedCallback<T>(ref JSMarshalerArgument arg, out T value);
++ [EditorBrowsableAttribute(EditorBrowsableState.Never)]
++ public delegate void ArgumentToManagedCallback<T>(ref JSMarshalerArgument arg, out T value);
+ }
+ }
+```
+
diff --git a/release-notes/7.0/preview/api-diff/rc2/Microsoft.WindowsDesktop.App/7.0-rc2.md b/release-notes/7.0/preview/api-diff/rc2/Microsoft.WindowsDesktop.App/7.0-rc2.md
new file mode 100644
index 00000000..331bd8ed
--- /dev/null
+++ b/release-notes/7.0/preview/api-diff/rc2/Microsoft.WindowsDesktop.App/7.0-rc2.md
@@ -0,0 +1,6 @@
+# API Difference 7.0-rc1 vs 7.0-rc2
+
+API listing follows standard diff formatting.
+Lines preceded by a '+' are additions and a '-' indicates removal.
+
+
diff --git a/release-notes/7.0/preview/api-diff/rc2/README.md b/release-notes/7.0/preview/api-diff/rc2/README.md
new file mode 100644
index 00000000..b3a3ed22
--- /dev/null
+++ b/release-notes/7.0/preview/api-diff/rc2/README.md
@@ -0,0 +1,7 @@
+# .NET 7.0 RC 2 API Changes
+
+The following API changes were made in .NET 7.0 RC 2:
+
+- [Microsoft.NETCore.App](./Microsoft.NETCore.App/7.0-rc2.md)
+- [Microsoft.AspNetCore.App](./Microsoft.AspNetCore.App/7.0-rc2.md)
+- [Microsoft.WindowsDesktop.App](./Microsoft.WindowsDesktop.App/7.0-rc2.md)