Skip to content

Commit 7eec26e

Browse files
authored
Merge pull request #50386 from dotnet-maestro-bot/merge/release/8.0-to-main
[automated] Merge branch 'release/8.0' => 'main'
2 parents af88c03 + ef45f22 commit 7eec26e

File tree

133 files changed

+2485
-1327
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

133 files changed

+2485
-1327
lines changed

Directory.Build.targets

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
<Project>
22
<PropertyGroup>
3+
<!-- Disable IsTrimmable on non-DefaultNetCoreTargetFrameworks even if explicitly enabled or else we'll get NETSDK1195 and NETSDK1210 errors -->
4+
<IsTrimmable Condition="'$(TargetFramework)' != '$(DefaultNetCoreTargetFramework)'"></IsTrimmable>
35
<EnableAOTAnalyzer Condition=" '$(EnableAOTAnalyzer)' == '' ">$([MSBuild]::ValueOrDefault($(IsTrimmable),'false'))</EnableAOTAnalyzer>
46
<!-- TODO: Remove when analyzer is enabled by default with AOT in SDK. See https://github.com/dotnet/sdk/issues/31284 -->
57
<EnableSingleFileAnalyzer Condition=" '$(EnableSingleFileAnalyzer)' == '' ">$(EnableAOTAnalyzer)</EnableSingleFileAnalyzer>

eng/CodeGen.proj

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,12 @@
2424
<_RequiresDelayedBuild Include="@(_ProvidesReferenceOrRequiresDelay->WithMetadataValue('RequiresDelayedBuild','true')->Distinct())" />
2525
<_SharedFrameworkAndPackageRef Include="@(_ProjectReferenceProvider->WithMetadataValue('IsAspNetCoreApp','true')->WithMetadataValue('IsPackable', 'true'))" />
2626
<_SharedFrameworkRef Include="@(_ProjectReferenceProvider->WithMetadataValue('IsAspNetCoreApp','true')->WithMetadataValue('IsPackable', 'false'))" />
27-
<_TrimmableProject Include="@(_ProjectReferenceProvider->WithMetadataValue('IsTrimmable', 'true'))" />
2827
<_ShippingAssemblyWithDupes Include="@(_ProjectReferenceProvider->WithMetadataValue('IsAspNetCoreApp', 'true'))" />
2928
<_ShippingAssemblyWithDupes Include="@(_ProjectReferenceProvider->WithMetadataValue('IsShippingPackage', 'true'))" />
3029
<_ShippingAssembly Include="@(_ShippingAssemblyWithDupes->Distinct())" />
30+
<!-- _ProjectReferenceProvider is already Distinct() and does not include metadata for each target framework. -->
31+
<!-- If a project is trimmable for even just one of multiple target frameworks, include it in TrimmableProjects.props. -->
32+
<_TrimmableProject Include="@(_ProvidesReferenceOrRequiresDelay->WithMetadataValue('IsTrimmable', 'true')->WithMetadataValue('IsProjectReferenceProvider','true')->Distinct())" />
3133
</ItemGroup>
3234

3335
<PropertyGroup>

eng/Version.Details.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,9 +189,9 @@
189189
<Uri>https://github.com/dotnet/runtime</Uri>
190190
<Sha>f8c110b8003d68cc635add4ca791d6cf2e645561</Sha>
191191
</Dependency>
192-
<Dependency Name="Microsoft.SourceBuild.Intermediate.source-build-externals" Version="8.0.0-alpha.1.23418.1">
192+
<Dependency Name="Microsoft.SourceBuild.Intermediate.source-build-externals" Version="8.0.0-alpha.1.23429.1">
193193
<Uri>https://github.com/dotnet/source-build-externals</Uri>
194-
<Sha>8fc77fa8f591051da1120ebb76c3795b7b584495</Sha>
194+
<Sha>0603839a51f5e18b89c60a3690aff5e81fa666ca</Sha>
195195
<SourceBuild RepoName="source-build-externals" ManagedOnly="true" />
196196
</Dependency>
197197
<Dependency Name="System.Configuration.ConfigurationManager" Version="8.0.0-rc.1.23421.3">

eng/Versions.props

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<AspNetCorePatchVersion>0</AspNetCorePatchVersion>
1212
<PreReleaseVersionIteration>1</PreReleaseVersionIteration>
1313
<ValidateBaseline>true</ValidateBaseline>
14-
<IdentityModelVersion>7.0.0-preview</IdentityModelVersion>
14+
<IdentityModelVersion>7.0.0-preview3</IdentityModelVersion>
1515
<!--
1616
When StabilizePackageVersion is set to 'true', this branch will produce stable outputs for 'Shipping' packages
1717
-->
@@ -162,7 +162,7 @@
162162
<MicrosoftDotNetBuildTasksTemplatingVersion>8.0.0-beta.23425.2</MicrosoftDotNetBuildTasksTemplatingVersion>
163163
<MicrosoftDotNetRemoteExecutorVersion>8.0.0-beta.23425.2</MicrosoftDotNetRemoteExecutorVersion>
164164
<!-- Packages from dotnet/source-build-externals -->
165-
<MicrosoftSourceBuildIntermediatesourcebuildexternalsVersion>8.0.0-alpha.1.23418.1</MicrosoftSourceBuildIntermediatesourcebuildexternalsVersion>
165+
<MicrosoftSourceBuildIntermediatesourcebuildexternalsVersion>8.0.0-alpha.1.23429.1</MicrosoftSourceBuildIntermediatesourcebuildexternalsVersion>
166166
<!-- Packages from dotnet/source-build-reference-packages -->
167167
<MicrosoftSourceBuildIntermediatesourcebuildreferencepackagesVersion>8.0.0-alpha.1.23424.1</MicrosoftSourceBuildIntermediatesourcebuildreferencepackagesVersion>
168168
<!-- Packages from dotnet/symreader -->
@@ -304,7 +304,7 @@
304304
<MonoCecilVersion>0.11.2</MonoCecilVersion>
305305
<MonoTextTemplatingVersion>2.2.1</MonoTextTemplatingVersion>
306306
<NewtonsoftJsonBsonVersion>1.0.2</NewtonsoftJsonBsonVersion>
307-
<NewtonsoftJsonVersion>13.0.1</NewtonsoftJsonVersion>
307+
<NewtonsoftJsonVersion>13.0.3</NewtonsoftJsonVersion>
308308
<NSwagApiDescriptionClientVersion>13.0.4</NSwagApiDescriptionClientVersion>
309309
<PhotinoNETVersion>1.1.6</PhotinoNETVersion>
310310
<MicrosoftPlaywrightVersion>1.28.0</MicrosoftPlaywrightVersion>

eng/scripts/CodeCheck.ps1

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ try {
253253
}
254254
}
255255
# Check for changes in Unshipped in servicing branches
256-
if ($targetBranch -like 'release*' -and $targetBranch -notlike '*preview*' -and $file -like '*PublicAPI.Unshipped.txt') {
256+
if ($targetBranch -like 'release*' -and $targetBranch -notlike '*preview*' -and $targetBranch -notlike '*rc1*' -and $targetBranch -notlike '*rc2*' -and $file -like '*PublicAPI.Unshipped.txt') {
257257
$changedAPIBaselines.Add($file)
258258
}
259259
}
@@ -263,7 +263,8 @@ try {
263263

264264
if ($changedAPIBaselines.count -gt 0) {
265265
LogError ("Detected modification to baseline API files. PublicAPI.Shipped.txt files should only " +
266-
"be updated after a major release. See /docs/APIBaselines.md for more information.")
266+
"be updated after a major release, and PublicAPI.Unshipped.txt files should not " +
267+
"be updated in release branches. See /docs/APIBaselines.md for more information.")
267268
LogError "Modified API baseline files:"
268269
foreach ($file in $changedAPIBaselines) {
269270
LogError $file

eng/test-configuration.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
{"testName": {"contains": "HEADERS_Received_SecondRequest_ConnectProtocolReset"}},
2323
{"testName": {"contains": "ClientUsingOldCallWithNewProtocol"}},
2424
{"testName": {"contains": "CertificateChangedOnDisk"}},
25+
{"testName": {"contains": "CertificateChangedOnDisk_Symlink"}},
2526
{"testAssembly": {"contains": "IIS"}},
2627
{"testAssembly": {"contains": "Template"}},
2728
{"failureMessage": {"contains":"(Site is started but no worker process found)"}},

eng/tools/GenerateFiles/Directory.Build.props.in

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,4 @@
88
<!-- Temporarily hardcoded to true -->
99
<SuppressGenerateILCompilerExplicitPackageReferenceWarning>true</SuppressGenerateILCompilerExplicitPackageReferenceWarning>
1010
</PropertyGroup>
11-
12-
<!-- Ignore warning about RID resolution rules changing in .NET 8 Preview 6 -->
13-
<!-- Needed until https://github.com/ericsink/SQLitePCL.raw/issues/543 is fixed -->
14-
<!-- See https://github.com/dotnet/aspnetcore/pull/48908#issuecomment-1601894643 -->
15-
<ItemGroup>
16-
<RuntimeHostConfigurationOption Include="System.Runtime.Loader.UseRidGraph" Value="true" />
17-
</ItemGroup>
1811
</Project>

eng/tools/RepoTasks/RepoTasks.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
</PropertyGroup>
1616

1717
<ItemGroup>
18+
<!-- Explicitly reference the desired version of Newtonsoft.Json to avoid getting an older version
19+
from the dependency on NuGet.Packaging which would cause a source-built prebuilt. -->
20+
<PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />
1821
<PackageReference Include="NuGet.Packaging" Version="$(NuGetPackagingVersion)" />
1922
<PackageReference Include="Microsoft.Extensions.DependencyModel" Version="$(MicrosoftExtensionsDependencyModelVersion)" />
2023
</ItemGroup>

global.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
{
22
"sdk": {
3-
"version": "8.0.100-rc.1.23381.2"
3+
"version": "8.0.100-rc.2.23422.11"
44
},
55
"tools": {
6-
"dotnet": "8.0.100-rc.1.23381.2",
6+
"dotnet": "8.0.100-rc.2.23422.11",
77
"runtimes": {
88
"dotnet/x86": [
99
"$(MicrosoftNETCoreBrowserDebugHostTransportVersion)"

src/Components/Components/src/CascadingParameterAttribute.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,5 @@ public sealed class CascadingParameterAttribute : CascadingParameterAttributeBas
2020
/// <see cref="CascadingValue{T}"/> that supplies a value with a compatible
2121
/// type.
2222
/// </summary>
23-
public override string? Name { get; set; }
23+
public string? Name { get; set; }
2424
}

src/Components/Components/src/CascadingParameterAttributeBase.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,6 @@ namespace Microsoft.AspNetCore.Components;
88
/// </summary>
99
public abstract class CascadingParameterAttributeBase : Attribute
1010
{
11-
/// <summary>
12-
/// Gets or sets the name for the parameter, which correlates to the name
13-
/// of a cascading value.
14-
/// </summary>
15-
public abstract string? Name { get; set; }
16-
1711
/// <summary>
1812
/// Gets a flag indicating whether the cascading parameter should
1913
/// be supplied only once per component.

src/Components/Components/src/CascadingValueServiceCollectionExtensions.cs

Lines changed: 62 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33

44
using Microsoft.AspNetCore.Components;
5+
using Microsoft.Extensions.DependencyInjection.Extensions;
56

67
namespace Microsoft.Extensions.DependencyInjection;
78

@@ -16,11 +17,11 @@ public static class CascadingValueServiceCollectionExtensions
1617
/// </summary>
1718
/// <typeparam name="TValue">The value type.</typeparam>
1819
/// <param name="serviceCollection">The <see cref="IServiceCollection"/>.</param>
19-
/// <param name="valueFactory">A callback that supplies a fixed value within each service provider scope.</param>
20+
/// <param name="initialValueFactory">A callback that supplies a fixed value within each service provider scope.</param>
2021
/// <returns>The <see cref="IServiceCollection"/>.</returns>
2122
public static IServiceCollection AddCascadingValue<TValue>(
22-
this IServiceCollection serviceCollection, Func<IServiceProvider, TValue> valueFactory)
23-
=> serviceCollection.AddScoped<ICascadingValueSupplier>(sp => new CascadingValueSource<TValue>(() => valueFactory(sp), isFixed: true));
23+
this IServiceCollection serviceCollection, Func<IServiceProvider, TValue> initialValueFactory)
24+
=> serviceCollection.AddScoped<ICascadingValueSupplier>(sp => new CascadingValueSource<TValue>(() => initialValueFactory(sp), isFixed: true));
2425

2526
/// <summary>
2627
/// Adds a cascading value to the <paramref name="serviceCollection"/>. This is equivalent to having
@@ -29,11 +30,11 @@ public static IServiceCollection AddCascadingValue<TValue>(
2930
/// <typeparam name="TValue">The value type.</typeparam>
3031
/// <param name="serviceCollection">The <see cref="IServiceCollection"/>.</param>
3132
/// <param name="name">A name for the cascading value. If set, <see cref="CascadingParameterAttribute"/> can be configured to match based on this name.</param>
32-
/// <param name="valueFactory">A callback that supplies a fixed value within each service provider scope.</param>
33+
/// <param name="initialValueFactory">A callback that supplies a fixed value within each service provider scope.</param>
3334
/// <returns>The <see cref="IServiceCollection"/>.</returns>
3435
public static IServiceCollection AddCascadingValue<TValue>(
35-
this IServiceCollection serviceCollection, string name, Func<IServiceProvider, TValue> valueFactory)
36-
=> serviceCollection.AddScoped<ICascadingValueSupplier>(sp => new CascadingValueSource<TValue>(name, () => valueFactory(sp), isFixed: true));
36+
this IServiceCollection serviceCollection, string name, Func<IServiceProvider, TValue> initialValueFactory)
37+
=> serviceCollection.AddScoped<ICascadingValueSupplier>(sp => new CascadingValueSource<TValue>(name, () => initialValueFactory(sp), isFixed: true));
3738

3839
/// <summary>
3940
/// Adds a cascading value to the <paramref name="serviceCollection"/>. This is equivalent to having
@@ -50,4 +51,59 @@ public static IServiceCollection AddCascadingValue<TValue>(
5051
public static IServiceCollection AddCascadingValue<TValue>(
5152
this IServiceCollection serviceCollection, Func<IServiceProvider, CascadingValueSource<TValue>> sourceFactory)
5253
=> serviceCollection.AddScoped<ICascadingValueSupplier>(sourceFactory);
54+
55+
/// <summary>
56+
/// Adds a cascading value to the <paramref name="serviceCollection"/>, if none is already registered
57+
/// with the value type. This is equivalent to having a fixed <see cref="CascadingValue{TValue}"/> at
58+
/// the root of the component hierarchy.
59+
/// </summary>
60+
/// <typeparam name="TValue">The value type.</typeparam>
61+
/// <param name="serviceCollection">The <see cref="IServiceCollection"/>.</param>
62+
/// <param name="valueFactory">A callback that supplies a fixed value within each service provider scope.</param>
63+
/// <returns>The <see cref="IServiceCollection"/>.</returns>
64+
public static void TryAddCascadingValue<TValue>(
65+
this IServiceCollection serviceCollection, Func<IServiceProvider, TValue> valueFactory)
66+
{
67+
serviceCollection.TryAddEnumerable(
68+
ServiceDescriptor.Scoped<ICascadingValueSupplier, CascadingValueSource<TValue>>(
69+
sp => new CascadingValueSource<TValue>(() => valueFactory(sp), isFixed: true)));
70+
}
71+
72+
/// <summary>
73+
/// Adds a cascading value to the <paramref name="serviceCollection"/>, if none is already registered
74+
/// with the value type, regardless of the <paramref name="name"/>. This is equivalent to having a fixed
75+
/// <see cref="CascadingValue{TValue}"/> at the root of the component hierarchy.
76+
/// </summary>
77+
/// <typeparam name="TValue">The value type.</typeparam>
78+
/// <param name="serviceCollection">The <see cref="IServiceCollection"/>.</param>
79+
/// <param name="name">A name for the cascading value. If set, <see cref="CascadingParameterAttribute"/> can be configured to match based on this name.</param>
80+
/// <param name="valueFactory">A callback that supplies a fixed value within each service provider scope.</param>
81+
/// <returns>The <see cref="IServiceCollection"/>.</returns>
82+
public static void TryAddCascadingValue<TValue>(
83+
this IServiceCollection serviceCollection, string name, Func<IServiceProvider, TValue> valueFactory)
84+
{
85+
serviceCollection.TryAddEnumerable(
86+
ServiceDescriptor.Scoped<ICascadingValueSupplier, CascadingValueSource<TValue>>(
87+
sp => new CascadingValueSource<TValue>(name, () => valueFactory(sp), isFixed: true)));
88+
}
89+
90+
/// <summary>
91+
/// Adds a cascading value to the <paramref name="serviceCollection"/>, if none is already registered
92+
/// with the value type. This is equivalent to having a fixed <see cref="CascadingValue{TValue}"/> at
93+
/// the root of the component hierarchy.
94+
///
95+
/// With this overload, you can supply a <see cref="CascadingValueSource{TValue}"/> which allows you
96+
/// to notify about updates to the value later, causing recipients to re-render. This overload should
97+
/// only be used if you plan to update the value dynamically.
98+
/// </summary>
99+
/// <typeparam name="TValue">The value type.</typeparam>
100+
/// <param name="serviceCollection">The <see cref="IServiceCollection"/>.</param>
101+
/// <param name="sourceFactory">A callback that supplies a <see cref="CascadingValueSource{TValue}"/> within each service provider scope.</param>
102+
/// <returns>The <see cref="IServiceCollection"/>.</returns>
103+
public static void TryAddCascadingValue<TValue>(
104+
this IServiceCollection serviceCollection, Func<IServiceProvider, CascadingValueSource<TValue>> sourceFactory)
105+
{
106+
serviceCollection.TryAddEnumerable(
107+
ServiceDescriptor.Scoped<ICascadingValueSupplier, CascadingValueSource<TValue>>(sourceFactory));
108+
}
53109
}

src/Components/Components/src/CascadingValueSource.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,20 +48,20 @@ public CascadingValueSource(string name, TValue value, bool isFixed) : this(valu
4848
/// <summary>
4949
/// Constructs an instance of <see cref="CascadingValueSource{TValue}"/>.
5050
/// </summary>
51-
/// <param name="valueFactory">A callback that produces the initial value when first required.</param>
51+
/// <param name="initialValueFactory">A callback that produces the initial value when first required.</param>
5252
/// <param name="isFixed">A flag to indicate whether the value is fixed. If false, all receipients will subscribe for update notifications, which you can issue by calling <see cref="NotifyChangedAsync()"/>. These subscriptions come at a performance cost, so if the value will not change, set <paramref name="isFixed"/> to true.</param>
53-
public CascadingValueSource(Func<TValue> valueFactory, bool isFixed) : this(isFixed)
53+
public CascadingValueSource(Func<TValue> initialValueFactory, bool isFixed) : this(isFixed)
5454
{
55-
_initialValueFactory = valueFactory;
55+
_initialValueFactory = initialValueFactory;
5656
}
5757

5858
/// <summary>
5959
/// Constructs an instance of <see cref="CascadingValueSource{TValue}"/>.
6060
/// </summary>
6161
/// <param name="name">A name for the cascading value. If set, <see cref="CascadingParameterAttribute"/> can be configured to match based on this name.</param>
62-
/// <param name="valueFactory">A callback that produces the initial value when first required.</param>
62+
/// <param name="initialValueFactory">A callback that produces the initial value when first required.</param>
6363
/// <param name="isFixed">A flag to indicate whether the value is fixed. If false, all receipients will subscribe for update notifications, which you can issue by calling <see cref="NotifyChangedAsync()"/>. These subscriptions come at a performance cost, so if the value will not change, set <paramref name="isFixed"/> to true.</param>
64-
public CascadingValueSource(string name, Func<TValue> valueFactory, bool isFixed) : this(valueFactory, isFixed)
64+
public CascadingValueSource(string name, Func<TValue> initialValueFactory, bool isFixed) : this(initialValueFactory, isFixed)
6565
{
6666
ArgumentNullException.ThrowIfNull(name);
6767
_name = name;

0 commit comments

Comments
 (0)