[master] Update dependencies from 4 repositories (#12250)

* Update dependencies from https://github.com/aspnet/EntityFrameworkCore build 20190715.6

- Microsoft.EntityFrameworkCore.Tools - 3.0.0-preview8.19365.6
- Microsoft.EntityFrameworkCore.SqlServer - 3.0.0-preview8.19365.6
- dotnet-ef - 3.0.0-preview8.19365.6
- Microsoft.EntityFrameworkCore - 3.0.0-preview8.19365.6
- Microsoft.EntityFrameworkCore.InMemory - 3.0.0-preview8.19365.6
- Microsoft.EntityFrameworkCore.Relational - 3.0.0-preview8.19365.6
- Microsoft.EntityFrameworkCore.Sqlite - 3.0.0-preview8.19365.6

* Update dependencies from https://github.com/aspnet/Blazor build 20190715.2

- Microsoft.AspNetCore.Blazor.Mono - 0.10.0-preview8.19365.2

* Update dependencies from https://github.com/aspnet/EntityFrameworkCore build 20190715.9

- Microsoft.EntityFrameworkCore.Tools - 3.0.0-preview8.19365.9
- Microsoft.EntityFrameworkCore.SqlServer - 3.0.0-preview8.19365.9
- dotnet-ef - 3.0.0-preview8.19365.9
- Microsoft.EntityFrameworkCore - 3.0.0-preview8.19365.9
- Microsoft.EntityFrameworkCore.InMemory - 3.0.0-preview8.19365.9
- Microsoft.EntityFrameworkCore.Relational - 3.0.0-preview8.19365.9
- Microsoft.EntityFrameworkCore.Sqlite - 3.0.0-preview8.19365.9

* Update dependencies from https://github.com/aspnet/AspNetCore-Tooling build 20190715.5

- Microsoft.NET.Sdk.Razor - 3.0.0-preview8.19365.5
- Microsoft.CodeAnalysis.Razor - 3.0.0-preview8.19365.5
- Microsoft.AspNetCore.Razor.Language - 3.0.0-preview8.19365.5
- Microsoft.AspNetCore.Mvc.Razor.Extensions - 3.0.0-preview8.19365.5

* Update dependencies from https://github.com/aspnet/AspNetCore-Tooling build 20190716.1

- Microsoft.NET.Sdk.Razor - 3.0.0-preview8.19366.1
- Microsoft.CodeAnalysis.Razor - 3.0.0-preview8.19366.1
- Microsoft.AspNetCore.Razor.Language - 3.0.0-preview8.19366.1
- Microsoft.AspNetCore.Mvc.Razor.Extensions - 3.0.0-preview8.19366.1

* Update dependencies from https://github.com/dotnet/roslyn build 20190715.6

- Microsoft.Net.Compilers.Toolset - 3.3.0-beta2-19365-06

* Update dependencies from https://github.com/aspnet/EntityFrameworkCore build 20190716.1

- Microsoft.EntityFrameworkCore.Tools - 3.0.0-preview8.19366.1
- Microsoft.EntityFrameworkCore.SqlServer - 3.0.0-preview8.19366.1
- dotnet-ef - 3.0.0-preview8.19366.1
- Microsoft.EntityFrameworkCore - 3.0.0-preview8.19366.1
- Microsoft.EntityFrameworkCore.InMemory - 3.0.0-preview8.19366.1
- Microsoft.EntityFrameworkCore.Relational - 3.0.0-preview8.19366.1
- Microsoft.EntityFrameworkCore.Sqlite - 3.0.0-preview8.19366.1

* Update dependencies from https://github.com/aspnet/AspNetCore-Tooling build 20190716.2

- Microsoft.NET.Sdk.Razor - 3.0.0-preview8.19366.2
- Microsoft.CodeAnalysis.Razor - 3.0.0-preview8.19366.2
- Microsoft.AspNetCore.Razor.Language - 3.0.0-preview8.19366.2
- Microsoft.AspNetCore.Mvc.Razor.Extensions - 3.0.0-preview8.19366.2

* Dependency coherency updates

- Microsoft.AspNetCore.Analyzer.Testing - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.BenchmarkRunner.Sources - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ActivatorUtilities.Sources - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Abstractions - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Memory - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.SqlServer - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.StackExchangeRedis - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.CommandLineUtils.Sources - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Abstractions - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.AzureKeyVault - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Binder - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.CommandLine - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.EnvironmentVariables - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.FileExtensions - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Ini - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Json - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.KeyPerFile - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.UserSecrets - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Xml - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection.Abstractions - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DiagnosticAdapter - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Abstractions - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Composite - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Embedded - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Physical - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileSystemGlobbing - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HashCodeCombiner.Sources - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting.Abstractions - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HostFactoryResolver.Sources - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Http - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization.Abstractions - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Abstractions - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.AzureAppServices - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Configuration - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Console - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Debug - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventSource - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventLog - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.TraceSource - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Testing - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ObjectPool - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.ConfigurationExtensions - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.DataAnnotations - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ParameterDefaultValue.Sources - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Primitives - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.TypeNameHelper.Sources - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ValueStopwatch.Sources - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.WebEncoders - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Internal.Extensions.Refs - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.JSInterop - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Mono.WebAssembly.Interop - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Internal.AspNetCore.Analyzers - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.Testing - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)

* Remove unsupported `$(NullableContextOptions)` property settings
- newer `csc` errors out if this is used

* Update dependencies from https://github.com/aspnet/EntityFrameworkCore build 20190716.2

- Microsoft.EntityFrameworkCore.Tools - 3.0.0-preview8.19366.2
- Microsoft.EntityFrameworkCore.SqlServer - 3.0.0-preview8.19366.2
- dotnet-ef - 3.0.0-preview8.19366.2
- Microsoft.EntityFrameworkCore - 3.0.0-preview8.19366.2
- Microsoft.EntityFrameworkCore.InMemory - 3.0.0-preview8.19366.2
- Microsoft.EntityFrameworkCore.Relational - 3.0.0-preview8.19366.2
- Microsoft.EntityFrameworkCore.Sqlite - 3.0.0-preview8.19366.2

Dependency coherency updates

- Microsoft.AspNetCore.Analyzer.Testing - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.BenchmarkRunner.Sources - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ActivatorUtilities.Sources - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Abstractions - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Memory - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.SqlServer - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.StackExchangeRedis - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.CommandLineUtils.Sources - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Abstractions - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.AzureKeyVault - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Binder - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.CommandLine - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.EnvironmentVariables - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.FileExtensions - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Ini - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Json - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.KeyPerFile - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.UserSecrets - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Xml - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection.Abstractions - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DiagnosticAdapter - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Abstractions - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Composite - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Embedded - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Physical - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileSystemGlobbing - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HashCodeCombiner.Sources - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting.Abstractions - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HostFactoryResolver.Sources - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Http - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization.Abstractions - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Abstractions - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.AzureAppServices - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Configuration - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Console - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Debug - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventSource - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventLog - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.TraceSource - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Testing - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ObjectPool - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.ConfigurationExtensions - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.DataAnnotations - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ParameterDefaultValue.Sources - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Primitives - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.TypeNameHelper.Sources - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ValueStopwatch.Sources - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.WebEncoders - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Internal.Extensions.Refs - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.JSInterop - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Mono.WebAssembly.Interop - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Internal.AspNetCore.Analyzers - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.Testing - 3.0.0-preview8.19365.3 (parent: Microsoft.EntityFrameworkCore)

* Update dependencies from https://github.com/aspnet/AspNetCore-Tooling build 20190716.3

- Microsoft.NET.Sdk.Razor - 3.0.0-preview8.19366.3
- Microsoft.CodeAnalysis.Razor - 3.0.0-preview8.19366.3
- Microsoft.AspNetCore.Razor.Language - 3.0.0-preview8.19366.3
- Microsoft.AspNetCore.Mvc.Razor.Extensions - 3.0.0-preview8.19366.3

* Update dependencies from https://github.com/aspnet/AspNetCore-Tooling build 20190716.4

- Microsoft.NET.Sdk.Razor - 3.0.0-preview8.19366.4
- Microsoft.CodeAnalysis.Razor - 3.0.0-preview8.19366.4
- Microsoft.AspNetCore.Razor.Language - 3.0.0-preview8.19366.4
- Microsoft.AspNetCore.Mvc.Razor.Extensions - 3.0.0-preview8.19366.4

* Update dependencies from https://github.com/aspnet/EntityFrameworkCore build 20190716.3

- Microsoft.EntityFrameworkCore.Tools - 3.0.0-preview8.19366.3
- Microsoft.EntityFrameworkCore.SqlServer - 3.0.0-preview8.19366.3
- dotnet-ef - 3.0.0-preview8.19366.3
- Microsoft.EntityFrameworkCore - 3.0.0-preview8.19366.3
- Microsoft.EntityFrameworkCore.InMemory - 3.0.0-preview8.19366.3
- Microsoft.EntityFrameworkCore.Relational - 3.0.0-preview8.19366.3
- Microsoft.EntityFrameworkCore.Sqlite - 3.0.0-preview8.19366.3

Dependency coherency updates

- Microsoft.AspNetCore.Analyzer.Testing - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.BenchmarkRunner.Sources - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ActivatorUtilities.Sources - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Abstractions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Memory - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.SqlServer - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.StackExchangeRedis - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.CommandLineUtils.Sources - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Abstractions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.AzureKeyVault - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Binder - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.CommandLine - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.EnvironmentVariables - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.FileExtensions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Ini - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Json - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.KeyPerFile - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.UserSecrets - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Xml - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection.Abstractions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DiagnosticAdapter - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Abstractions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Composite - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Embedded - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Physical - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileSystemGlobbing - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HashCodeCombiner.Sources - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting.Abstractions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HostFactoryResolver.Sources - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Http - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization.Abstractions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Abstractions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.AzureAppServices - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Configuration - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Console - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Debug - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventSource - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventLog - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.TraceSource - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Testing - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ObjectPool - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.ConfigurationExtensions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.DataAnnotations - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ParameterDefaultValue.Sources - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Primitives - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.TypeNameHelper.Sources - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ValueStopwatch.Sources - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.WebEncoders - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Internal.Extensions.Refs - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.JSInterop - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Mono.WebAssembly.Interop - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Internal.AspNetCore.Analyzers - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.Testing - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)

* Update dependencies from https://github.com/aspnet/AspNetCore-Tooling build 20190716.5

- Microsoft.NET.Sdk.Razor - 3.0.0-preview8.19366.5
- Microsoft.CodeAnalysis.Razor - 3.0.0-preview8.19366.5
- Microsoft.AspNetCore.Razor.Language - 3.0.0-preview8.19366.5
- Microsoft.AspNetCore.Mvc.Razor.Extensions - 3.0.0-preview8.19366.5

* Update dependencies from https://github.com/aspnet/EntityFrameworkCore build 20190716.4

- Microsoft.EntityFrameworkCore.Tools - 3.0.0-preview8.19366.4
- Microsoft.EntityFrameworkCore.SqlServer - 3.0.0-preview8.19366.4
- dotnet-ef - 3.0.0-preview8.19366.4
- Microsoft.EntityFrameworkCore - 3.0.0-preview8.19366.4
- Microsoft.EntityFrameworkCore.InMemory - 3.0.0-preview8.19366.4
- Microsoft.EntityFrameworkCore.Relational - 3.0.0-preview8.19366.4
- Microsoft.EntityFrameworkCore.Sqlite - 3.0.0-preview8.19366.4

Dependency coherency updates

- Microsoft.AspNetCore.Analyzer.Testing - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.BenchmarkRunner.Sources - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ActivatorUtilities.Sources - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Abstractions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Memory - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.SqlServer - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.StackExchangeRedis - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.CommandLineUtils.Sources - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Abstractions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.AzureKeyVault - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Binder - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.CommandLine - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.EnvironmentVariables - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.FileExtensions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Ini - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Json - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.KeyPerFile - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.UserSecrets - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Xml - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection.Abstractions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DiagnosticAdapter - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Abstractions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Composite - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Embedded - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Physical - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileSystemGlobbing - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HashCodeCombiner.Sources - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting.Abstractions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HostFactoryResolver.Sources - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Http - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization.Abstractions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Abstractions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.AzureAppServices - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Configuration - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Console - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Debug - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventSource - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventLog - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.TraceSource - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Testing - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ObjectPool - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.ConfigurationExtensions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.DataAnnotations - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ParameterDefaultValue.Sources - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Primitives - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.TypeNameHelper.Sources - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ValueStopwatch.Sources - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.WebEncoders - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Internal.Extensions.Refs - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.JSInterop - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Mono.WebAssembly.Interop - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Internal.AspNetCore.Analyzers - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.Testing - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)

* Update dependencies from https://github.com/aspnet/EntityFrameworkCore build 20190716.6

- Microsoft.EntityFrameworkCore.Tools - 3.0.0-preview8.19366.6
- Microsoft.EntityFrameworkCore.SqlServer - 3.0.0-preview8.19366.6
- dotnet-ef - 3.0.0-preview8.19366.6
- Microsoft.EntityFrameworkCore - 3.0.0-preview8.19366.6
- Microsoft.EntityFrameworkCore.InMemory - 3.0.0-preview8.19366.6
- Microsoft.EntityFrameworkCore.Relational - 3.0.0-preview8.19366.6
- Microsoft.EntityFrameworkCore.Sqlite - 3.0.0-preview8.19366.6

Dependency coherency updates

- Microsoft.AspNetCore.Analyzer.Testing - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.BenchmarkRunner.Sources - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ActivatorUtilities.Sources - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Abstractions - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Memory - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.SqlServer - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.StackExchangeRedis - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.CommandLineUtils.Sources - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Abstractions - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.AzureKeyVault - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Binder - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.CommandLine - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.EnvironmentVariables - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.FileExtensions - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Ini - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Json - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.KeyPerFile - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.UserSecrets - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Xml - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection.Abstractions - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DiagnosticAdapter - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Abstractions - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Composite - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Embedded - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Physical - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileSystemGlobbing - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HashCodeCombiner.Sources - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting.Abstractions - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HostFactoryResolver.Sources - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Http - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization.Abstractions - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Abstractions - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.AzureAppServices - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Configuration - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Console - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Debug - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventSource - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventLog - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.TraceSource - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Testing - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ObjectPool - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.ConfigurationExtensions - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.DataAnnotations - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ParameterDefaultValue.Sources - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Primitives - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.TypeNameHelper.Sources - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ValueStopwatch.Sources - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.WebEncoders - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Internal.Extensions.Refs - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.JSInterop - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Mono.WebAssembly.Interop - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Internal.AspNetCore.Analyzers - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.Testing - 3.0.0-preview8.19366.2 (parent: Microsoft.EntityFrameworkCore)

* Update dependencies from https://github.com/aspnet/EntityFrameworkCore build 20190716.5

- Microsoft.EntityFrameworkCore.Tools - 3.0.0-preview8.19366.5
- Microsoft.EntityFrameworkCore.SqlServer - 3.0.0-preview8.19366.5
- dotnet-ef - 3.0.0-preview8.19366.5
- Microsoft.EntityFrameworkCore - 3.0.0-preview8.19366.5
- Microsoft.EntityFrameworkCore.InMemory - 3.0.0-preview8.19366.5
- Microsoft.EntityFrameworkCore.Relational - 3.0.0-preview8.19366.5
- Microsoft.EntityFrameworkCore.Sqlite - 3.0.0-preview8.19366.5

Dependency coherency updates

- Microsoft.AspNetCore.Analyzer.Testing - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.BenchmarkRunner.Sources - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ActivatorUtilities.Sources - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Abstractions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Memory - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.SqlServer - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.StackExchangeRedis - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.CommandLineUtils.Sources - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Abstractions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.AzureKeyVault - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Binder - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.CommandLine - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.EnvironmentVariables - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.FileExtensions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Ini - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Json - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.KeyPerFile - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.UserSecrets - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Xml - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection.Abstractions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DiagnosticAdapter - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Abstractions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Composite - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Embedded - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Physical - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileSystemGlobbing - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HashCodeCombiner.Sources - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting.Abstractions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HostFactoryResolver.Sources - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Http - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization.Abstractions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Abstractions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.AzureAppServices - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Configuration - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Console - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Debug - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventSource - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventLog - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.TraceSource - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Testing - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ObjectPool - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.ConfigurationExtensions - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.DataAnnotations - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ParameterDefaultValue.Sources - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Primitives - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.TypeNameHelper.Sources - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ValueStopwatch.Sources - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.WebEncoders - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Internal.Extensions.Refs - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.JSInterop - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Mono.WebAssembly.Interop - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Internal.AspNetCore.Analyzers - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.Testing - 3.0.0-preview8.19366.1 (parent: Microsoft.EntityFrameworkCore)

* Update dependencies from https://github.com/aspnet/AspNetCore-Tooling build 20190716.6

- Microsoft.NET.Sdk.Razor - 3.0.0-preview8.19366.6
- Microsoft.CodeAnalysis.Razor - 3.0.0-preview8.19366.6
- Microsoft.AspNetCore.Razor.Language - 3.0.0-preview8.19366.6
- Microsoft.AspNetCore.Mvc.Razor.Extensions - 3.0.0-preview8.19366.6

* Update dependencies from https://github.com/aspnet/EntityFrameworkCore build 20190716.7

- Microsoft.EntityFrameworkCore.Tools - 3.0.0-preview8.19366.7
- Microsoft.EntityFrameworkCore.SqlServer - 3.0.0-preview8.19366.7
- dotnet-ef - 3.0.0-preview8.19366.7
- Microsoft.EntityFrameworkCore - 3.0.0-preview8.19366.7
- Microsoft.EntityFrameworkCore.InMemory - 3.0.0-preview8.19366.7
- Microsoft.EntityFrameworkCore.Relational - 3.0.0-preview8.19366.7
- Microsoft.EntityFrameworkCore.Sqlite - 3.0.0-preview8.19366.7

Dependency coherency updates

- Microsoft.AspNetCore.Analyzer.Testing - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.BenchmarkRunner.Sources - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ActivatorUtilities.Sources - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Abstractions - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Memory - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.SqlServer - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.StackExchangeRedis - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.CommandLineUtils.Sources - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Abstractions - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.AzureKeyVault - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Binder - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.CommandLine - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.EnvironmentVariables - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.FileExtensions - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Ini - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Json - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.KeyPerFile - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.UserSecrets - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Xml - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection.Abstractions - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DiagnosticAdapter - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Abstractions - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Composite - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Embedded - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Physical - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileSystemGlobbing - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HashCodeCombiner.Sources - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting.Abstractions - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HostFactoryResolver.Sources - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Http - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization.Abstractions - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Abstractions - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.AzureAppServices - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Configuration - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Console - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Debug - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventSource - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventLog - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.TraceSource - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Testing - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ObjectPool - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.ConfigurationExtensions - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.DataAnnotations - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ParameterDefaultValue.Sources - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Primitives - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.TypeNameHelper.Sources - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ValueStopwatch.Sources - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.WebEncoders - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Internal.Extensions.Refs - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.JSInterop - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Mono.WebAssembly.Interop - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Bcl.AsyncInterfaces - 1.0.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.CSharp - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Win32.Registry - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Win32.SystemEvents - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.ComponentModel.Annotations - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Diagnostics.EventLog - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Drawing.Common - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.IO.Pipelines - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Net.Http.WinHttpHandler - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Net.WebSockets.WebSocketProtocol - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Reflection.Metadata - 1.7.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Runtime.CompilerServices.Unsafe - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Cryptography.Cng - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Cryptography.Pkcs - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Cryptography.Xml - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Permissions - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Principal.Windows - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.ServiceProcess.ServiceController - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Text.Encodings.Web - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Text.Json - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Threading.Channels - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Windows.Extensions - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyModel - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.NETCore.App.Ref - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- NETStandard.Library.Ref - 2.1.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.NETCore.Platforms - 3.0.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Internal.AspNetCore.Analyzers - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.Testing - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)

* Update dependencies from https://github.com/aspnet/AspNetCore-Tooling build 20190716.7

- Microsoft.NET.Sdk.Razor - 3.0.0-preview8.19366.7
- Microsoft.CodeAnalysis.Razor - 3.0.0-preview8.19366.7
- Microsoft.AspNetCore.Razor.Language - 3.0.0-preview8.19366.7
- Microsoft.AspNetCore.Mvc.Razor.Extensions - 3.0.0-preview8.19366.7

* Update dependencies from https://github.com/aspnet/AspNetCore-Tooling build 20190716.8

- Microsoft.NET.Sdk.Razor - 3.0.0-preview8.19366.8
- Microsoft.CodeAnalysis.Razor - 3.0.0-preview8.19366.8
- Microsoft.AspNetCore.Razor.Language - 3.0.0-preview8.19366.8
- Microsoft.AspNetCore.Mvc.Razor.Extensions - 3.0.0-preview8.19366.8

* Update dependencies from https://github.com/dotnet/roslyn build 20190716.2

- Microsoft.Net.Compilers.Toolset - 3.3.0-beta2-19366-02

* Update dependencies from https://github.com/aspnet/EntityFrameworkCore build 20190717.1

- Microsoft.EntityFrameworkCore.Tools - 3.0.0-preview8.19367.1
- Microsoft.EntityFrameworkCore.SqlServer - 3.0.0-preview8.19367.1
- dotnet-ef - 3.0.0-preview8.19367.1
- Microsoft.EntityFrameworkCore - 3.0.0-preview8.19367.1
- Microsoft.EntityFrameworkCore.InMemory - 3.0.0-preview8.19367.1
- Microsoft.EntityFrameworkCore.Relational - 3.0.0-preview8.19367.1
- Microsoft.EntityFrameworkCore.Sqlite - 3.0.0-preview8.19367.1

Dependency coherency updates

- Microsoft.AspNetCore.Analyzer.Testing - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.BenchmarkRunner.Sources - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ActivatorUtilities.Sources - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Abstractions - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Memory - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.SqlServer - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.StackExchangeRedis - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.CommandLineUtils.Sources - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Abstractions - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.AzureKeyVault - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Binder - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.CommandLine - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.EnvironmentVariables - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.FileExtensions - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Ini - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Json - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.KeyPerFile - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.UserSecrets - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Xml - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection.Abstractions - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DiagnosticAdapter - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Abstractions - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Composite - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Embedded - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Physical - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileSystemGlobbing - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HashCodeCombiner.Sources - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting.Abstractions - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HostFactoryResolver.Sources - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Http - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization.Abstractions - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Abstractions - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.AzureAppServices - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Configuration - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Console - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Debug - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventSource - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventLog - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.TraceSource - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Testing - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ObjectPool - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.ConfigurationExtensions - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.DataAnnotations - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ParameterDefaultValue.Sources - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Primitives - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.TypeNameHelper.Sources - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ValueStopwatch.Sources - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.WebEncoders - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Internal.Extensions.Refs - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.JSInterop - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Mono.WebAssembly.Interop - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Bcl.AsyncInterfaces - 1.0.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.CSharp - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Win32.Registry - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Win32.SystemEvents - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.ComponentModel.Annotations - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Diagnostics.EventLog - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Drawing.Common - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.IO.Pipelines - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Net.Http.WinHttpHandler - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Net.WebSockets.WebSocketProtocol - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Reflection.Metadata - 1.7.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Runtime.CompilerServices.Unsafe - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Cryptography.Cng - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Cryptography.Pkcs - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Cryptography.Xml - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Permissions - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Principal.Windows - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.ServiceProcess.ServiceController - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Text.Encodings.Web - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Text.Json - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Threading.Channels - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- System.Windows.Extensions - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyModel - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.NETCore.App.Ref - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- NETStandard.Library.Ref - 2.1.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.NETCore.Platforms - 3.0.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Internal.AspNetCore.Analyzers - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.Testing - 3.0.0-preview8.19366.3 (parent: Microsoft.EntityFrameworkCore)

* Update dependencies from https://github.com/aspnet/AspNetCore-Tooling build 20190717.1

- Microsoft.NET.Sdk.Razor - 3.0.0-preview8.19367.1
- Microsoft.CodeAnalysis.Razor - 3.0.0-preview8.19367.1
- Microsoft.AspNetCore.Razor.Language - 3.0.0-preview8.19367.1
- Microsoft.AspNetCore.Mvc.Razor.Extensions - 3.0.0-preview8.19367.1

* fix test

* Add missing using

* Workaround nullability errors in Mvc.Analyzers

* React to compiler bind + globalization changes

* Skip failing tests

These tests require a reaction in the compiler repo.

* Update dependencies from https://github.com/aspnet/EntityFrameworkCore build 20190717.2

- Microsoft.EntityFrameworkCore.Tools - 3.0.0-preview8.19367.2
- Microsoft.EntityFrameworkCore.SqlServer - 3.0.0-preview8.19367.2
- dotnet-ef - 3.0.0-preview8.19367.2
- Microsoft.EntityFrameworkCore - 3.0.0-preview8.19367.2
- Microsoft.EntityFrameworkCore.InMemory - 3.0.0-preview8.19367.2
- Microsoft.EntityFrameworkCore.Relational - 3.0.0-preview8.19367.2
- Microsoft.EntityFrameworkCore.Sqlite - 3.0.0-preview8.19367.2

* Update dependencies from https://github.com/aspnet/AspNetCore-Tooling build 20190717.2

- Microsoft.NET.Sdk.Razor - 3.0.0-preview8.19367.2
- Microsoft.CodeAnalysis.Razor - 3.0.0-preview8.19367.2
- Microsoft.AspNetCore.Razor.Language - 3.0.0-preview8.19367.2
- Microsoft.AspNetCore.Mvc.Razor.Extensions - 3.0.0-preview8.19367.2

* Dependency coherency updates

- Microsoft.AspNetCore.Analyzer.Testing - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.BenchmarkRunner.Sources - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ActivatorUtilities.Sources - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Abstractions - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Memory - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.SqlServer - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.StackExchangeRedis - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.CommandLineUtils.Sources - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Abstractions - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.AzureKeyVault - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Binder - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.CommandLine - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.EnvironmentVariables - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.FileExtensions - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Ini - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Json - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.KeyPerFile - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.UserSecrets - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Xml - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection.Abstractions - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DiagnosticAdapter - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Abstractions - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Composite - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Embedded - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Physical - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileSystemGlobbing - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HashCodeCombiner.Sources - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting.Abstractions - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HostFactoryResolver.Sources - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Http - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization.Abstractions - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Abstractions - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.AzureAppServices - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Configuration - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Console - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Debug - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventSource - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventLog - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.TraceSource - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Testing - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ObjectPool - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.ConfigurationExtensions - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.DataAnnotations - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ParameterDefaultValue.Sources - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Primitives - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.TypeNameHelper.Sources - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ValueStopwatch.Sources - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.WebEncoders - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Internal.Extensions.Refs - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.JSInterop - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Mono.WebAssembly.Interop - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Bcl.AsyncInterfaces - 1.0.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.CSharp - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Win32.Registry - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Win32.SystemEvents - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- System.ComponentModel.Annotations - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- System.Diagnostics.EventLog - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- System.Drawing.Common - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- System.IO.Pipelines - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- System.Net.Http.WinHttpHandler - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- System.Net.WebSockets.WebSocketProtocol - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- System.Reflection.Metadata - 1.7.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- System.Runtime.CompilerServices.Unsafe - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Cryptography.Cng - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Cryptography.Pkcs - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Cryptography.Xml - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Permissions - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Principal.Windows - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- System.ServiceProcess.ServiceController - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- System.Text.Encodings.Web - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- System.Text.Json - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- System.Threading.Channels - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- System.Windows.Extensions - 4.6.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyModel - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.NETCore.App.Ref - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- NETStandard.Library.Ref - 2.1.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.NETCore.Platforms - 3.0.0-preview8.19365.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27915-11 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Internal.AspNetCore.Analyzers - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.Testing - 3.0.0-preview8.19367.1 (parent: Microsoft.EntityFrameworkCore)

* [Blazor] Better logging and diagnostics
* Adds logs for interop JS calls.
* Routes events through a Hub method.
* Routes async JS interop callbacks through a hub method.
* Routes async .NET invocations callbacks through a client method.

* [Blazor] Update NPM dependency

* Update dependencies from https://github.com/aspnet/AspNetCore-Tooling build 20190717.4

- Microsoft.NET.Sdk.Razor - 3.0.0-preview8.19367.4
- Microsoft.CodeAnalysis.Razor - 3.0.0-preview8.19367.4
- Microsoft.AspNetCore.Razor.Language - 3.0.0-preview8.19367.4
- Microsoft.AspNetCore.Mvc.Razor.Extensions - 3.0.0-preview8.19367.4

* Update dependencies from https://github.com/aspnet/AspNetCore-Tooling build 20190717.5

- Microsoft.NET.Sdk.Razor - 3.0.0-preview8.19367.5
- Microsoft.CodeAnalysis.Razor - 3.0.0-preview8.19367.5
- Microsoft.AspNetCore.Razor.Language - 3.0.0-preview8.19367.5
- Microsoft.AspNetCore.Mvc.Razor.Extensions - 3.0.0-preview8.19367.5

* React to ElementRef -> ElementReference

* Update dependencies from https://github.com/aspnet/EntityFrameworkCore build 20190717.4

- Microsoft.EntityFrameworkCore.Tools - 3.0.0-preview8.19367.4
- Microsoft.EntityFrameworkCore.SqlServer - 3.0.0-preview8.19367.4
- dotnet-ef - 3.0.0-preview8.19367.4
- Microsoft.EntityFrameworkCore - 3.0.0-preview8.19367.4
- Microsoft.EntityFrameworkCore.InMemory - 3.0.0-preview8.19367.4
- Microsoft.EntityFrameworkCore.Relational - 3.0.0-preview8.19367.4
- Microsoft.EntityFrameworkCore.Sqlite - 3.0.0-preview8.19367.4

Dependency coherency updates

- Microsoft.AspNetCore.Analyzer.Testing - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.BenchmarkRunner.Sources - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ActivatorUtilities.Sources - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Abstractions - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Memory - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.SqlServer - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.StackExchangeRedis - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.CommandLineUtils.Sources - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Abstractions - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.AzureKeyVault - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Binder - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.CommandLine - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.EnvironmentVariables - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.FileExtensions - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Ini - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Json - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.KeyPerFile - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.UserSecrets - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Xml - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection.Abstractions - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DiagnosticAdapter - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Abstractions - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Composite - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Embedded - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Physical - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileSystemGlobbing - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HashCodeCombiner.Sources - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting.Abstractions - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HostFactoryResolver.Sources - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Http - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization.Abstractions - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Abstractions - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.AzureAppServices - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Configuration - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Console - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Debug - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventSource - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventLog - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.TraceSource - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Testing - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ObjectPool - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.ConfigurationExtensions - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.DataAnnotations - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ParameterDefaultValue.Sources - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Primitives - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.TypeNameHelper.Sources - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ValueStopwatch.Sources - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.WebEncoders - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Internal.Extensions.Refs - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.JSInterop - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Mono.WebAssembly.Interop - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Bcl.AsyncInterfaces - 1.0.0-preview8.19366.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-01 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.CSharp - 4.6.0-preview8.19366.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-01 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Win32.Registry - 4.6.0-preview8.19366.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-01 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Win32.SystemEvents - 4.6.0-preview8.19366.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-01 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- System.ComponentModel.Annotations - 4.6.0-preview8.19366.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-01 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- System.Diagnostics.EventLog - 4.6.0-preview8.19366.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-01 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- System.Drawing.Common - 4.6.0-preview8.19366.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-01 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- System.IO.Pipelines - 4.6.0-preview8.19366.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-01 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- System.Net.Http.WinHttpHandler - 4.6.0-preview8.19366.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-01 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- System.Net.WebSockets.WebSocketProtocol - 4.6.0-preview8.19366.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-01 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- System.Reflection.Metadata - 1.7.0-preview8.19366.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-01 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- System.Runtime.CompilerServices.Unsafe - 4.6.0-preview8.19366.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-01 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Cryptography.Cng - 4.6.0-preview8.19366.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-01 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Cryptography.Pkcs - 4.6.0-preview8.19366.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-01 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Cryptography.Xml - 4.6.0-preview8.19366.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-01 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Permissions - 4.6.0-preview8.19366.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-01 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Principal.Windows - 4.6.0-preview8.19366.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-01 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- System.ServiceProcess.ServiceController - 4.6.0-preview8.19366.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-01 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- System.Text.Encodings.Web - 4.6.0-preview8.19366.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-01 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- System.Text.Json - 4.6.0-preview8.19366.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-01 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- System.Threading.Channels - 4.6.0-preview8.19366.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-01 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- System.Windows.Extensions - 4.6.0-preview8.19366.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-01 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyModel - 3.0.0-preview8-27917-01 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.NETCore.App.Ref - 3.0.0-preview8-27917-01 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- NETStandard.Library.Ref - 2.1.0-preview8-27917-01 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.NETCore.Platforms - 3.0.0-preview8.19366.12 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-01 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Internal.AspNetCore.Analyzers - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.Testing - 3.0.0-preview8.19367.2 (parent: Microsoft.EntityFrameworkCore)

* mvc tests

* more mvc

* Update dependencies from https://github.com/aspnet/AspNetCore-Tooling build 20190717.7

- Microsoft.NET.Sdk.Razor - 3.0.0-preview8.19367.7
- Microsoft.CodeAnalysis.Razor - 3.0.0-preview8.19367.7
- Microsoft.AspNetCore.Razor.Language - 3.0.0-preview8.19367.7
- Microsoft.AspNetCore.Mvc.Razor.Extensions - 3.0.0-preview8.19367.7

* Adjust MVC test baselines to JavaScript encoding no longer escaping forward slashes

* Update dependencies from https://github.com/aspnet/AspNetCore-Tooling build 20190717.8

- Microsoft.NET.Sdk.Razor - 3.0.0-preview8.19367.8
- Microsoft.CodeAnalysis.Razor - 3.0.0-preview8.19367.8
- Microsoft.AspNetCore.Razor.Language - 3.0.0-preview8.19367.8
- Microsoft.AspNetCore.Mvc.Razor.Extensions - 3.0.0-preview8.19367.8

* React to System.IO.Pipelines changes

* More reaction

* More reactions

* Update dependencies from https://github.com/dotnet/roslyn build 20190717.3

- Microsoft.Net.Compilers.Toolset - 3.3.0-beta2-19367-03

* Disable obsolete warning and fix test

* Make RemoteUriHelper public

* Update dependencies from https://github.com/aspnet/EntityFrameworkCore build 20190718.1

- Microsoft.EntityFrameworkCore.Tools - 3.0.0-preview8.19368.1
- Microsoft.EntityFrameworkCore.SqlServer - 3.0.0-preview8.19368.1
- dotnet-ef - 3.0.0-preview8.19368.1
- Microsoft.EntityFrameworkCore - 3.0.0-preview8.19368.1
- Microsoft.EntityFrameworkCore.InMemory - 3.0.0-preview8.19368.1
- Microsoft.EntityFrameworkCore.Relational - 3.0.0-preview8.19368.1
- Microsoft.EntityFrameworkCore.Sqlite - 3.0.0-preview8.19368.1

* Update dependencies from https://github.com/aspnet/AspNetCore-Tooling build 20190718.1

- Microsoft.NET.Sdk.Razor - 3.0.0-preview8.19368.1
- Microsoft.CodeAnalysis.Razor - 3.0.0-preview8.19368.1
- Microsoft.AspNetCore.Razor.Language - 3.0.0-preview8.19368.1
- Microsoft.AspNetCore.Mvc.Razor.Extensions - 3.0.0-preview8.19368.1

* Dependency coherency updates

- Microsoft.AspNetCore.Analyzer.Testing - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.BenchmarkRunner.Sources - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ActivatorUtilities.Sources - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Abstractions - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Memory - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.SqlServer - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.StackExchangeRedis - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.CommandLineUtils.Sources - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Abstractions - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.AzureKeyVault - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Binder - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.CommandLine - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.EnvironmentVariables - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.FileExtensions - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Ini - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Json - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.KeyPerFile - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.UserSecrets - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Xml - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection.Abstractions - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DiagnosticAdapter - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Abstractions - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Composite - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Embedded - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Physical - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileSystemGlobbing - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HashCodeCombiner.Sources - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting.Abstractions - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HostFactoryResolver.Sources - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Http - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization.Abstractions - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Abstractions - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.AzureAppServices - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Configuration - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Console - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Debug - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventSource - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventLog - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.TraceSource - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Testing - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ObjectPool - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.ConfigurationExtensions - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.DataAnnotations - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ParameterDefaultValue.Sources - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Primitives - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.TypeNameHelper.Sources - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ValueStopwatch.Sources - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.WebEncoders - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Internal.Extensions.Refs - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.JSInterop - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Mono.WebAssembly.Interop - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Bcl.AsyncInterfaces - 1.0.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.CSharp - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Win32.Registry - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Win32.SystemEvents - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.ComponentModel.Annotations - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Diagnostics.EventLog - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Drawing.Common - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.IO.Pipelines - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Net.Http.WinHttpHandler - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Net.WebSockets.WebSocketProtocol - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Reflection.Metadata - 1.7.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Runtime.CompilerServices.Unsafe - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Cryptography.Cng - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Cryptography.Pkcs - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Cryptography.Xml - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Permissions - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Principal.Windows - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.ServiceProcess.ServiceController - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Text.Encodings.Web - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Text.Json - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Threading.Channels - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Windows.Extensions - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyModel - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.NETCore.App.Ref - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- NETStandard.Library.Ref - 2.1.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.NETCore.Platforms - 3.0.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Internal.AspNetCore.Analyzers - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.Testing - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)

* Update dependencies from https://github.com/aspnet/EntityFrameworkCore build 20190718.2

- Microsoft.EntityFrameworkCore.Tools - 3.0.0-preview8.19368.2
- Microsoft.EntityFrameworkCore.SqlServer - 3.0.0-preview8.19368.2
- dotnet-ef - 3.0.0-preview8.19368.2
- Microsoft.EntityFrameworkCore - 3.0.0-preview8.19368.2
- Microsoft.EntityFrameworkCore.InMemory - 3.0.0-preview8.19368.2
- Microsoft.EntityFrameworkCore.Relational - 3.0.0-preview8.19368.2
- Microsoft.EntityFrameworkCore.Sqlite - 3.0.0-preview8.19368.2

Dependency coherency updates

- Microsoft.AspNetCore.Analyzer.Testing - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.BenchmarkRunner.Sources - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ActivatorUtilities.Sources - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Abstractions - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Memory - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.SqlServer - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.StackExchangeRedis - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.CommandLineUtils.Sources - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Abstractions - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.AzureKeyVault - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Binder - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.CommandLine - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.EnvironmentVariables - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.FileExtensions - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Ini - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Json - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.KeyPerFile - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.UserSecrets - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Xml - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection.Abstractions - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DiagnosticAdapter - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Abstractions - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Composite - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Embedded - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Physical - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileSystemGlobbing - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HashCodeCombiner.Sources - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting.Abstractions - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HostFactoryResolver.Sources - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Http - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization.Abstractions - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Abstractions - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.AzureAppServices - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Configuration - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Console - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Debug - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventSource - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventLog - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.TraceSource - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Testing - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ObjectPool - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.ConfigurationExtensions - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.DataAnnotations - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ParameterDefaultValue.Sources - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Primitives - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.TypeNameHelper.Sources - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ValueStopwatch.Sources - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.WebEncoders - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Internal.Extensions.Refs - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.JSInterop - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Mono.WebAssembly.Interop - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Bcl.AsyncInterfaces - 1.0.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.CSharp - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Win32.Registry - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Win32.SystemEvents - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.ComponentModel.Annotations - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Diagnostics.EventLog - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Drawing.Common - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.IO.Pipelines - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Net.Http.WinHttpHandler - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Net.WebSockets.WebSocketProtocol - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Reflection.Metadata - 1.7.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Runtime.CompilerServices.Unsafe - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Cryptography.Cng - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Cryptography.Pkcs - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Cryptography.Xml - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Permissions - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Principal.Windows - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.ServiceProcess.ServiceController - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Text.Encodings.Web - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Text.Json - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Threading.Channels - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- System.Windows.Extensions - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyModel - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.NETCore.App.Ref - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- NETStandard.Library.Ref - 2.1.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.NETCore.Platforms - 3.0.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Internal.AspNetCore.Analyzers - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.Testing - 3.0.0-preview8.19367.10 (parent: Microsoft.EntityFrameworkCore)

* fix build

* Update dependencies from https://github.com/aspnet/EntityFrameworkCore build 20190718.3

- Microsoft.EntityFrameworkCore.Tools - 3.0.0-preview8.19368.3
- Microsoft.EntityFrameworkCore.SqlServer - 3.0.0-preview8.19368.3
- dotnet-ef - 3.0.0-preview8.19368.3
- Microsoft.EntityFrameworkCore - 3.0.0-preview8.19368.3
- Microsoft.EntityFrameworkCore.InMemory - 3.0.0-preview8.19368.3
- Microsoft.EntityFrameworkCore.Relational - 3.0.0-preview8.19368.3
- Microsoft.EntityFrameworkCore.Sqlite - 3.0.0-preview8.19368.3

Dependency coherency updates

- Microsoft.AspNetCore.Analyzer.Testing - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.BenchmarkRunner.Sources - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ActivatorUtilities.Sources - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Abstractions - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Memory - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.SqlServer - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.StackExchangeRedis - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.CommandLineUtils.Sources - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Abstractions - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.AzureKeyVault - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Binder - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.CommandLine - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.EnvironmentVariables - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.FileExtensions - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Ini - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Json - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.KeyPerFile - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.UserSecrets - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Xml - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection.Abstractions - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DiagnosticAdapter - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Abstractions - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Composite - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Embedded - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Physical - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileSystemGlobbing - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HashCodeCombiner.Sources - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting.Abstractions - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HostFactoryResolver.Sources - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Http - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization.Abstractions - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Abstractions - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.AzureAppServices - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Configuration - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Console - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Debug - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventSource - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventLog - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.TraceSource - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Testing - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ObjectPool - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.ConfigurationExtensions - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.DataAnnotations - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ParameterDefaultValue.Sources - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Primitives - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.TypeNameHelper.Sources - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ValueStopwatch.Sources - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.WebEncoders - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Internal.Extensions.Refs - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.JSInterop - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Mono.WebAssembly.Interop - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Bcl.AsyncInterfaces - 1.0.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.CSharp - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Win32.Registry - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Win32.SystemEvents - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- System.ComponentModel.Annotations - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- System.Diagnostics.EventLog - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- System.Drawing.Common - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- System.IO.Pipelines - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- System.Net.Http.WinHttpHandler - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- System.Net.WebSockets.WebSocketProtocol - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- System.Reflection.Metadata - 1.7.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- System.Runtime.CompilerServices.Unsafe - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Cryptography.Cng - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Cryptography.Pkcs - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Cryptography.Xml - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Permissions - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- System.Security.Principal.Windows - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- System.ServiceProcess.ServiceController - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- System.Text.Encodings.Web - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- System.Text.Json - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- System.Threading.Channels - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- System.Windows.Extensions - 4.6.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyModel - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.NETCore.App.Ref - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- NETStandard.Library.Ref - 2.1.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.NETCore.Platforms - 3.0.0-preview8.19367.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-preview8-27917-12 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Internal.AspNetCore.Analyzers - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.Testing - 3.0.0-preview8.19368.2 (parent: Microsoft.EntityFrameworkCore)

* Manually set Roslyn version used in testing

* Fix conflicts

* Update dependencies from https://github.com/aspnet/AspNetCore-Tooling build 20190718.2

- Microsoft.NET.Sdk.Razor - 3.0.0-preview8.19368.2
- Microsoft.CodeAnalysis.Razor - 3.0.0-preview8.19368.2
- Microsoft.AspNetCore.Razor.Language - 3.0.0-preview8.19368.2
- Microsoft.AspNetCore.Mvc.Razor.Extensions - 3.0.0-preview8.19368.2

* fingers crossed
This commit is contained in:
dotnet-maestro[bot] 2019-07-18 22:34:50 +00:00 committed by GitHub
parent c1d6748c5b
commit 771989b71d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
88 changed files with 1233 additions and 925 deletions

View File

@ -9,412 +9,412 @@
--> -->
<Dependencies> <Dependencies>
<ProductDependencies> <ProductDependencies>
<Dependency Name="Microsoft.AspNetCore.Blazor.Mono" Version="0.10.0-preview8.19365.1"> <Dependency Name="Microsoft.AspNetCore.Blazor.Mono" Version="0.10.0-preview8.19365.2">
<Uri>https://github.com/aspnet/Blazor</Uri> <Uri>https://github.com/aspnet/Blazor</Uri>
<Sha>9045a3861427fc95575c07bd0455c98731567969</Sha> <Sha>d09ecbb7337cedf351bbd7c65f4ff45be3d18906</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.AspNetCore.Razor.Language" Version="3.0.0-preview8.19365.2"> <Dependency Name="Microsoft.AspNetCore.Razor.Language" Version="3.0.0-preview8.19368.2">
<Uri>https://github.com/aspnet/AspNetCore-Tooling</Uri> <Uri>https://github.com/aspnet/AspNetCore-Tooling</Uri>
<Sha>d95774f01eb5f86d3f9ad00d2341deb74b024f37</Sha> <Sha>6f1a3c6cac12d4d48ea3435004465d654aa77cbb</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.AspNetCore.Mvc.Razor.Extensions" Version="3.0.0-preview8.19365.2"> <Dependency Name="Microsoft.AspNetCore.Mvc.Razor.Extensions" Version="3.0.0-preview8.19368.2">
<Uri>https://github.com/aspnet/AspNetCore-Tooling</Uri> <Uri>https://github.com/aspnet/AspNetCore-Tooling</Uri>
<Sha>d95774f01eb5f86d3f9ad00d2341deb74b024f37</Sha> <Sha>6f1a3c6cac12d4d48ea3435004465d654aa77cbb</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.CodeAnalysis.Razor" Version="3.0.0-preview8.19365.2"> <Dependency Name="Microsoft.CodeAnalysis.Razor" Version="3.0.0-preview8.19368.2">
<Uri>https://github.com/aspnet/AspNetCore-Tooling</Uri> <Uri>https://github.com/aspnet/AspNetCore-Tooling</Uri>
<Sha>d95774f01eb5f86d3f9ad00d2341deb74b024f37</Sha> <Sha>6f1a3c6cac12d4d48ea3435004465d654aa77cbb</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.NET.Sdk.Razor" Version="3.0.0-preview8.19365.2"> <Dependency Name="Microsoft.NET.Sdk.Razor" Version="3.0.0-preview8.19368.2">
<Uri>https://github.com/aspnet/AspNetCore-Tooling</Uri> <Uri>https://github.com/aspnet/AspNetCore-Tooling</Uri>
<Sha>d95774f01eb5f86d3f9ad00d2341deb74b024f37</Sha> <Sha>6f1a3c6cac12d4d48ea3435004465d654aa77cbb</Sha>
</Dependency> </Dependency>
<Dependency Name="dotnet-ef" Version="3.0.0-preview8.19365.5"> <Dependency Name="dotnet-ef" Version="3.0.0-preview8.19368.3">
<Uri>https://github.com/aspnet/EntityFrameworkCore</Uri> <Uri>https://github.com/aspnet/EntityFrameworkCore</Uri>
<Sha>751fb9dcf92357260128fc55afeb1e1735791297</Sha> <Sha>669eaf261d8f4fb71a85307266d96d0678f8f04d</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.EntityFrameworkCore.InMemory" Version="3.0.0-preview8.19365.5"> <Dependency Name="Microsoft.EntityFrameworkCore.InMemory" Version="3.0.0-preview8.19368.3">
<Uri>https://github.com/aspnet/EntityFrameworkCore</Uri> <Uri>https://github.com/aspnet/EntityFrameworkCore</Uri>
<Sha>751fb9dcf92357260128fc55afeb1e1735791297</Sha> <Sha>669eaf261d8f4fb71a85307266d96d0678f8f04d</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.EntityFrameworkCore.Relational" Version="3.0.0-preview8.19365.5"> <Dependency Name="Microsoft.EntityFrameworkCore.Relational" Version="3.0.0-preview8.19368.3">
<Uri>https://github.com/aspnet/EntityFrameworkCore</Uri> <Uri>https://github.com/aspnet/EntityFrameworkCore</Uri>
<Sha>751fb9dcf92357260128fc55afeb1e1735791297</Sha> <Sha>669eaf261d8f4fb71a85307266d96d0678f8f04d</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.EntityFrameworkCore.Sqlite" Version="3.0.0-preview8.19365.5"> <Dependency Name="Microsoft.EntityFrameworkCore.Sqlite" Version="3.0.0-preview8.19368.3">
<Uri>https://github.com/aspnet/EntityFrameworkCore</Uri> <Uri>https://github.com/aspnet/EntityFrameworkCore</Uri>
<Sha>751fb9dcf92357260128fc55afeb1e1735791297</Sha> <Sha>669eaf261d8f4fb71a85307266d96d0678f8f04d</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.0-preview8.19365.5"> <Dependency Name="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.0-preview8.19368.3">
<Uri>https://github.com/aspnet/EntityFrameworkCore</Uri> <Uri>https://github.com/aspnet/EntityFrameworkCore</Uri>
<Sha>751fb9dcf92357260128fc55afeb1e1735791297</Sha> <Sha>669eaf261d8f4fb71a85307266d96d0678f8f04d</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.EntityFrameworkCore.Tools" Version="3.0.0-preview8.19365.5"> <Dependency Name="Microsoft.EntityFrameworkCore.Tools" Version="3.0.0-preview8.19368.3">
<Uri>https://github.com/aspnet/EntityFrameworkCore</Uri> <Uri>https://github.com/aspnet/EntityFrameworkCore</Uri>
<Sha>751fb9dcf92357260128fc55afeb1e1735791297</Sha> <Sha>669eaf261d8f4fb71a85307266d96d0678f8f04d</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.EntityFrameworkCore" Version="3.0.0-preview8.19365.5"> <Dependency Name="Microsoft.EntityFrameworkCore" Version="3.0.0-preview8.19368.3">
<Uri>https://github.com/aspnet/EntityFrameworkCore</Uri> <Uri>https://github.com/aspnet/EntityFrameworkCore</Uri>
<Sha>751fb9dcf92357260128fc55afeb1e1735791297</Sha> <Sha>669eaf261d8f4fb71a85307266d96d0678f8f04d</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.AspNetCore.Analyzer.Testing" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.AspNetCore.Analyzer.Testing" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.AspNetCore.BenchmarkRunner.Sources" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.AspNetCore.BenchmarkRunner.Sources" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.ActivatorUtilities.Sources" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.ActivatorUtilities.Sources" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Caching.Abstractions" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Caching.Abstractions" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Caching.Memory" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Caching.Memory" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Caching.SqlServer" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Caching.SqlServer" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Caching.StackExchangeRedis" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Caching.StackExchangeRedis" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.CommandLineUtils.Sources" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.CommandLineUtils.Sources" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Configuration.Abstractions" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Configuration.Abstractions" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Configuration.AzureKeyVault" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Configuration.AzureKeyVault" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Configuration.Binder" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Configuration.Binder" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Configuration.CommandLine" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Configuration.CommandLine" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Configuration.FileExtensions" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Configuration.FileExtensions" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Configuration.Ini" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Configuration.Ini" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Configuration.Json" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Configuration.Json" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Configuration.KeyPerFile" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Configuration.KeyPerFile" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Configuration.UserSecrets" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Configuration.UserSecrets" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Configuration.Xml" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Configuration.Xml" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Configuration" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Configuration" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.DependencyInjection" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.DependencyInjection" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.DiagnosticAdapter" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.DiagnosticAdapter" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Diagnostics.HealthChecks" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Diagnostics.HealthChecks" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.FileProviders.Abstractions" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.FileProviders.Abstractions" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.FileProviders.Composite" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.FileProviders.Composite" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.FileProviders.Embedded" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.FileProviders.Embedded" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.FileProviders.Physical" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.FileProviders.Physical" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.FileSystemGlobbing" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.FileSystemGlobbing" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.HashCodeCombiner.Sources" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.HashCodeCombiner.Sources" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Hosting.Abstractions" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Hosting.Abstractions" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Hosting" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Hosting" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.HostFactoryResolver.Sources" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.HostFactoryResolver.Sources" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Http" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Http" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Localization.Abstractions" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Localization.Abstractions" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Localization" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Localization" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Logging.Abstractions" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Logging.Abstractions" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Logging.AzureAppServices" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Logging.AzureAppServices" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Logging.Configuration" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Logging.Configuration" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Logging.Console" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Logging.Console" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Logging.Debug" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Logging.Debug" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Logging.EventSource" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Logging.EventSource" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Logging.EventLog" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Logging.EventLog" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Logging.TraceSource" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Logging.TraceSource" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Logging.Testing" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Logging.Testing" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Logging" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Logging" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.ObjectPool" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.ObjectPool" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Options.DataAnnotations" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Options.DataAnnotations" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Options" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Options" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.ParameterDefaultValue.Sources" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.ParameterDefaultValue.Sources" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.Primitives" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.Primitives" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.TypeNameHelper.Sources" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.TypeNameHelper.Sources" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.ValueStopwatch.Sources" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.ValueStopwatch.Sources" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.WebEncoders" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Extensions.WebEncoders" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Internal.Extensions.Refs" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.Internal.Extensions.Refs" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.JSInterop" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.JSInterop" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Mono.WebAssembly.Interop" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Mono.WebAssembly.Interop" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Bcl.AsyncInterfaces" Version="1.0.0-preview8.19364.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64"> <Dependency Name="Microsoft.Bcl.AsyncInterfaces" Version="1.0.0-preview8.19367.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/corefx</Uri> <Uri>https://github.com/dotnet/corefx</Uri>
<Sha>c14b80faff694bae4e085bad221e2e83410e5f33</Sha> <Sha>d1e66a529460dc0c5fb0fe0dbe1454e7c5ccea4e</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.CSharp" Version="4.6.0-preview8.19364.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64"> <Dependency Name="Microsoft.CSharp" Version="4.6.0-preview8.19367.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/corefx</Uri> <Uri>https://github.com/dotnet/corefx</Uri>
<Sha>c14b80faff694bae4e085bad221e2e83410e5f33</Sha> <Sha>d1e66a529460dc0c5fb0fe0dbe1454e7c5ccea4e</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Win32.Registry" Version="4.6.0-preview8.19364.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64"> <Dependency Name="Microsoft.Win32.Registry" Version="4.6.0-preview8.19367.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/corefx</Uri> <Uri>https://github.com/dotnet/corefx</Uri>
<Sha>c14b80faff694bae4e085bad221e2e83410e5f33</Sha> <Sha>d1e66a529460dc0c5fb0fe0dbe1454e7c5ccea4e</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Win32.SystemEvents" Version="4.6.0-preview8.19364.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64"> <Dependency Name="Microsoft.Win32.SystemEvents" Version="4.6.0-preview8.19367.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/corefx</Uri> <Uri>https://github.com/dotnet/corefx</Uri>
<Sha>c14b80faff694bae4e085bad221e2e83410e5f33</Sha> <Sha>d1e66a529460dc0c5fb0fe0dbe1454e7c5ccea4e</Sha>
</Dependency> </Dependency>
<Dependency Name="System.ComponentModel.Annotations" Version="4.6.0-preview8.19364.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64"> <Dependency Name="System.ComponentModel.Annotations" Version="4.6.0-preview8.19367.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/corefx</Uri> <Uri>https://github.com/dotnet/corefx</Uri>
<Sha>c14b80faff694bae4e085bad221e2e83410e5f33</Sha> <Sha>d1e66a529460dc0c5fb0fe0dbe1454e7c5ccea4e</Sha>
</Dependency> </Dependency>
<Dependency Name="System.Data.SqlClient" Version="4.7.0-preview6.19264.9" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64" Pinned="true"> <Dependency Name="System.Data.SqlClient" Version="4.7.0-preview6.19264.9" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64" Pinned="true">
<Uri>https://github.com/dotnet/corefx</Uri> <Uri>https://github.com/dotnet/corefx</Uri>
<Sha>a28176b5ec68b6da1472934fe9493790d1665cae</Sha> <Sha>a28176b5ec68b6da1472934fe9493790d1665cae</Sha>
</Dependency> </Dependency>
<Dependency Name="System.Diagnostics.EventLog" Version="4.6.0-preview8.19364.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64"> <Dependency Name="System.Diagnostics.EventLog" Version="4.6.0-preview8.19367.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/corefx</Uri> <Uri>https://github.com/dotnet/corefx</Uri>
<Sha>c14b80faff694bae4e085bad221e2e83410e5f33</Sha> <Sha>d1e66a529460dc0c5fb0fe0dbe1454e7c5ccea4e</Sha>
</Dependency> </Dependency>
<Dependency Name="System.Drawing.Common" Version="4.6.0-preview8.19364.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64"> <Dependency Name="System.Drawing.Common" Version="4.6.0-preview8.19367.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/corefx</Uri> <Uri>https://github.com/dotnet/corefx</Uri>
<Sha>c14b80faff694bae4e085bad221e2e83410e5f33</Sha> <Sha>d1e66a529460dc0c5fb0fe0dbe1454e7c5ccea4e</Sha>
</Dependency> </Dependency>
<Dependency Name="System.IO.Pipelines" Version="4.6.0-preview8.19364.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64"> <Dependency Name="System.IO.Pipelines" Version="4.6.0-preview8.19367.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/corefx</Uri> <Uri>https://github.com/dotnet/corefx</Uri>
<Sha>c14b80faff694bae4e085bad221e2e83410e5f33</Sha> <Sha>d1e66a529460dc0c5fb0fe0dbe1454e7c5ccea4e</Sha>
</Dependency> </Dependency>
<Dependency Name="System.Net.Http.WinHttpHandler" Version="4.6.0-preview8.19364.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64"> <Dependency Name="System.Net.Http.WinHttpHandler" Version="4.6.0-preview8.19367.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/corefx</Uri> <Uri>https://github.com/dotnet/corefx</Uri>
<Sha>c14b80faff694bae4e085bad221e2e83410e5f33</Sha> <Sha>d1e66a529460dc0c5fb0fe0dbe1454e7c5ccea4e</Sha>
</Dependency> </Dependency>
<Dependency Name="System.Net.WebSockets.WebSocketProtocol" Version="4.6.0-preview8.19364.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64"> <Dependency Name="System.Net.WebSockets.WebSocketProtocol" Version="4.6.0-preview8.19367.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/corefx</Uri> <Uri>https://github.com/dotnet/corefx</Uri>
<Sha>c14b80faff694bae4e085bad221e2e83410e5f33</Sha> <Sha>d1e66a529460dc0c5fb0fe0dbe1454e7c5ccea4e</Sha>
</Dependency> </Dependency>
<Dependency Name="System.Reflection.Metadata" Version="1.7.0-preview8.19364.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64"> <Dependency Name="System.Reflection.Metadata" Version="1.7.0-preview8.19367.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/corefx</Uri> <Uri>https://github.com/dotnet/corefx</Uri>
<Sha>c14b80faff694bae4e085bad221e2e83410e5f33</Sha> <Sha>d1e66a529460dc0c5fb0fe0dbe1454e7c5ccea4e</Sha>
</Dependency> </Dependency>
<Dependency Name="System.Runtime.CompilerServices.Unsafe" Version="4.6.0-preview8.19364.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64"> <Dependency Name="System.Runtime.CompilerServices.Unsafe" Version="4.6.0-preview8.19367.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/corefx</Uri> <Uri>https://github.com/dotnet/corefx</Uri>
<Sha>c14b80faff694bae4e085bad221e2e83410e5f33</Sha> <Sha>d1e66a529460dc0c5fb0fe0dbe1454e7c5ccea4e</Sha>
</Dependency> </Dependency>
<Dependency Name="System.Security.Cryptography.Cng" Version="4.6.0-preview8.19364.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64"> <Dependency Name="System.Security.Cryptography.Cng" Version="4.6.0-preview8.19367.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/corefx</Uri> <Uri>https://github.com/dotnet/corefx</Uri>
<Sha>c14b80faff694bae4e085bad221e2e83410e5f33</Sha> <Sha>d1e66a529460dc0c5fb0fe0dbe1454e7c5ccea4e</Sha>
</Dependency> </Dependency>
<Dependency Name="System.Security.Cryptography.Pkcs" Version="4.6.0-preview8.19364.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64"> <Dependency Name="System.Security.Cryptography.Pkcs" Version="4.6.0-preview8.19367.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/corefx</Uri> <Uri>https://github.com/dotnet/corefx</Uri>
<Sha>c14b80faff694bae4e085bad221e2e83410e5f33</Sha> <Sha>d1e66a529460dc0c5fb0fe0dbe1454e7c5ccea4e</Sha>
</Dependency> </Dependency>
<Dependency Name="System.Security.Cryptography.Xml" Version="4.6.0-preview8.19364.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64"> <Dependency Name="System.Security.Cryptography.Xml" Version="4.6.0-preview8.19367.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/corefx</Uri> <Uri>https://github.com/dotnet/corefx</Uri>
<Sha>c14b80faff694bae4e085bad221e2e83410e5f33</Sha> <Sha>d1e66a529460dc0c5fb0fe0dbe1454e7c5ccea4e</Sha>
</Dependency> </Dependency>
<Dependency Name="System.Security.Permissions" Version="4.6.0-preview8.19364.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64"> <Dependency Name="System.Security.Permissions" Version="4.6.0-preview8.19367.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/corefx</Uri> <Uri>https://github.com/dotnet/corefx</Uri>
<Sha>c14b80faff694bae4e085bad221e2e83410e5f33</Sha> <Sha>d1e66a529460dc0c5fb0fe0dbe1454e7c5ccea4e</Sha>
</Dependency> </Dependency>
<Dependency Name="System.Security.Principal.Windows" Version="4.6.0-preview8.19364.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64"> <Dependency Name="System.Security.Principal.Windows" Version="4.6.0-preview8.19367.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/corefx</Uri> <Uri>https://github.com/dotnet/corefx</Uri>
<Sha>c14b80faff694bae4e085bad221e2e83410e5f33</Sha> <Sha>d1e66a529460dc0c5fb0fe0dbe1454e7c5ccea4e</Sha>
</Dependency> </Dependency>
<Dependency Name="System.ServiceProcess.ServiceController" Version="4.6.0-preview8.19364.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64"> <Dependency Name="System.ServiceProcess.ServiceController" Version="4.6.0-preview8.19367.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/corefx</Uri> <Uri>https://github.com/dotnet/corefx</Uri>
<Sha>c14b80faff694bae4e085bad221e2e83410e5f33</Sha> <Sha>d1e66a529460dc0c5fb0fe0dbe1454e7c5ccea4e</Sha>
</Dependency> </Dependency>
<Dependency Name="System.Text.Encodings.Web" Version="4.6.0-preview8.19364.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64"> <Dependency Name="System.Text.Encodings.Web" Version="4.6.0-preview8.19367.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/corefx</Uri> <Uri>https://github.com/dotnet/corefx</Uri>
<Sha>c14b80faff694bae4e085bad221e2e83410e5f33</Sha> <Sha>d1e66a529460dc0c5fb0fe0dbe1454e7c5ccea4e</Sha>
</Dependency> </Dependency>
<Dependency Name="System.Text.Json" Version="4.6.0-preview8.19364.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64"> <Dependency Name="System.Text.Json" Version="4.6.0-preview8.19367.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/corefx</Uri> <Uri>https://github.com/dotnet/corefx</Uri>
<Sha>c14b80faff694bae4e085bad221e2e83410e5f33</Sha> <Sha>d1e66a529460dc0c5fb0fe0dbe1454e7c5ccea4e</Sha>
</Dependency> </Dependency>
<Dependency Name="System.Threading.Channels" Version="4.6.0-preview8.19364.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64"> <Dependency Name="System.Threading.Channels" Version="4.6.0-preview8.19367.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/corefx</Uri> <Uri>https://github.com/dotnet/corefx</Uri>
<Sha>c14b80faff694bae4e085bad221e2e83410e5f33</Sha> <Sha>d1e66a529460dc0c5fb0fe0dbe1454e7c5ccea4e</Sha>
</Dependency> </Dependency>
<Dependency Name="System.Windows.Extensions" Version="4.6.0-preview8.19364.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64"> <Dependency Name="System.Windows.Extensions" Version="4.6.0-preview8.19367.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/corefx</Uri> <Uri>https://github.com/dotnet/corefx</Uri>
<Sha>c14b80faff694bae4e085bad221e2e83410e5f33</Sha> <Sha>d1e66a529460dc0c5fb0fe0dbe1454e7c5ccea4e</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Extensions.DependencyModel" Version="3.0.0-preview8-27914-06" CoherentParentDependency="Microsoft.Extensions.Logging"> <Dependency Name="Microsoft.Extensions.DependencyModel" Version="3.0.0-preview8-27917-12" CoherentParentDependency="Microsoft.Extensions.Logging">
<Uri>https://github.com/dotnet/core-setup</Uri> <Uri>https://github.com/dotnet/core-setup</Uri>
<Sha>2bb2dcaeffb1dfeda077354449868ddac254bc3d</Sha> <Sha>02e6fc2ff8d962383f538241c899decc0d655a60</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.NETCore.App.Ref" Version="3.0.0-preview8-27914-06" CoherentParentDependency="Microsoft.Extensions.Logging"> <Dependency Name="Microsoft.NETCore.App.Ref" Version="3.0.0-preview8-27917-12" CoherentParentDependency="Microsoft.Extensions.Logging">
<Uri>https://github.com/dotnet/core-setup</Uri> <Uri>https://github.com/dotnet/core-setup</Uri>
<Sha>2bb2dcaeffb1dfeda077354449868ddac254bc3d</Sha> <Sha>02e6fc2ff8d962383f538241c899decc0d655a60</Sha>
</Dependency> </Dependency>
<!-- <!--
Win-x64 is used here because we have picked an arbitrary runtime identifier to flow the version of the latest NETCore.App runtime. Win-x64 is used here because we have picked an arbitrary runtime identifier to flow the version of the latest NETCore.App runtime.
All Runtime.$rid packages should have the same version. All Runtime.$rid packages should have the same version.
--> -->
<Dependency Name="Microsoft.NETCore.App.Runtime.win-x64" Version="3.0.0-preview8-27914-06" CoherentParentDependency="Microsoft.Extensions.Logging"> <Dependency Name="Microsoft.NETCore.App.Runtime.win-x64" Version="3.0.0-preview8-27917-12" CoherentParentDependency="Microsoft.Extensions.Logging">
<Uri>https://github.com/dotnet/core-setup</Uri> <Uri>https://github.com/dotnet/core-setup</Uri>
<Sha>2bb2dcaeffb1dfeda077354449868ddac254bc3d</Sha> <Sha>02e6fc2ff8d962383f538241c899decc0d655a60</Sha>
</Dependency> </Dependency>
<Dependency Name="NETStandard.Library.Ref" Version="2.1.0-preview8-27914-06" CoherentParentDependency="Microsoft.Extensions.Logging"> <Dependency Name="NETStandard.Library.Ref" Version="2.1.0-preview8-27917-12" CoherentParentDependency="Microsoft.Extensions.Logging">
<Uri>https://github.com/dotnet/core-setup</Uri> <Uri>https://github.com/dotnet/core-setup</Uri>
<Sha>2bb2dcaeffb1dfeda077354449868ddac254bc3d</Sha> <Sha>02e6fc2ff8d962383f538241c899decc0d655a60</Sha>
</Dependency> </Dependency>
</ProductDependencies> </ProductDependencies>
<ToolsetDependencies> <ToolsetDependencies>
<!-- Listed explicitly to workaround https://github.com/dotnet/cli/issues/10528 --> <!-- Listed explicitly to workaround https://github.com/dotnet/cli/issues/10528 -->
<Dependency Name="Microsoft.NETCore.Platforms" Version="3.0.0-preview8.19364.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64"> <Dependency Name="Microsoft.NETCore.Platforms" Version="3.0.0-preview8.19367.3" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/corefx</Uri> <Uri>https://github.com/dotnet/corefx</Uri>
<Sha>c14b80faff694bae4e085bad221e2e83410e5f33</Sha> <Sha>d1e66a529460dc0c5fb0fe0dbe1454e7c5ccea4e</Sha>
</Dependency> </Dependency>
<Dependency Name="Internal.AspNetCore.Analyzers" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Internal.AspNetCore.Analyzers" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.DotNet.GenAPI" Version="1.0.0-beta.19365.4"> <Dependency Name="Microsoft.DotNet.GenAPI" Version="1.0.0-beta.19365.4">
<Uri>https://github.com/dotnet/arcade</Uri> <Uri>https://github.com/dotnet/arcade</Uri>
@ -428,13 +428,13 @@
<Uri>https://github.com/dotnet/arcade</Uri> <Uri>https://github.com/dotnet/arcade</Uri>
<Sha>fb27fd4d8a2b67d4333e33d4b898c65171c9f3c1</Sha> <Sha>fb27fd4d8a2b67d4333e33d4b898c65171c9f3c1</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.AspNetCore.Testing" Version="3.0.0-preview8.19365.1" CoherentParentDependency="Microsoft.EntityFrameworkCore"> <Dependency Name="Microsoft.AspNetCore.Testing" Version="3.0.0-preview8.19368.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
<Uri>https://github.com/aspnet/Extensions</Uri> <Uri>https://github.com/aspnet/Extensions</Uri>
<Sha>8bf6089b4491bc4387cdfec64ab56e7cc39030f8</Sha> <Sha>ab1b0aa16453b7c5876365f5dc6d476153873af0</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.Net.Compilers.Toolset" Version="3.3.0-beta2-19363-02"> <Dependency Name="Microsoft.Net.Compilers.Toolset" Version="3.3.0-beta2-19367-03">
<Uri>https://github.com/dotnet/roslyn</Uri> <Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>342275182023200bcd42b3d9919e984039577b44</Sha> <Sha>6914197946ea2be12f2c316e60640c91f8c4d717</Sha>
</Dependency> </Dependency>
</ToolsetDependencies> </ToolsetDependencies>
</Dependencies> </Dependencies>

View File

@ -52,115 +52,115 @@
<!-- Packages from dotnet/arcade --> <!-- Packages from dotnet/arcade -->
<MicrosoftDotNetGenAPIPackageVersion>1.0.0-beta.19365.4</MicrosoftDotNetGenAPIPackageVersion> <MicrosoftDotNetGenAPIPackageVersion>1.0.0-beta.19365.4</MicrosoftDotNetGenAPIPackageVersion>
<!-- Packages from dotnet/roslyn --> <!-- Packages from dotnet/roslyn -->
<MicrosoftNetCompilersToolsetPackageVersion>3.3.0-beta2-19363-02</MicrosoftNetCompilersToolsetPackageVersion> <MicrosoftNetCompilersToolsetPackageVersion>3.3.0-beta2-19367-03</MicrosoftNetCompilersToolsetPackageVersion>
<!-- Packages from dotnet/core-setup --> <!-- Packages from dotnet/core-setup -->
<MicrosoftExtensionsDependencyModelPackageVersion>3.0.0-preview8-27914-06</MicrosoftExtensionsDependencyModelPackageVersion> <MicrosoftExtensionsDependencyModelPackageVersion>3.0.0-preview8-27917-12</MicrosoftExtensionsDependencyModelPackageVersion>
<MicrosoftNETCoreAppRefPackageVersion>3.0.0-preview8-27914-06</MicrosoftNETCoreAppRefPackageVersion> <MicrosoftNETCoreAppRefPackageVersion>3.0.0-preview8-27917-12</MicrosoftNETCoreAppRefPackageVersion>
<MicrosoftNETCoreAppRuntimewinx64PackageVersion>3.0.0-preview8-27914-06</MicrosoftNETCoreAppRuntimewinx64PackageVersion> <MicrosoftNETCoreAppRuntimewinx64PackageVersion>3.0.0-preview8-27917-12</MicrosoftNETCoreAppRuntimewinx64PackageVersion>
<NETStandardLibraryRefPackageVersion>2.1.0-preview8-27914-06</NETStandardLibraryRefPackageVersion> <NETStandardLibraryRefPackageVersion>2.1.0-preview8-27917-12</NETStandardLibraryRefPackageVersion>
<!-- Packages from dotnet/corefx --> <!-- Packages from dotnet/corefx -->
<MicrosoftBclAsyncInterfacesPackageVersion>1.0.0-preview8.19364.1</MicrosoftBclAsyncInterfacesPackageVersion> <MicrosoftBclAsyncInterfacesPackageVersion>1.0.0-preview8.19367.3</MicrosoftBclAsyncInterfacesPackageVersion>
<MicrosoftCSharpPackageVersion>4.6.0-preview8.19364.1</MicrosoftCSharpPackageVersion> <MicrosoftCSharpPackageVersion>4.6.0-preview8.19367.3</MicrosoftCSharpPackageVersion>
<MicrosoftWin32RegistryPackageVersion>4.6.0-preview8.19364.1</MicrosoftWin32RegistryPackageVersion> <MicrosoftWin32RegistryPackageVersion>4.6.0-preview8.19367.3</MicrosoftWin32RegistryPackageVersion>
<MicrosoftWin32SystemEventsPackageVersion>4.6.0-preview8.19364.1</MicrosoftWin32SystemEventsPackageVersion> <MicrosoftWin32SystemEventsPackageVersion>4.6.0-preview8.19367.3</MicrosoftWin32SystemEventsPackageVersion>
<SystemComponentModelAnnotationsPackageVersion>4.6.0-preview8.19364.1</SystemComponentModelAnnotationsPackageVersion> <SystemComponentModelAnnotationsPackageVersion>4.6.0-preview8.19367.3</SystemComponentModelAnnotationsPackageVersion>
<SystemDataSqlClientPackageVersion>4.7.0-preview6.19264.9</SystemDataSqlClientPackageVersion> <SystemDataSqlClientPackageVersion>4.7.0-preview6.19264.9</SystemDataSqlClientPackageVersion>
<SystemDiagnosticsEventLogPackageVersion>4.6.0-preview8.19364.1</SystemDiagnosticsEventLogPackageVersion> <SystemDiagnosticsEventLogPackageVersion>4.6.0-preview8.19367.3</SystemDiagnosticsEventLogPackageVersion>
<SystemDrawingCommonPackageVersion>4.6.0-preview8.19364.1</SystemDrawingCommonPackageVersion> <SystemDrawingCommonPackageVersion>4.6.0-preview8.19367.3</SystemDrawingCommonPackageVersion>
<SystemIOPipelinesPackageVersion>4.6.0-preview8.19364.1</SystemIOPipelinesPackageVersion> <SystemIOPipelinesPackageVersion>4.6.0-preview8.19367.3</SystemIOPipelinesPackageVersion>
<SystemNetHttpWinHttpHandlerPackageVersion>4.6.0-preview8.19364.1</SystemNetHttpWinHttpHandlerPackageVersion> <SystemNetHttpWinHttpHandlerPackageVersion>4.6.0-preview8.19367.3</SystemNetHttpWinHttpHandlerPackageVersion>
<SystemNetWebSocketsWebSocketProtocolPackageVersion>4.6.0-preview8.19364.1</SystemNetWebSocketsWebSocketProtocolPackageVersion> <SystemNetWebSocketsWebSocketProtocolPackageVersion>4.6.0-preview8.19367.3</SystemNetWebSocketsWebSocketProtocolPackageVersion>
<SystemReflectionMetadataPackageVersion>1.7.0-preview8.19364.1</SystemReflectionMetadataPackageVersion> <SystemReflectionMetadataPackageVersion>1.7.0-preview8.19367.3</SystemReflectionMetadataPackageVersion>
<SystemRuntimeCompilerServicesUnsafePackageVersion>4.6.0-preview8.19364.1</SystemRuntimeCompilerServicesUnsafePackageVersion> <SystemRuntimeCompilerServicesUnsafePackageVersion>4.6.0-preview8.19367.3</SystemRuntimeCompilerServicesUnsafePackageVersion>
<SystemSecurityCryptographyCngPackageVersion>4.6.0-preview8.19364.1</SystemSecurityCryptographyCngPackageVersion> <SystemSecurityCryptographyCngPackageVersion>4.6.0-preview8.19367.3</SystemSecurityCryptographyCngPackageVersion>
<SystemSecurityCryptographyPkcsPackageVersion>4.6.0-preview8.19364.1</SystemSecurityCryptographyPkcsPackageVersion> <SystemSecurityCryptographyPkcsPackageVersion>4.6.0-preview8.19367.3</SystemSecurityCryptographyPkcsPackageVersion>
<SystemSecurityCryptographyXmlPackageVersion>4.6.0-preview8.19364.1</SystemSecurityCryptographyXmlPackageVersion> <SystemSecurityCryptographyXmlPackageVersion>4.6.0-preview8.19367.3</SystemSecurityCryptographyXmlPackageVersion>
<SystemSecurityPermissionsPackageVersion>4.6.0-preview8.19364.1</SystemSecurityPermissionsPackageVersion> <SystemSecurityPermissionsPackageVersion>4.6.0-preview8.19367.3</SystemSecurityPermissionsPackageVersion>
<SystemSecurityPrincipalWindowsPackageVersion>4.6.0-preview8.19364.1</SystemSecurityPrincipalWindowsPackageVersion> <SystemSecurityPrincipalWindowsPackageVersion>4.6.0-preview8.19367.3</SystemSecurityPrincipalWindowsPackageVersion>
<SystemServiceProcessServiceControllerPackageVersion>4.6.0-preview8.19364.1</SystemServiceProcessServiceControllerPackageVersion> <SystemServiceProcessServiceControllerPackageVersion>4.6.0-preview8.19367.3</SystemServiceProcessServiceControllerPackageVersion>
<SystemTextEncodingsWebPackageVersion>4.6.0-preview8.19364.1</SystemTextEncodingsWebPackageVersion> <SystemTextEncodingsWebPackageVersion>4.6.0-preview8.19367.3</SystemTextEncodingsWebPackageVersion>
<SystemTextJsonPackageVersion>4.6.0-preview8.19364.1</SystemTextJsonPackageVersion> <SystemTextJsonPackageVersion>4.6.0-preview8.19367.3</SystemTextJsonPackageVersion>
<SystemThreadingChannelsPackageVersion>4.6.0-preview8.19364.1</SystemThreadingChannelsPackageVersion> <SystemThreadingChannelsPackageVersion>4.6.0-preview8.19367.3</SystemThreadingChannelsPackageVersion>
<SystemWindowsExtensionsPackageVersion>4.6.0-preview8.19364.1</SystemWindowsExtensionsPackageVersion> <SystemWindowsExtensionsPackageVersion>4.6.0-preview8.19367.3</SystemWindowsExtensionsPackageVersion>
<!-- Only listed explicitly to workaround https://github.com/dotnet/cli/issues/10528 --> <!-- Only listed explicitly to workaround https://github.com/dotnet/cli/issues/10528 -->
<MicrosoftNETCorePlatformsPackageVersion>3.0.0-preview8.19364.1</MicrosoftNETCorePlatformsPackageVersion> <MicrosoftNETCorePlatformsPackageVersion>3.0.0-preview8.19367.3</MicrosoftNETCorePlatformsPackageVersion>
<!-- Packages from aspnet/Blazor --> <!-- Packages from aspnet/Blazor -->
<MicrosoftAspNetCoreBlazorMonoPackageVersion>0.10.0-preview8.19365.1</MicrosoftAspNetCoreBlazorMonoPackageVersion> <MicrosoftAspNetCoreBlazorMonoPackageVersion>0.10.0-preview8.19365.2</MicrosoftAspNetCoreBlazorMonoPackageVersion>
<!-- Packages from aspnet/Extensions --> <!-- Packages from aspnet/Extensions -->
<InternalAspNetCoreAnalyzersPackageVersion>3.0.0-preview8.19365.1</InternalAspNetCoreAnalyzersPackageVersion> <InternalAspNetCoreAnalyzersPackageVersion>3.0.0-preview8.19368.2</InternalAspNetCoreAnalyzersPackageVersion>
<MicrosoftAspNetCoreAnalyzerTestingPackageVersion>3.0.0-preview8.19365.1</MicrosoftAspNetCoreAnalyzerTestingPackageVersion> <MicrosoftAspNetCoreAnalyzerTestingPackageVersion>3.0.0-preview8.19368.2</MicrosoftAspNetCoreAnalyzerTestingPackageVersion>
<MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion>3.0.0-preview8.19365.1</MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion> <MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion>3.0.0-preview8.19368.2</MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion>
<MicrosoftAspNetCoreTestingPackageVersion>3.0.0-preview8.19365.1</MicrosoftAspNetCoreTestingPackageVersion> <MicrosoftAspNetCoreTestingPackageVersion>3.0.0-preview8.19368.2</MicrosoftAspNetCoreTestingPackageVersion>
<MicrosoftExtensionsActivatorUtilitiesSourcesPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsActivatorUtilitiesSourcesPackageVersion> <MicrosoftExtensionsActivatorUtilitiesSourcesPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsActivatorUtilitiesSourcesPackageVersion>
<MicrosoftExtensionsCachingAbstractionsPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsCachingAbstractionsPackageVersion> <MicrosoftExtensionsCachingAbstractionsPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsCachingAbstractionsPackageVersion>
<MicrosoftExtensionsCachingMemoryPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsCachingMemoryPackageVersion> <MicrosoftExtensionsCachingMemoryPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsCachingMemoryPackageVersion>
<MicrosoftExtensionsCachingSqlServerPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsCachingSqlServerPackageVersion> <MicrosoftExtensionsCachingSqlServerPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsCachingSqlServerPackageVersion>
<MicrosoftExtensionsCachingStackExchangeRedisPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsCachingStackExchangeRedisPackageVersion> <MicrosoftExtensionsCachingStackExchangeRedisPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsCachingStackExchangeRedisPackageVersion>
<MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion> <MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>
<MicrosoftExtensionsConfigurationAbstractionsPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsConfigurationAbstractionsPackageVersion> <MicrosoftExtensionsConfigurationAbstractionsPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsConfigurationAbstractionsPackageVersion>
<MicrosoftExtensionsConfigurationAzureKeyVaultPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsConfigurationAzureKeyVaultPackageVersion> <MicrosoftExtensionsConfigurationAzureKeyVaultPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsConfigurationAzureKeyVaultPackageVersion>
<MicrosoftExtensionsConfigurationBinderPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsConfigurationBinderPackageVersion> <MicrosoftExtensionsConfigurationBinderPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsConfigurationBinderPackageVersion>
<MicrosoftExtensionsConfigurationCommandLinePackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsConfigurationCommandLinePackageVersion> <MicrosoftExtensionsConfigurationCommandLinePackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsConfigurationCommandLinePackageVersion>
<MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion> <MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>
<MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsConfigurationFileExtensionsPackageVersion> <MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>
<MicrosoftExtensionsConfigurationIniPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsConfigurationIniPackageVersion> <MicrosoftExtensionsConfigurationIniPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsConfigurationIniPackageVersion>
<MicrosoftExtensionsConfigurationJsonPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsConfigurationJsonPackageVersion> <MicrosoftExtensionsConfigurationJsonPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsConfigurationJsonPackageVersion>
<MicrosoftExtensionsConfigurationKeyPerFilePackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsConfigurationKeyPerFilePackageVersion> <MicrosoftExtensionsConfigurationKeyPerFilePackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsConfigurationKeyPerFilePackageVersion>
<MicrosoftExtensionsConfigurationPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsConfigurationPackageVersion> <MicrosoftExtensionsConfigurationPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsConfigurationPackageVersion>
<MicrosoftExtensionsConfigurationUserSecretsPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsConfigurationUserSecretsPackageVersion> <MicrosoftExtensionsConfigurationUserSecretsPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsConfigurationUserSecretsPackageVersion>
<MicrosoftExtensionsConfigurationXmlPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsConfigurationXmlPackageVersion> <MicrosoftExtensionsConfigurationXmlPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsConfigurationXmlPackageVersion>
<MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion> <MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>
<MicrosoftExtensionsDependencyInjectionPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsDependencyInjectionPackageVersion> <MicrosoftExtensionsDependencyInjectionPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsDependencyInjectionPackageVersion>
<MicrosoftExtensionsDiagnosticAdapterPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsDiagnosticAdapterPackageVersion> <MicrosoftExtensionsDiagnosticAdapterPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsDiagnosticAdapterPackageVersion>
<MicrosoftExtensionsDiagnosticsHealthChecksAbstractionsPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsDiagnosticsHealthChecksAbstractionsPackageVersion> <MicrosoftExtensionsDiagnosticsHealthChecksAbstractionsPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsDiagnosticsHealthChecksAbstractionsPackageVersion>
<MicrosoftExtensionsDiagnosticsHealthChecksPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsDiagnosticsHealthChecksPackageVersion> <MicrosoftExtensionsDiagnosticsHealthChecksPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsDiagnosticsHealthChecksPackageVersion>
<MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsFileProvidersAbstractionsPackageVersion> <MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>
<MicrosoftExtensionsFileProvidersCompositePackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsFileProvidersCompositePackageVersion> <MicrosoftExtensionsFileProvidersCompositePackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsFileProvidersCompositePackageVersion>
<MicrosoftExtensionsFileProvidersEmbeddedPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsFileProvidersEmbeddedPackageVersion> <MicrosoftExtensionsFileProvidersEmbeddedPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsFileProvidersEmbeddedPackageVersion>
<MicrosoftExtensionsFileProvidersPhysicalPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsFileProvidersPhysicalPackageVersion> <MicrosoftExtensionsFileProvidersPhysicalPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsFileProvidersPhysicalPackageVersion>
<MicrosoftExtensionsFileSystemGlobbingPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsFileSystemGlobbingPackageVersion> <MicrosoftExtensionsFileSystemGlobbingPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsFileSystemGlobbingPackageVersion>
<MicrosoftExtensionsHashCodeCombinerSourcesPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsHashCodeCombinerSourcesPackageVersion> <MicrosoftExtensionsHashCodeCombinerSourcesPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsHashCodeCombinerSourcesPackageVersion>
<MicrosoftExtensionsHostingAbstractionsPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsHostingAbstractionsPackageVersion> <MicrosoftExtensionsHostingAbstractionsPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsHostingAbstractionsPackageVersion>
<MicrosoftExtensionsHostingPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsHostingPackageVersion> <MicrosoftExtensionsHostingPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsHostingPackageVersion>
<MicrosoftExtensionsHostFactoryResolverSourcesPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsHostFactoryResolverSourcesPackageVersion> <MicrosoftExtensionsHostFactoryResolverSourcesPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsHostFactoryResolverSourcesPackageVersion>
<MicrosoftExtensionsHttpPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsHttpPackageVersion> <MicrosoftExtensionsHttpPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsHttpPackageVersion>
<MicrosoftExtensionsLocalizationAbstractionsPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsLocalizationAbstractionsPackageVersion> <MicrosoftExtensionsLocalizationAbstractionsPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsLocalizationAbstractionsPackageVersion>
<MicrosoftExtensionsLocalizationPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsLocalizationPackageVersion> <MicrosoftExtensionsLocalizationPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsLocalizationPackageVersion>
<MicrosoftExtensionsLoggingAbstractionsPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsLoggingAbstractionsPackageVersion> <MicrosoftExtensionsLoggingAbstractionsPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsLoggingAbstractionsPackageVersion>
<MicrosoftExtensionsLoggingAzureAppServicesPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsLoggingAzureAppServicesPackageVersion> <MicrosoftExtensionsLoggingAzureAppServicesPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsLoggingAzureAppServicesPackageVersion>
<MicrosoftExtensionsLoggingConfigurationPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsLoggingConfigurationPackageVersion> <MicrosoftExtensionsLoggingConfigurationPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsLoggingConfigurationPackageVersion>
<MicrosoftExtensionsLoggingConsolePackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsLoggingConsolePackageVersion> <MicrosoftExtensionsLoggingConsolePackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsLoggingConsolePackageVersion>
<MicrosoftExtensionsLoggingDebugPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsLoggingDebugPackageVersion> <MicrosoftExtensionsLoggingDebugPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsLoggingDebugPackageVersion>
<MicrosoftExtensionsLoggingEventSourcePackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsLoggingEventSourcePackageVersion> <MicrosoftExtensionsLoggingEventSourcePackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsLoggingEventSourcePackageVersion>
<MicrosoftExtensionsLoggingEventLogPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsLoggingEventLogPackageVersion> <MicrosoftExtensionsLoggingEventLogPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsLoggingEventLogPackageVersion>
<MicrosoftExtensionsLoggingPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsLoggingPackageVersion> <MicrosoftExtensionsLoggingPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsLoggingPackageVersion>
<MicrosoftExtensionsLoggingTestingPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsLoggingTestingPackageVersion> <MicrosoftExtensionsLoggingTestingPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsLoggingTestingPackageVersion>
<MicrosoftExtensionsLoggingTraceSourcePackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsLoggingTraceSourcePackageVersion> <MicrosoftExtensionsLoggingTraceSourcePackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsLoggingTraceSourcePackageVersion>
<MicrosoftExtensionsObjectPoolPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsObjectPoolPackageVersion> <MicrosoftExtensionsObjectPoolPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsObjectPoolPackageVersion>
<MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion> <MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>
<MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsOptionsDataAnnotationsPackageVersion> <MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>
<MicrosoftExtensionsOptionsPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsOptionsPackageVersion> <MicrosoftExtensionsOptionsPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsOptionsPackageVersion>
<MicrosoftExtensionsParameterDefaultValueSourcesPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsParameterDefaultValueSourcesPackageVersion> <MicrosoftExtensionsParameterDefaultValueSourcesPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsParameterDefaultValueSourcesPackageVersion>
<MicrosoftExtensionsPrimitivesPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsPrimitivesPackageVersion> <MicrosoftExtensionsPrimitivesPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsPrimitivesPackageVersion>
<MicrosoftExtensionsTypeNameHelperSourcesPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsTypeNameHelperSourcesPackageVersion> <MicrosoftExtensionsTypeNameHelperSourcesPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsTypeNameHelperSourcesPackageVersion>
<MicrosoftExtensionsValueStopwatchSourcesPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsValueStopwatchSourcesPackageVersion> <MicrosoftExtensionsValueStopwatchSourcesPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsValueStopwatchSourcesPackageVersion>
<MicrosoftExtensionsWebEncodersPackageVersion>3.0.0-preview8.19365.1</MicrosoftExtensionsWebEncodersPackageVersion> <MicrosoftExtensionsWebEncodersPackageVersion>3.0.0-preview8.19368.2</MicrosoftExtensionsWebEncodersPackageVersion>
<MicrosoftInternalExtensionsRefsPackageVersion>3.0.0-preview8.19365.1</MicrosoftInternalExtensionsRefsPackageVersion> <MicrosoftInternalExtensionsRefsPackageVersion>3.0.0-preview8.19368.2</MicrosoftInternalExtensionsRefsPackageVersion>
<MicrosoftJSInteropPackageVersion>3.0.0-preview8.19365.1</MicrosoftJSInteropPackageVersion> <MicrosoftJSInteropPackageVersion>3.0.0-preview8.19368.2</MicrosoftJSInteropPackageVersion>
<MonoWebAssemblyInteropPackageVersion>3.0.0-preview8.19365.1</MonoWebAssemblyInteropPackageVersion> <MonoWebAssemblyInteropPackageVersion>3.0.0-preview8.19368.2</MonoWebAssemblyInteropPackageVersion>
<!-- Packages from aspnet/EntityFrameworkCore --> <!-- Packages from aspnet/EntityFrameworkCore -->
<dotnetefPackageVersion>3.0.0-preview8.19365.5</dotnetefPackageVersion> <dotnetefPackageVersion>3.0.0-preview8.19368.3</dotnetefPackageVersion>
<MicrosoftEntityFrameworkCoreInMemoryPackageVersion>3.0.0-preview8.19365.5</MicrosoftEntityFrameworkCoreInMemoryPackageVersion> <MicrosoftEntityFrameworkCoreInMemoryPackageVersion>3.0.0-preview8.19368.3</MicrosoftEntityFrameworkCoreInMemoryPackageVersion>
<MicrosoftEntityFrameworkCoreRelationalPackageVersion>3.0.0-preview8.19365.5</MicrosoftEntityFrameworkCoreRelationalPackageVersion> <MicrosoftEntityFrameworkCoreRelationalPackageVersion>3.0.0-preview8.19368.3</MicrosoftEntityFrameworkCoreRelationalPackageVersion>
<MicrosoftEntityFrameworkCoreSqlitePackageVersion>3.0.0-preview8.19365.5</MicrosoftEntityFrameworkCoreSqlitePackageVersion> <MicrosoftEntityFrameworkCoreSqlitePackageVersion>3.0.0-preview8.19368.3</MicrosoftEntityFrameworkCoreSqlitePackageVersion>
<MicrosoftEntityFrameworkCoreSqlServerPackageVersion>3.0.0-preview8.19365.5</MicrosoftEntityFrameworkCoreSqlServerPackageVersion> <MicrosoftEntityFrameworkCoreSqlServerPackageVersion>3.0.0-preview8.19368.3</MicrosoftEntityFrameworkCoreSqlServerPackageVersion>
<MicrosoftEntityFrameworkCoreToolsPackageVersion>3.0.0-preview8.19365.5</MicrosoftEntityFrameworkCoreToolsPackageVersion> <MicrosoftEntityFrameworkCoreToolsPackageVersion>3.0.0-preview8.19368.3</MicrosoftEntityFrameworkCoreToolsPackageVersion>
<MicrosoftEntityFrameworkCorePackageVersion>3.0.0-preview8.19365.5</MicrosoftEntityFrameworkCorePackageVersion> <MicrosoftEntityFrameworkCorePackageVersion>3.0.0-preview8.19368.3</MicrosoftEntityFrameworkCorePackageVersion>
<!-- Packages from aspnet/AspNetCore-Tooling --> <!-- Packages from aspnet/AspNetCore-Tooling -->
<MicrosoftAspNetCoreMvcRazorExtensionsPackageVersion>3.0.0-preview8.19365.2</MicrosoftAspNetCoreMvcRazorExtensionsPackageVersion> <MicrosoftAspNetCoreMvcRazorExtensionsPackageVersion>3.0.0-preview8.19368.2</MicrosoftAspNetCoreMvcRazorExtensionsPackageVersion>
<MicrosoftAspNetCoreRazorLanguagePackageVersion>3.0.0-preview8.19365.2</MicrosoftAspNetCoreRazorLanguagePackageVersion> <MicrosoftAspNetCoreRazorLanguagePackageVersion>3.0.0-preview8.19368.2</MicrosoftAspNetCoreRazorLanguagePackageVersion>
<MicrosoftCodeAnalysisRazorPackageVersion>3.0.0-preview8.19365.2</MicrosoftCodeAnalysisRazorPackageVersion> <MicrosoftCodeAnalysisRazorPackageVersion>3.0.0-preview8.19368.2</MicrosoftCodeAnalysisRazorPackageVersion>
<MicrosoftNETSdkRazorPackageVersion>3.0.0-preview8.19365.2</MicrosoftNETSdkRazorPackageVersion> <MicrosoftNETSdkRazorPackageVersion>3.0.0-preview8.19368.2</MicrosoftNETSdkRazorPackageVersion>
</PropertyGroup> </PropertyGroup>
<!-- <!--

View File

@ -55,7 +55,7 @@ namespace Test
frame => AssertFrame.Attribute(frame, "ValueChanged", typeof(Action<int>), 2)); frame => AssertFrame.Attribute(frame, "ValueChanged", typeof(Action<int>), 2));
} }
[Fact] [Fact(Skip = "https://github.com/aspnet/AspNetCore/issues/12286")]
public void Render_BindToComponent_SpecifiesValue_WithoutMatchingProperties() public void Render_BindToComponent_SpecifiesValue_WithoutMatchingProperties()
{ {
// Arrange // Arrange
@ -129,7 +129,7 @@ namespace Test
frame => AssertFrame.Attribute(frame, "OnChanged", typeof(Action<int>), 2)); frame => AssertFrame.Attribute(frame, "OnChanged", typeof(Action<int>), 2));
} }
[Fact] [Fact(Skip = "https://github.com/aspnet/AspNetCore/issues/12286")]
public void Render_BindToComponent_SpecifiesValueAndChangeEvent_WithoutMatchingProperties() public void Render_BindToComponent_SpecifiesValueAndChangeEvent_WithoutMatchingProperties()
{ {
// Arrange // Arrange

View File

@ -26,7 +26,7 @@ namespace Microsoft.AspNetCore.Components.RenderTree
[System.Runtime.InteropServices.FieldOffsetAttribute(16)] [System.Runtime.InteropServices.FieldOffsetAttribute(16)]
public readonly string ElementName; public readonly string ElementName;
[System.Runtime.InteropServices.FieldOffsetAttribute(24)] [System.Runtime.InteropServices.FieldOffsetAttribute(24)]
public readonly System.Action<Microsoft.AspNetCore.Components.ElementRef> ElementReferenceCaptureAction; public readonly System.Action<Microsoft.AspNetCore.Components.ElementReference> ElementReferenceCaptureAction;
[System.Runtime.InteropServices.FieldOffsetAttribute(16)] [System.Runtime.InteropServices.FieldOffsetAttribute(16)]
public readonly string ElementReferenceCaptureId; public readonly string ElementReferenceCaptureId;
[System.Runtime.InteropServices.FieldOffsetAttribute(8)] [System.Runtime.InteropServices.FieldOffsetAttribute(8)]

View File

@ -90,14 +90,6 @@ namespace Microsoft.AspNetCore.Components
public string Type { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } } public string Type { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }
public string ValueAttribute { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } } public string ValueAttribute { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }
} }
public static partial class BindMethods
{
public static string GetValue(System.DateTime value, string format) { throw null; }
public static string GetValue(System.DateTimeOffset value, string format) { throw null; }
public static string GetValue(System.DateTimeOffset? value, string format) { throw null; }
public static string GetValue(System.DateTime? value, string format) { throw null; }
public static T GetValue<T>(T value) { throw null; }
}
[System.AttributeUsageAttribute(System.AttributeTargets.Property, AllowMultiple=false, Inherited=true)] [System.AttributeUsageAttribute(System.AttributeTargets.Property, AllowMultiple=false, Inherited=true)]
public sealed partial class CascadingParameterAttribute : System.Attribute public sealed partial class CascadingParameterAttribute : System.Attribute
{ {
@ -144,13 +136,6 @@ namespace Microsoft.AspNetCore.Components
protected void OnUnhandledException(System.UnhandledExceptionEventArgs e) { } protected void OnUnhandledException(System.UnhandledExceptionEventArgs e) { }
} }
[System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)] [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
public readonly partial struct ElementRef
{
private readonly object _dummy;
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
public string __internalId { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }
}
[System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
public readonly partial struct ElementReference public readonly partial struct ElementReference
{ {
private readonly object _dummy; private readonly object _dummy;
@ -472,12 +457,6 @@ namespace Microsoft.AspNetCore.Components
public RouteAttribute(string template) { } public RouteAttribute(string template) { }
public string Template { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } } public string Template { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }
} }
public static partial class RuntimeHelpers
{
public static Microsoft.AspNetCore.Components.EventCallback<T> CreateInferredEventCallback<T>(object receiver, System.Action<T> callback, T value) { throw null; }
public static Microsoft.AspNetCore.Components.EventCallback<T> CreateInferredEventCallback<T>(object receiver, System.Func<T, System.Threading.Tasks.Task> callback, T value) { throw null; }
public static T TypeCheck<T>(T value) { throw null; }
}
public partial class UIChangeEventArgs : Microsoft.AspNetCore.Components.UIEventArgs public partial class UIChangeEventArgs : Microsoft.AspNetCore.Components.UIEventArgs
{ {
public UIChangeEventArgs() { } public UIChangeEventArgs() { }
@ -615,6 +594,8 @@ namespace Microsoft.AspNetCore.Components.CompilerServices
{ {
public static partial class RuntimeHelpers public static partial class RuntimeHelpers
{ {
public static Microsoft.AspNetCore.Components.EventCallback<T> CreateInferredEventCallback<T>(object receiver, System.Action<T> callback, T value) { throw null; }
public static Microsoft.AspNetCore.Components.EventCallback<T> CreateInferredEventCallback<T>(object receiver, System.Func<T, System.Threading.Tasks.Task> callback, T value) { throw null; }
public static T TypeCheck<T>(T value) { throw null; } public static T TypeCheck<T>(T value) { throw null; }
} }
} }
@ -787,7 +768,7 @@ namespace Microsoft.AspNetCore.Components.RenderTree
public void AddContent(int sequence, object textContent) { } public void AddContent(int sequence, object textContent) { }
public void AddContent(int sequence, string textContent) { } public void AddContent(int sequence, string textContent) { }
public void AddContent<T>(int sequence, Microsoft.AspNetCore.Components.RenderFragment<T> fragment, T value) { } public void AddContent<T>(int sequence, Microsoft.AspNetCore.Components.RenderFragment<T> fragment, T value) { }
public void AddElementReferenceCapture(int sequence, System.Action<Microsoft.AspNetCore.Components.ElementRef> elementReferenceCaptureAction) { } public void AddElementReferenceCapture(int sequence, System.Action<Microsoft.AspNetCore.Components.ElementReference> elementReferenceCaptureAction) { }
public void AddMarkupContent(int sequence, string markupContent) { } public void AddMarkupContent(int sequence, string markupContent) { }
public void AddMultipleAttributes(int sequence, System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, object>> attributes) { } public void AddMultipleAttributes(int sequence, System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, object>> attributes) { }
public void Clear() { } public void Clear() { }

View File

@ -1,47 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Globalization;
namespace Microsoft.AspNetCore.Components
{
/// <summary>
/// Methods used internally by @bind syntax. Not intended to be used directly.
/// </summary>
public static class BindMethods
{
/// <summary>
/// Not intended to be used directly.
/// </summary>
public static T GetValue<T>(T value) => value;
/// <summary>
/// Not intended to be used directly.
/// </summary>
public static string GetValue(DateTime value, string format) =>
value == default ? null
: (format == null ? value.ToString() : value.ToString(format));
/// <summary>
/// Not intended to be used directly.
/// </summary>
public static string GetValue(DateTime? value, string format) =>
value == default ? null
: (format == null ? value.ToString() : value.Value.ToString(format));
/// <summary>
/// Not intended to be used directly.
/// </summary>
public static string GetValue(DateTimeOffset value, string format) =>
value == default ? null
: (format == null ? value.ToString() : value.ToString(format));
/// <summary>
/// Not intended to be used directly.
/// </summary>
public static string GetValue(DateTimeOffset? value, string format) =>
value == default ? null
: (format == null ? value.ToString() : value.Value.ToString(format));
}
}

View File

@ -1,5 +1,7 @@
// Copyright (c) .NET Foundation. All rights reserved. // Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Threading.Tasks;
namespace Microsoft.AspNetCore.Components.CompilerServices namespace Microsoft.AspNetCore.Components.CompilerServices
{ {
@ -16,5 +18,39 @@ namespace Microsoft.AspNetCore.Components.CompilerServices
/// <param name="value"></param> /// <param name="value"></param>
/// <returns></returns> /// <returns></returns>
public static T TypeCheck<T>(T value) => value; public static T TypeCheck<T>(T value) => value;
/// <summary>
/// Not intended for use by application code.
/// </summary>
/// <param name="receiver"></param>
/// <param name="callback"></param>
/// <param name="value"></param>
/// <returns></returns>
//
// This method is used with `@bind-Value` for components. When a component has a generic type, it's
// really messy to write to try and write the parameter type for ValueChanged - because it can contain generic
// type parameters. We're using a trick of type inference to generate the proper typing for the delegate
// so that method-group-to-delegate conversion works.
public static EventCallback<T> CreateInferredEventCallback<T>(object receiver, Action<T> callback, T value)
{
return EventCallback.Factory.Create<T>(receiver, callback);
}
/// <summary>
/// Not intended for use by application code.
/// </summary>
/// <param name="receiver"></param>
/// <param name="callback"></param>
/// <param name="value"></param>
/// <returns></returns>
//
// This method is used with `@bind-Value` for components. When a component has a generic type, it's
// really messy to write to try and write the parameter type for ValueChanged - because it can contain generic
// type parameters. We're using a trick of type inference to generate the proper typing for the delegate
// so that method-group-to-delegate conversion works.
public static EventCallback<T> CreateInferredEventCallback<T>(object receiver, Func<T, Task> callback, T value)
{
return EventCallback.Factory.Create<T>(receiver, callback);
}
} }
} }

View File

@ -1,58 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.ComponentModel;
using System.Threading;
namespace Microsoft.AspNetCore.Components
{
/// <summary>
/// Represents a reference to a rendered element.
/// </summary>
public readonly struct ElementRef
{
static long _nextIdForWebAssemblyOnly = 1;
/// <summary>
/// Gets a unique identifier for <see cref="ElementRef" />.
/// </summary>
/// <remarks>
/// The Id is unique at least within the scope of a given user/circuit.
/// This property is public to support Json serialization and should not be used by user code.
/// </remarks>
[EditorBrowsable(EditorBrowsableState.Never)]
public string __internalId { get; }
internal string Id => __internalId;
private ElementRef(string id)
{
__internalId = id;
}
internal static ElementRef CreateWithUniqueId()
=> new ElementRef(CreateUniqueId());
static string CreateUniqueId()
{
if (PlatformInfo.IsWebAssembly)
{
// On WebAssembly there's only one user, so it's fine to expose the number
// of IDs that have been assigned, and this is cheaper than creating a GUID.
// It's unfortunate that this still involves a heap allocation. If that becomes
// a problem we could extend RenderTreeFrame to have both "string" and "long"
// fields for ElementRefCaptureId, of which only one would be in use depending
// on the platform.
var id = Interlocked.Increment(ref _nextIdForWebAssemblyOnly);
return id.ToString();
}
else
{
// For remote rendering, it's important not to disclose any cross-user state,
// such as the number of IDs that have been assigned.
return Guid.NewGuid().ToString("D");
}
}
}
}

View File

@ -587,7 +587,7 @@ namespace Microsoft.AspNetCore.Components.RenderTree
/// </summary> /// </summary>
/// <param name="sequence">An integer that represents the position of the instruction in the source code.</param> /// <param name="sequence">An integer that represents the position of the instruction in the source code.</param>
/// <param name="elementReferenceCaptureAction">An action to be invoked whenever the reference value changes.</param> /// <param name="elementReferenceCaptureAction">An action to be invoked whenever the reference value changes.</param>
public void AddElementReferenceCapture(int sequence, Action<ElementRef> elementReferenceCaptureAction) public void AddElementReferenceCapture(int sequence, Action<ElementReference> elementReferenceCaptureAction)
{ {
if (GetCurrentParentFrameType() != RenderTreeFrameType.Element) if (GetCurrentParentFrameType() != RenderTreeFrameType.Element)
{ {

View File

@ -914,9 +914,9 @@ namespace Microsoft.AspNetCore.Components.RenderTree
private static void InitializeNewElementReferenceCaptureFrame(ref DiffContext diffContext, ref RenderTreeFrame newFrame) private static void InitializeNewElementReferenceCaptureFrame(ref DiffContext diffContext, ref RenderTreeFrame newFrame)
{ {
var newElementRef = ElementRef.CreateWithUniqueId(); var newElementReference = ElementReference.CreateWithUniqueId();
newFrame = newFrame.WithElementReferenceCaptureId(newElementRef.Id); newFrame = newFrame.WithElementReferenceCaptureId(newElementReference.Id);
newFrame.ElementReferenceCaptureAction(newElementRef); newFrame.ElementReferenceCaptureAction(newElementReference);
} }
private static void InitializeNewComponentReferenceCaptureFrame(ref DiffContext diffContext, ref RenderTreeFrame newFrame) private static void InitializeNewComponentReferenceCaptureFrame(ref DiffContext diffContext, ref RenderTreeFrame newFrame)

View File

@ -178,7 +178,7 @@ namespace Microsoft.AspNetCore.Components.RenderTree
/// If the <see cref="FrameType"/> property equals <see cref="RenderTreeFrameType.ElementReferenceCapture"/>, /// If the <see cref="FrameType"/> property equals <see cref="RenderTreeFrameType.ElementReferenceCapture"/>,
/// gets the action that writes the reference to its target. Otherwise, the value is undefined. /// gets the action that writes the reference to its target. Otherwise, the value is undefined.
/// </summary> /// </summary>
[FieldOffset(24)] public readonly Action<ElementRef> ElementReferenceCaptureAction; [FieldOffset(24)] public readonly Action<ElementReference> ElementReferenceCaptureAction;
// -------------------------------------------------------------------------------- // --------------------------------------------------------------------------------
// RenderTreeFrameType.ComponentReferenceCapture // RenderTreeFrameType.ComponentReferenceCapture
@ -279,7 +279,7 @@ namespace Microsoft.AspNetCore.Components.RenderTree
} }
// Element reference capture constructor // Element reference capture constructor
private RenderTreeFrame(int sequence, Action<ElementRef> elementReferenceCaptureAction, string elementReferenceCaptureId) private RenderTreeFrame(int sequence, Action<ElementReference> elementReferenceCaptureAction, string elementReferenceCaptureId)
: this() : this()
{ {
FrameType = RenderTreeFrameType.ElementReferenceCapture; FrameType = RenderTreeFrameType.ElementReferenceCapture;
@ -319,7 +319,7 @@ namespace Microsoft.AspNetCore.Components.RenderTree
internal static RenderTreeFrame Region(int sequence) internal static RenderTreeFrame Region(int sequence)
=> new RenderTreeFrame(sequence, regionSubtreeLength: 0); => new RenderTreeFrame(sequence, regionSubtreeLength: 0);
internal static RenderTreeFrame ElementReferenceCapture(int sequence, Action<ElementRef> elementReferenceCaptureAction) internal static RenderTreeFrame ElementReferenceCapture(int sequence, Action<ElementReference> elementReferenceCaptureAction)
=> new RenderTreeFrame(sequence, elementReferenceCaptureAction: elementReferenceCaptureAction, elementReferenceCaptureId: null); => new RenderTreeFrame(sequence, elementReferenceCaptureAction: elementReferenceCaptureAction, elementReferenceCaptureId: null);
internal static RenderTreeFrame ComponentReferenceCapture(int sequence, Action<object> componentReferenceCaptureAction, int parentFrameIndex) internal static RenderTreeFrame ComponentReferenceCapture(int sequence, Action<object> componentReferenceCaptureAction, int parentFrameIndex)

View File

@ -1,60 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Threading.Tasks;
namespace Microsoft.AspNetCore.Components
{
/// <summary>
/// Used by generated code produced by the Components code generator. Not intended or supported
/// for use in application code.
/// </summary>
public static class RuntimeHelpers
{
/// <summary>
/// Not intended for use by application code.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="value"></param>
/// <returns></returns>
//
// This method is used to create an expression binding site with a compile-time known type. This helps with providing
// good error messages, as well as proper method-group-to-delegate conversion when assigning component parameters.
public static T TypeCheck<T>(T value) => value;
/// <summary>
/// Not intended for use by application code.
/// </summary>
/// <param name="receiver"></param>
/// <param name="callback"></param>
/// <param name="value"></param>
/// <returns></returns>
//
// This method is used with `@bind-Value` for components. When a component has a generic type, it's
// really messy to write to try and write the parameter type for ValueChanged - because it can contain generic
// type parameters. We're using a trick of type inference to generate the proper typing for the delegate
// so that method-group-to-delegate conversion works.
public static EventCallback<T> CreateInferredEventCallback<T>(object receiver, Action<T> callback, T value)
{
return EventCallback.Factory.Create<T>(receiver, callback);
}
/// <summary>
/// Not intended for use by application code.
/// </summary>
/// <param name="receiver"></param>
/// <param name="callback"></param>
/// <param name="value"></param>
/// <returns></returns>
//
// This method is used with `@bind-Value` for components. When a component has a generic type, it's
// really messy to write to try and write the parameter type for ValueChanged - because it can contain generic
// type parameters. We're using a trick of type inference to generate the proper typing for the delegate
// so that method-group-to-delegate conversion works.
public static EventCallback<T> CreateInferredEventCallback<T>(object receiver, Func<T, Task> callback, T value)
{
return EventCallback.Factory.Create<T>(receiver, callback);
}
}
}

View File

@ -600,7 +600,7 @@ namespace Microsoft.AspNetCore.Components.Test
{ {
// Arrange // Arrange
var builder = new RenderTreeBuilder(new TestRenderer()); var builder = new RenderTreeBuilder(new TestRenderer());
Action<ElementRef> referenceCaptureAction = elementRef => { }; Action<ElementReference> referenceCaptureAction = elementReference => { };
// Act // Act
builder.OpenElement(0, "myelement"); // 0: <myelement builder.OpenElement(0, "myelement"); // 0: <myelement
@ -668,8 +668,8 @@ namespace Microsoft.AspNetCore.Components.Test
// Arrange // Arrange
var builder = new RenderTreeBuilder(new TestRenderer()); var builder = new RenderTreeBuilder(new TestRenderer());
Action<ElementRef> referenceCaptureAction1 = elementRef => { }; Action<ElementReference> referenceCaptureAction1 = elementReference => { };
Action<ElementRef> referenceCaptureAction2 = elementRef => { }; Action<ElementReference> referenceCaptureAction2 = elementReference => { };
// Act // Act
builder.OpenElement(0, "myelement"); builder.OpenElement(0, "myelement");
@ -689,7 +689,7 @@ namespace Microsoft.AspNetCore.Components.Test
{ {
// Arrange // Arrange
var builder = new RenderTreeBuilder(new TestRenderer()); var builder = new RenderTreeBuilder(new TestRenderer());
Action<object> myAction = elementRef => { }; Action<object> myAction = elementReference => { };
// Act // Act
builder.OpenComponent<TestComponent>(0); // 0: <TestComponent builder.OpenComponent<TestComponent>(0); // 0: <TestComponent
@ -757,8 +757,8 @@ namespace Microsoft.AspNetCore.Components.Test
// Arrange // Arrange
var builder = new RenderTreeBuilder(new TestRenderer()); var builder = new RenderTreeBuilder(new TestRenderer());
Action<object> referenceCaptureAction1 = elementRef => { }; Action<object> referenceCaptureAction1 = elementReference => { };
Action<object> referenceCaptureAction2 = elementRef => { }; Action<object> referenceCaptureAction2 = elementReference => { };
// Act // Act
builder.OpenComponent<TestComponent>(0); builder.OpenComponent<TestComponent>(0);
@ -1625,7 +1625,7 @@ namespace Microsoft.AspNetCore.Components.Test
public void ProcessDuplicateAttributes_StopsAtFirstNonAttributeFrame_Capture() public void ProcessDuplicateAttributes_StopsAtFirstNonAttributeFrame_Capture()
{ {
// Arrange // Arrange
var capture = (Action<ElementRef>)((_) => { }); var capture = (Action<ElementReference>)((_) => { });
var builder = new RenderTreeBuilder(new TestRenderer()); var builder = new RenderTreeBuilder(new TestRenderer());
builder.OpenElement(0, "div"); builder.OpenElement(0, "div");

View File

@ -1750,9 +1750,9 @@ namespace Microsoft.AspNetCore.Components.Test
public void AssignsDistinctIdToNewElementReferenceCaptures() public void AssignsDistinctIdToNewElementReferenceCaptures()
{ {
// Arrange // Arrange
ElementRef ref1 = default, ref2 = default; ElementReference ref1 = default, ref2 = default;
Action<ElementRef> capture1 = val => { ref1 = val; }; Action<ElementReference> capture1 = val => { ref1 = val; };
Action<ElementRef> capture2 = val => { ref2 = val; }; Action<ElementReference> capture2 = val => { ref2 = val; };
newTree.OpenElement(0, "My element"); newTree.OpenElement(0, "My element");
newTree.AddElementReferenceCapture(1, capture1); newTree.AddElementReferenceCapture(1, capture1);
newTree.AddElementReferenceCapture(2, capture2); newTree.AddElementReferenceCapture(2, capture2);
@ -1791,8 +1791,8 @@ namespace Microsoft.AspNetCore.Components.Test
{ {
// Arrange // Arrange
var refWriteCount = 0; var refWriteCount = 0;
ElementRef ref1 = default; ElementReference ref1 = default;
Action<ElementRef> capture1 = val => { ref1 = val; refWriteCount++; }; Action<ElementReference> capture1 = val => { ref1 = val; refWriteCount++; };
oldTree.OpenElement(0, "My element"); oldTree.OpenElement(0, "My element");
oldTree.AddElementReferenceCapture(1, capture1); oldTree.AddElementReferenceCapture(1, capture1);
oldTree.CloseElement(); oldTree.CloseElement();

View File

@ -3686,11 +3686,11 @@ namespace Microsoft.AspNetCore.Components.Test
{ {
builder.OpenElement(0, "input"); builder.OpenElement(0, "input");
builder.AddAttribute(1, "type", "checkbox"); builder.AddAttribute(1, "type", "checkbox");
builder.AddAttribute(2, "value", BindMethods.GetValue(CheckboxEnabled)); builder.AddAttribute(2, "value", BindConverter.FormatValue(CheckboxEnabled));
builder.AddAttribute(3, "onchange", EventCallback.Factory.CreateBinder<bool>(this, __value => CheckboxEnabled = __value, CheckboxEnabled)); builder.AddAttribute(3, "onchange", EventCallback.Factory.CreateBinder<bool>(this, __value => CheckboxEnabled = __value, CheckboxEnabled));
builder.CloseElement(); builder.CloseElement();
builder.OpenElement(4, "input"); builder.OpenElement(4, "input");
builder.AddAttribute(5, "value", BindMethods.GetValue(SomeStringProperty)); builder.AddAttribute(5, "value", BindConverter.FormatValue(SomeStringProperty));
builder.AddAttribute(6, "onchange", EventCallback.Factory.CreateBinder<string>(this, __value => SomeStringProperty = __value, SomeStringProperty)); builder.AddAttribute(6, "onchange", EventCallback.Factory.CreateBinder<string>(this, __value => SomeStringProperty = __value, SomeStringProperty));
builder.AddAttribute(7, "disabled", !CheckboxEnabled); builder.AddAttribute(7, "disabled", !CheckboxEnabled);
builder.CloseElement(); builder.CloseElement();

View File

@ -31,9 +31,9 @@ namespace Microsoft.AspNetCore.Components.Server
public partial class CircuitOptions public partial class CircuitOptions
{ {
public CircuitOptions() { } public CircuitOptions() { }
public bool DetailedErrors { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
public System.TimeSpan DisconnectedCircuitRetentionPeriod { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } } public System.TimeSpan DisconnectedCircuitRetentionPeriod { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
public System.TimeSpan JSInteropDefaultCallTimeout { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } } public System.TimeSpan JSInteropDefaultCallTimeout { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
public bool JSInteropDetailedErrors { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
public int MaxRetainedDisconnectedCircuits { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } } public int MaxRetainedDisconnectedCircuits { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } [System.Runtime.CompilerServices.CompilerGeneratedAttribute]set { } }
} }
public partial class ComponentPrerenderingContext public partial class ComponentPrerenderingContext

View File

@ -47,15 +47,15 @@ namespace Microsoft.AspNetCore.Components.Server
public TimeSpan DisconnectedCircuitRetentionPeriod { get; set; } = TimeSpan.FromMinutes(3); public TimeSpan DisconnectedCircuitRetentionPeriod { get; set; } = TimeSpan.FromMinutes(3);
/// <summary> /// <summary>
/// Gets or sets a value that determines whether or not to send detailed exception messages from .NET interop method invocation /// Gets or sets a value that determines whether or not to send detailed exception messages to JavaScript when an unhandled exception
/// exceptions to JavaScript. /// happens on the circuit or when a .NET method invocation through JS interop results in an exception.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// This value should only be turned on in development scenarios as turning it on in production might result in the leak of /// This value should only be turned on in development scenarios as turning it on in production might result in the leak of
/// sensitive information to untrusted parties. /// sensitive information to untrusted parties.
/// </remarks> /// </remarks>
/// <value>Defaults to <c>false</c>.</value> /// <value>Defaults to <c>false</c>.</value>
public bool JSInteropDetailedErrors { get; set; } public bool DetailedErrors { get; set; }
/// <summary> /// <summary>
/// Gets or sets a value that indicates how long the server will wait before timing out an asynchronous JavaScript function invocation. /// Gets or sets a value that indicates how long the server will wait before timing out an asynchronous JavaScript function invocation.

View File

@ -3,12 +3,13 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text.Json;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components.Web.Rendering;
using Microsoft.AspNetCore.Components.Rendering; using Microsoft.AspNetCore.Components.Rendering;
using Microsoft.AspNetCore.Components.Routing; using Microsoft.AspNetCore.Components.Routing;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components.Web.Rendering;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Microsoft.JSInterop; using Microsoft.JSInterop;
@ -133,7 +134,76 @@ namespace Microsoft.AspNetCore.Components.Server.Circuits
// Dispatch any buffered renders we accumulated during a disconnect. // Dispatch any buffered renders we accumulated during a disconnect.
// Note that while the rendering is async, we cannot await it here. The Task returned by ProcessBufferedRenderBatches relies on // Note that while the rendering is async, we cannot await it here. The Task returned by ProcessBufferedRenderBatches relies on
// OnRenderCompleted to be invoked to complete, and SignalR does not allow concurrent hub method invocations. // OnRenderCompleted to be invoked to complete, and SignalR does not allow concurrent hub method invocations.
var _ = Renderer.Dispatcher.InvokeAsync(() => Renderer.ProcessBufferedRenderBatches()); _ = Renderer.Dispatcher.InvokeAsync(() => Renderer.ProcessBufferedRenderBatches());
}
public async Task EndInvokeJSFromDotNet(long asyncCall, bool succeded, string arguments)
{
try
{
AssertInitialized();
await Renderer.Dispatcher.InvokeAsync(() =>
{
SetCurrentCircuitHost(this);
if (!succeded)
{
// We can log the arguments here because it is simply the JS error with the call stack.
Log.EndInvokeJSFailed(_logger, asyncCall, arguments);
}
else
{
Log.EndInvokeJSSucceeded(_logger, asyncCall);
}
DotNetDispatcher.EndInvoke(arguments);
});
}
catch (Exception ex)
{
Log.EndInvokeDispatchException(_logger, ex);
}
}
public async Task DispatchEvent(string eventDescriptorJson, string eventArgs)
{
RendererRegistryEventDispatcher.BrowserEventDescriptor eventDescriptor = null;
try
{
AssertInitialized();
eventDescriptor = ParseEventDescriptor(eventDescriptorJson);
if (eventDescriptor == null)
{
return;
}
await Renderer.Dispatcher.InvokeAsync(() =>
{
SetCurrentCircuitHost(this);
return RendererRegistryEventDispatcher.DispatchEvent(eventDescriptor, eventArgs);
});
}
catch (Exception ex)
{
Log.DispatchEventFailedToDispatchEvent(_logger, eventDescriptor != null ? eventDescriptor.EventHandlerId.ToString() : null, ex);
UnhandledException?.Invoke(this, new UnhandledExceptionEventArgs(ex, isTerminating: false));
}
}
private RendererRegistryEventDispatcher.BrowserEventDescriptor ParseEventDescriptor(string eventDescriptorJson)
{
try
{
return JsonSerializer.Deserialize<RendererRegistryEventDispatcher.BrowserEventDescriptor>(
eventDescriptorJson,
JsonSerializerOptionsProvider.Options);
}
catch (Exception ex)
{
Log.DispatchEventFailedToParseEventDescriptor(_logger, ex);
return null;
}
} }
public async Task InitializeAsync(CancellationToken cancellationToken) public async Task InitializeAsync(CancellationToken cancellationToken)
@ -170,15 +240,21 @@ namespace Microsoft.AspNetCore.Components.Server.Circuits
}); });
} }
public async void BeginInvokeDotNetFromJS(string callId, string assemblyName, string methodIdentifier, long dotNetObjectId, string argsJson) public async Task BeginInvokeDotNetFromJS(string callId, string assemblyName, string methodIdentifier, long dotNetObjectId, string argsJson)
{ {
AssertInitialized();
try try
{ {
AssertInitialized();
if(assemblyName == "Microsoft.AspNetCore.Components.Web" && methodIdentifier == "DispatchEvent")
{
Log.DispatchEventTroughJSInterop(_logger);
return;
}
await Renderer.Dispatcher.InvokeAsync(() => await Renderer.Dispatcher.InvokeAsync(() =>
{ {
SetCurrentCircuitHost(this); SetCurrentCircuitHost(this);
Log.BeginInvokeDotNet(_logger, callId, assemblyName, methodIdentifier, dotNetObjectId);
DotNetDispatcher.BeginInvoke(callId, assemblyName, methodIdentifier, dotNetObjectId, argsJson); DotNetDispatcher.BeginInvoke(callId, assemblyName, methodIdentifier, dotNetObjectId, argsJson);
}); });
} }
@ -328,6 +404,14 @@ namespace Microsoft.AspNetCore.Components.Server.Circuits
private static readonly Action<ILogger, string, string, Exception> _onConnectionUp; private static readonly Action<ILogger, string, string, Exception> _onConnectionUp;
private static readonly Action<ILogger, string, string, Exception> _onConnectionDown; private static readonly Action<ILogger, string, string, Exception> _onConnectionDown;
private static readonly Action<ILogger, string, Exception> _onCircuitClosed; private static readonly Action<ILogger, string, Exception> _onCircuitClosed;
private static readonly Action<ILogger, string, string, string, Exception> _beginInvokeDotNetStatic;
private static readonly Action<ILogger, string, long, string, Exception> _beginInvokeDotNetInstance;
private static readonly Action<ILogger, Exception> _endInvokeDispatchException;
private static readonly Action<ILogger, long, string, Exception> _endInvokeJSFailed;
private static readonly Action<ILogger, long, Exception> _endInvokeJSSucceeded;
private static readonly Action<ILogger, Exception> _dispatchEventFailedToParseEventDescriptor;
private static readonly Action<ILogger, string, Exception> _dispatchEventFailedToDispatchEvent;
private static readonly Action<ILogger, Exception> _dispatchEventThroughJSInterop;
private static class EventIds private static class EventIds
{ {
@ -337,6 +421,14 @@ namespace Microsoft.AspNetCore.Components.Server.Circuits
public static readonly EventId OnConnectionUp = new EventId(103, "OnConnectionUp"); public static readonly EventId OnConnectionUp = new EventId(103, "OnConnectionUp");
public static readonly EventId OnConnectionDown = new EventId(104, "OnConnectionDown"); public static readonly EventId OnConnectionDown = new EventId(104, "OnConnectionDown");
public static readonly EventId OnCircuitClosed = new EventId(105, "OnCircuitClosed"); public static readonly EventId OnCircuitClosed = new EventId(105, "OnCircuitClosed");
public static readonly EventId InvalidBrowserEventFormat = new EventId(106, "InvalidBrowserEventFormat");
public static readonly EventId DispatchEventFailedToParseEventDescriptor = new EventId(107, "DispatchEventFailedToParseEventDescriptor");
public static readonly EventId DispatchEventFailedToDispatchEvent = new EventId(108, "DispatchEventFailedToDispatchEvent");
public static readonly EventId BeginInvokeDotNet = new EventId(109, "BeginInvokeDotNet");
public static readonly EventId EndInvokeDispatchException = new EventId(110, "EndInvokeDispatchException");
public static readonly EventId EndInvokeJSFailed = new EventId(111, "EndInvokeJSFailed");
public static readonly EventId EndInvokeJSSucceeded = new EventId(112, "EndInvokeJSSucceeded");
public static readonly EventId DispatchEventThroughJSInterop = new EventId(113, "DispatchEventThroughJSInterop");
} }
static Log() static Log()
@ -370,6 +462,46 @@ namespace Microsoft.AspNetCore.Components.Server.Circuits
LogLevel.Debug, LogLevel.Debug,
EventIds.OnCircuitClosed, EventIds.OnCircuitClosed,
"Closing circuit with id {CircuitId}."); "Closing circuit with id {CircuitId}.");
_beginInvokeDotNetStatic = LoggerMessage.Define<string, string, string>(
LogLevel.Debug,
EventIds.BeginInvokeDotNet,
"Invoking static method with identifier '{MethodIdentifier}' on assembly '{Assembly}' with callback id '{CallId}'");
_beginInvokeDotNetInstance = LoggerMessage.Define<string, long, string>(
LogLevel.Debug,
EventIds.BeginInvokeDotNet,
"Invoking instance method '{MethodIdentifier}' on instance '{DotNetObjectId}' with callback id '{CallId}'");
_endInvokeDispatchException = LoggerMessage.Define(
LogLevel.Debug,
EventIds.EndInvokeDispatchException,
"There was an error invoking 'Microsoft.JSInterop.DotNetDispatcher.EndInvoke'.");
_endInvokeJSFailed = LoggerMessage.Define<long, string>(
LogLevel.Debug,
EventIds.EndInvokeJSFailed,
"The JS interop call with callback id '{AsyncCall}' failed with error '{Error}'.");
_endInvokeJSSucceeded = LoggerMessage.Define<long>(
LogLevel.Debug,
EventIds.EndInvokeJSSucceeded,
"The JS interop call with callback id '{AsyncCall}' succeeded.");
_dispatchEventFailedToParseEventDescriptor = LoggerMessage.Define(
LogLevel.Debug,
EventIds.DispatchEventFailedToParseEventDescriptor,
"Failed to parse the event descriptor data when trying to dispatch an event.");
_dispatchEventFailedToDispatchEvent = LoggerMessage.Define<string>(
LogLevel.Debug,
EventIds.DispatchEventFailedToDispatchEvent,
"There was an error dispatching the event '{EventHandlerId}' to the application.");
_dispatchEventThroughJSInterop = LoggerMessage.Define(
LogLevel.Debug,
EventIds.DispatchEventThroughJSInterop,
"There was an intent to dispatch a browser event through JS interop.");
} }
public static void UnhandledExceptionInvokingCircuitHandler(ILogger logger, CircuitHandler handler, string handlerMethod, Exception exception) public static void UnhandledExceptionInvokingCircuitHandler(ILogger logger, CircuitHandler handler, string handlerMethod, Exception exception)
@ -394,6 +526,31 @@ namespace Microsoft.AspNetCore.Components.Server.Circuits
public static void CircuitClosed(ILogger logger, string circuitId) => public static void CircuitClosed(ILogger logger, string circuitId) =>
_onCircuitClosed(logger, circuitId, null); _onCircuitClosed(logger, circuitId, null);
public static void EndInvokeDispatchException(ILogger logger, Exception ex) => _endInvokeDispatchException(logger, ex);
public static void EndInvokeJSFailed(ILogger logger, long asyncHandle, string arguments) => _endInvokeJSFailed(logger, asyncHandle, arguments, null);
public static void EndInvokeJSSucceeded(ILogger logger, long asyncCall) => _endInvokeJSSucceeded(logger, asyncCall, null);
public static void DispatchEventFailedToParseEventDescriptor(ILogger logger, Exception ex) => _dispatchEventFailedToParseEventDescriptor(logger, ex);
public static void DispatchEventFailedToDispatchEvent(ILogger logger, string eventHandlerId, Exception ex) => _dispatchEventFailedToDispatchEvent(logger, eventHandlerId ?? "", ex);
public static void BeginInvokeDotNet(ILogger logger, string callId, string assemblyName, string methodIdentifier, long dotNetObjectId)
{
if (assemblyName != null)
{
_beginInvokeDotNetStatic(logger, methodIdentifier, assemblyName, callId, null);
}
else
{
_beginInvokeDotNetInstance(logger, methodIdentifier, dotNetObjectId, callId, null);
}
}
public static void DispatchEventTroughJSInterop(ILogger logger) =>
_dispatchEventThroughJSInterop(logger, null);
} }
} }
} }

View File

@ -18,7 +18,7 @@ namespace Microsoft.AspNetCore.Components.Server
public void Configure(CircuitOptions options) public void Configure(CircuitOptions options)
{ {
options.JSInteropDetailedErrors = Configuration.GetValue<bool>(WebHostDefaults.DetailedErrorsKey); options.DetailedErrors = Configuration.GetValue<bool>(WebHostDefaults.DetailedErrorsKey);
} }
} }
} }

View File

@ -2,7 +2,10 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System; using System;
using System.Runtime.ExceptionServices;
using System.Text.Json;
using Microsoft.AspNetCore.SignalR; using Microsoft.AspNetCore.SignalR;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Microsoft.JSInterop; using Microsoft.JSInterop;
@ -11,11 +14,13 @@ namespace Microsoft.AspNetCore.Components.Server.Circuits
internal class RemoteJSRuntime : JSRuntimeBase internal class RemoteJSRuntime : JSRuntimeBase
{ {
private readonly CircuitOptions _options; private readonly CircuitOptions _options;
private readonly ILogger<RemoteJSRuntime> _logger;
private CircuitClientProxy _clientProxy; private CircuitClientProxy _clientProxy;
public RemoteJSRuntime(IOptions<CircuitOptions> options) public RemoteJSRuntime(IOptions<CircuitOptions> options, ILogger<RemoteJSRuntime> logger)
{ {
_options = options.Value; _options = options.Value;
_logger = logger;
DefaultAsyncTimeout = _options.JSInteropDefaultCallTimeout; DefaultAsyncTimeout = _options.JSInteropDefaultCallTimeout;
} }
@ -24,17 +29,36 @@ namespace Microsoft.AspNetCore.Components.Server.Circuits
_clientProxy = clientProxy ?? throw new ArgumentNullException(nameof(clientProxy)); _clientProxy = clientProxy ?? throw new ArgumentNullException(nameof(clientProxy));
} }
protected override object OnDotNetInvocationException(Exception exception, string assemblyName, string methodIdentifier) protected override void EndInvokeDotNet(string callId, bool success, object resultOrError, string assemblyName, string methodIdentifier, long dotNetObjectId)
{ {
if (_options.JSInteropDetailedErrors) if (!success)
{ {
return base.OnDotNetInvocationException(exception, assemblyName, methodIdentifier); var actualException = resultOrError is Exception ex ? ex : resultOrError is ExceptionDispatchInfo edi ? edi.SourceException : resultOrError;
Log.InvokeDotNetMethodException(_logger, callId, assemblyName, methodIdentifier, dotNetObjectId, actualException as Exception);
if (_options.DetailedErrors)
{
EndInvokeDotNetCore(callId, success, actualException.ToString());
}
else
{
var message = $"There was an exception invoking '{methodIdentifier}' on assembly '{assemblyName}'. For more details turn on " +
$"detailed exceptions in '{typeof(CircuitOptions).Name}.{nameof(CircuitOptions.DetailedErrors)}'";
EndInvokeDotNetCore(callId, success, message);
}
} }
else
{
Log.InvokeDotNetMethodSuccess(_logger, callId, assemblyName, methodIdentifier, dotNetObjectId);
EndInvokeDotNetCore(callId, success, resultOrError);
}
}
var message = $"There was an exception invoking '{methodIdentifier}' on assembly '{assemblyName}'. For more details turn on " + private void EndInvokeDotNetCore(string callId, bool success, object resultOrError)
$"detailed exceptions in '{typeof(CircuitOptions).Name}.{nameof(CircuitOptions.JSInteropDetailedErrors)}'"; {
_clientProxy.SendAsync(
return message; "JS.EndInvokeDotNet",
JsonSerializer.Serialize(new[] { callId, success, resultOrError }, JsonSerializerOptionsProvider.Options));
} }
protected override void BeginInvokeJS(long asyncHandle, string identifier, string argsJson) protected override void BeginInvokeJS(long asyncHandle, string identifier, string argsJson)
@ -47,7 +71,71 @@ namespace Microsoft.AspNetCore.Components.Server.Circuits
"attempted during prerendering or while the client is disconnected."); "attempted during prerendering or while the client is disconnected.");
} }
Log.BeginInvokeJS(_logger, asyncHandle, identifier);
_clientProxy.SendAsync("JS.BeginInvokeJS", asyncHandle, identifier, argsJson); _clientProxy.SendAsync("JS.BeginInvokeJS", asyncHandle, identifier, argsJson);
} }
public static class Log
{
private static readonly Action<ILogger, long, string, Exception> _beginInvokeJS =
LoggerMessage.Define<long, string>(
LogLevel.Debug,
new EventId(1, "BeginInvokeJS"),
"Begin invoke JS interop '{AsyncHandle}': '{FunctionIdentifier}'");
private static readonly Action<ILogger, string, string, string, Exception> _invokeStaticDotNetMethodException =
LoggerMessage.Define<string, string, string>(
LogLevel.Debug,
new EventId(2, "InvokeDotNetMethodException"),
"There was an error invoking the static method '[{AssemblyName}]::{MethodIdentifier}' with callback id '{CallbackId}'.");
private static readonly Action<ILogger, string, long, string, Exception> _invokeInstanceDotNetMethodException =
LoggerMessage.Define<string, long, string>(
LogLevel.Debug,
new EventId(2, "InvokeDotNetMethodException"),
"There was an error invoking the instance method '{MethodIdentifier}' on reference '{DotNetObjectReference}' with callback id '{CallbackId}'.");
private static readonly Action<ILogger, string, string, string, Exception> _invokeStaticDotNetMethodSuccess =
LoggerMessage.Define<string, string, string>(
LogLevel.Debug,
new EventId(3, "InvokeDotNetMethodSuccess"),
"Invocation of '[{AssemblyName}]::{MethodIdentifier}' with callback id '{CallbackId}' completed successfully.");
private static readonly Action<ILogger, string, long, string, Exception> _invokeInstanceDotNetMethodSuccess =
LoggerMessage.Define<string, long, string>(
LogLevel.Debug,
new EventId(3, "InvokeDotNetMethodSuccess"),
"Invocation of '{MethodIdentifier}' on reference '{DotNetObjectReference}' with callback id '{CallbackId}' completed successfully.");
internal static void BeginInvokeJS(ILogger logger, long asyncHandle, string identifier) =>
_beginInvokeJS(logger, asyncHandle, identifier, null);
internal static void InvokeDotNetMethodException(ILogger logger, string callId, string assemblyName, string methodIdentifier, long dotNetObjectReference, Exception exception)
{
if (assemblyName != null)
{
_invokeStaticDotNetMethodException(logger, assemblyName, methodIdentifier, callId, exception);
}
else
{
_invokeInstanceDotNetMethodException(logger, methodIdentifier, dotNetObjectReference, callId, exception);
}
}
internal static void InvokeDotNetMethodSuccess(ILogger<RemoteJSRuntime> logger, string callId, string assemblyName, string methodIdentifier, long dotNetObjectId)
{
if (assemblyName != null)
{
_invokeStaticDotNetMethodSuccess(logger, assemblyName, methodIdentifier, callId, null);
}
else
{
_invokeInstanceDotNetMethodSuccess(logger, methodIdentifier, dotNetObjectId, callId, null);
}
}
}
} }
} }

View File

@ -7,8 +7,8 @@ using Microsoft.AspNetCore.Components.Server.Circuits;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Features; using Microsoft.AspNetCore.Http.Features;
using Microsoft.AspNetCore.SignalR; using Microsoft.AspNetCore.SignalR;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
namespace Microsoft.AspNetCore.Components.Server namespace Microsoft.AspNetCore.Components.Server
{ {
@ -20,17 +20,23 @@ namespace Microsoft.AspNetCore.Components.Server
private static readonly object CircuitKey = new object(); private static readonly object CircuitKey = new object();
private readonly CircuitFactory _circuitFactory; private readonly CircuitFactory _circuitFactory;
private readonly CircuitRegistry _circuitRegistry; private readonly CircuitRegistry _circuitRegistry;
private readonly CircuitOptions _options;
private readonly ILogger _logger; private readonly ILogger _logger;
/// <summary> /// <summary>
/// Intended for framework use only. Applications should not instantiate /// Intended for framework use only. Applications should not instantiate
/// this class directly. /// this class directly.
/// </summary> /// </summary>
public ComponentHub(IServiceProvider services, ILogger<ComponentHub> logger) public ComponentHub(
CircuitFactory circuitFactory,
CircuitRegistry circuitRegistry,
ILogger<ComponentHub> logger,
IOptions<CircuitOptions> options)
{ {
_circuitFactory = services.GetRequiredService<CircuitFactory>(); _circuitFactory = circuitFactory;
_circuitRegistry = services.GetRequiredService<CircuitRegistry>(); _circuitRegistry = circuitRegistry;
_logger = logger ?? throw new ArgumentNullException(nameof(logger)); _options = options.Value;
_logger = logger;
} }
/// <summary> /// <summary>
@ -123,7 +129,17 @@ namespace Microsoft.AspNetCore.Components.Server
/// </summary> /// </summary>
public void BeginInvokeDotNetFromJS(string callId, string assemblyName, string methodIdentifier, long dotNetObjectId, string argsJson) public void BeginInvokeDotNetFromJS(string callId, string assemblyName, string methodIdentifier, long dotNetObjectId, string argsJson)
{ {
EnsureCircuitHost().BeginInvokeDotNetFromJS(callId, assemblyName, methodIdentifier, dotNetObjectId, argsJson); _ = EnsureCircuitHost().BeginInvokeDotNetFromJS(callId, assemblyName, methodIdentifier, dotNetObjectId, argsJson);
}
public void EndInvokeJSFromDotNet(long asyncHandle, bool succeeded, string arguments)
{
_ = EnsureCircuitHost().EndInvokeJSFromDotNet(asyncHandle, succeeded, arguments);
}
public void DispatchBrowserEvent(string eventDescriptor, string eventArgs)
{
_ = EnsureCircuitHost().DispatchEvent(eventDescriptor, eventArgs);
} }
/// <summary> /// <summary>
@ -143,7 +159,17 @@ namespace Microsoft.AspNetCore.Components.Server
try try
{ {
Log.UnhandledExceptionInCircuit(_logger, circuitId, (Exception)e.ExceptionObject); Log.UnhandledExceptionInCircuit(_logger, circuitId, (Exception)e.ExceptionObject);
await circuitHost.Client.SendAsync("JS.Error", e.ExceptionObject); if (_options.DetailedErrors)
{
await circuitHost.Client.SendAsync("JS.Error", e.ExceptionObject.ToString());
}
else
{
var message = $"There was an unhandled exception on the current circuit, so this circuit will be terminated. For more details turn on " +
$"detailed exceptions in '{typeof(CircuitOptions).Name}.{nameof(CircuitOptions.DetailedErrors)}'";
await circuitHost.Client.SendAsync("JS.Error", message);
}
// We generally can't abort the connection here since this is an async // We generally can't abort the connection here since this is an async
// callback. The Hub has already been torn down. We'll rely on the // callback. The Hub has already been torn down. We'll rely on the

View File

@ -11,6 +11,7 @@ using Microsoft.AspNetCore.SignalR;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions; using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Logging.Testing;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Moq; using Moq;
@ -38,7 +39,7 @@ namespace Microsoft.AspNetCore.Components.Server.Circuits
serviceScope = serviceScope ?? Mock.Of<IServiceScope>(); serviceScope = serviceScope ?? Mock.Of<IServiceScope>();
clientProxy = clientProxy ?? new CircuitClientProxy(Mock.Of<IClientProxy>(), Guid.NewGuid().ToString()); clientProxy = clientProxy ?? new CircuitClientProxy(Mock.Of<IClientProxy>(), Guid.NewGuid().ToString());
var renderRegistry = new RendererRegistry(); var renderRegistry = new RendererRegistry();
var jsRuntime = new RemoteJSRuntime(Options.Create(new CircuitOptions())); var jsRuntime = new RemoteJSRuntime(Options.Create(new CircuitOptions()), Mock.Of<ILogger<RemoteJSRuntime>>());
if (remoteRenderer == null) if (remoteRenderer == null)
{ {

View File

@ -123,7 +123,7 @@ namespace Microsoft.AspNetCore.Components.Test.Helpers
Assert.True(string.IsNullOrWhiteSpace(frame.TextContent)); Assert.True(string.IsNullOrWhiteSpace(frame.TextContent));
} }
public static void ElementReferenceCapture(RenderTreeFrame frame, Action<ElementRef> action, int? sequence = null) public static void ElementReferenceCapture(RenderTreeFrame frame, Action<ElementReference> action, int? sequence = null)
{ {
Assert.Equal(RenderTreeFrameType.ElementReferenceCapture, frame.FrameType); Assert.Equal(RenderTreeFrameType.ElementReferenceCapture, frame.FrameType);
Assert.Same(action, frame.ElementReferenceCaptureAction); Assert.Same(action, frame.ElementReferenceCaptureAction);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -13,7 +13,7 @@
"devDependencies": { "devDependencies": {
"@aspnet/signalr": "link:../../SignalR/clients/ts/signalr", "@aspnet/signalr": "link:../../SignalR/clients/ts/signalr",
"@aspnet/signalr-protocol-msgpack": "link:../../SignalR/clients/ts/signalr-protocol-msgpack", "@aspnet/signalr-protocol-msgpack": "link:../../SignalR/clients/ts/signalr-protocol-msgpack",
"@dotnet/jsinterop": "3.0.0-preview6.19280.1", "@dotnet/jsinterop": "https://dotnet.myget.org/F/aspnetcore-dev/npm/@dotnet/jsinterop/-/@dotnet/jsinterop-3.0.0-preview8.19367.2.tgz",
"@types/emscripten": "0.0.31", "@types/emscripten": "0.0.31",
"@types/jest": "^24.0.6", "@types/jest": "^24.0.6",
"@types/jsdom": "11.0.6", "@types/jsdom": "11.0.6",

View File

@ -9,6 +9,7 @@ import RenderQueue from './Platform/Circuits/RenderQueue';
import { ConsoleLogger } from './Platform/Logging/Loggers'; import { ConsoleLogger } from './Platform/Logging/Loggers';
import { LogLevel, ILogger } from './Platform/Logging/ILogger'; import { LogLevel, ILogger } from './Platform/Logging/ILogger';
import { discoverPrerenderedCircuits, startCircuit } from './Platform/Circuits/CircuitManager'; import { discoverPrerenderedCircuits, startCircuit } from './Platform/Circuits/CircuitManager';
import { setEventDispatcher } from './Rendering/RendererEventDispatcher';
type SignalRBuilder = (builder: signalR.HubConnectionBuilder) => void; type SignalRBuilder = (builder: signalR.HubConnectionBuilder) => void;
@ -109,7 +110,12 @@ async function initializeConnection(options: Required<BlazorOptions>, circuitHan
const connection = connectionBuilder.build(); const connection = connectionBuilder.build();
setEventDispatcher((descriptor, args) => {
return connection.send('DispatchBrowserEvent', JSON.stringify(descriptor), JSON.stringify(args));
});
connection.on('JS.BeginInvokeJS', DotNet.jsCallDispatcher.beginInvokeJSFromDotNet); connection.on('JS.BeginInvokeJS', DotNet.jsCallDispatcher.beginInvokeJSFromDotNet);
connection.on('JS.EndInvokeDotNet', (args: string) => DotNet.jsCallDispatcher.endInvokeDotNetFromJS(...(JSON.parse(args) as [string, boolean, unknown])));
connection.on('JS.RenderBatch', (browserRendererId: number, batchId: number, batchData: Uint8Array) => { connection.on('JS.RenderBatch', (browserRendererId: number, batchId: number, batchData: Uint8Array) => {
logger.log(LogLevel.Debug, `Received render batch for ${browserRendererId} with id ${batchId} and ${batchData.byteLength} bytes.`); logger.log(LogLevel.Debug, `Received render batch for ${browserRendererId} with id ${batchId} and ${batchData.byteLength} bytes.`);
@ -130,9 +136,12 @@ async function initializeConnection(options: Required<BlazorOptions>, circuitHan
} }
DotNet.attachDispatcher({ DotNet.attachDispatcher({
beginInvokeDotNetFromJS: (callId, assemblyName, methodIdentifier, dotNetObjectId, argsJson) => { beginInvokeDotNetFromJS: (callId, assemblyName, methodIdentifier, dotNetObjectId, argsJson): void => {
connection.send('BeginInvokeDotNetFromJS', callId ? callId.toString() : null, assemblyName, methodIdentifier, dotNetObjectId || 0, argsJson); connection.send('BeginInvokeDotNetFromJS', callId ? callId.toString() : null, assemblyName, methodIdentifier, dotNetObjectId || 0, argsJson);
}, },
endInvokeJSFromDotNet: (asyncHandle, succeeded, argsJson): void => {
connection.send('EndInvokeJSFromDotNet', asyncHandle, succeeded, argsJson);
},
}); });
return connection; return connection;

View File

@ -7,16 +7,19 @@ import { renderBatch } from './Rendering/Renderer';
import { SharedMemoryRenderBatch } from './Rendering/RenderBatch/SharedMemoryRenderBatch'; import { SharedMemoryRenderBatch } from './Rendering/RenderBatch/SharedMemoryRenderBatch';
import { Pointer } from './Platform/Platform'; import { Pointer } from './Platform/Platform';
import { fetchBootConfigAsync, loadEmbeddedResourcesAsync, shouldAutoStart } from './BootCommon'; import { fetchBootConfigAsync, loadEmbeddedResourcesAsync, shouldAutoStart } from './BootCommon';
import { setEventDispatcher } from './Rendering/RendererEventDispatcher';
let started = false; let started = false;
async function boot(options?: any) { async function boot(options?: any): Promise<void> {
if (started) { if (started) {
throw new Error('Blazor has already started.'); throw new Error('Blazor has already started.');
} }
started = true; started = true;
setEventDispatcher((eventDescriptor, eventArgs) => DotNet.invokeMethodAsync('Microsoft.AspNetCore.Components.Web', 'DispatchEvent', eventDescriptor, JSON.stringify(eventArgs)));
// Configure environment for execution under Mono WebAssembly with shared-memory rendering // Configure environment for execution under Mono WebAssembly with shared-memory rendering
const platform = Environment.setPlatform(monoPlatform); const platform = Environment.setPlatform(monoPlatform);
window['Blazor'].platform = platform; window['Blazor'].platform = platform;
@ -54,4 +57,4 @@ async function boot(options?: any) {
window['Blazor'].start = boot; window['Blazor'].start = boot;
if (shouldAutoStart()) { if (shouldAutoStart()) {
boot(); boot();
} }

View File

@ -281,7 +281,7 @@ function createEmscriptenModuleInstance(loadAssemblyUrls: string[], onReady: ()
}); });
module.postRun.push(() => { module.postRun.push(() => {
MONO.mono_wasm_setenv("MONO_URI_DOTNETRELATIVEORABSOLUTE","true"); MONO.mono_wasm_setenv("MONO_URI_DOTNETRELATIVEORABSOLUTE", "true");
const load_runtime = Module.cwrap('mono_wasm_load_runtime', null, ['string', 'number']); const load_runtime = Module.cwrap('mono_wasm_load_runtime', null, ['string', 'number']);
load_runtime(appBinDirName, hasDebuggingEnabled() ? 1 : 0); load_runtime(appBinDirName, hasDebuggingEnabled() ? 1 : 0);
MONO.mono_wasm_runtime_is_ready = true; MONO.mono_wasm_runtime_is_ready = true;
@ -298,7 +298,7 @@ function toAbsoluteUrl(possiblyRelativeUrl: string) {
return anchorTagForAbsoluteUrlConversions.href; return anchorTagForAbsoluteUrlConversions.href;
} }
function asyncLoad(url) { function asyncLoad(url: string) {
return new Promise<Uint8Array>((resolve, reject) => { return new Promise<Uint8Array>((resolve, reject) => {
const xhr = new XMLHttpRequest(); const xhr = new XMLHttpRequest();
xhr.open('GET', url, /* async: */ true); xhr.open('GET', url, /* async: */ true);
@ -320,26 +320,36 @@ function getArrayDataPointer<T>(array: System_Array<T>): number {
return <number><any>array + 12; // First byte from here is length, then following bytes are entries return <number><any>array + 12; // First byte from here is length, then following bytes are entries
} }
function attachInteropInvoker() { function attachInteropInvoker(): void {
const dotNetDispatcherInvokeMethodHandle = findMethod('Mono.WebAssembly.Interop', 'Mono.WebAssembly.Interop', 'MonoWebAssemblyJSRuntime', 'InvokeDotNet'); const dotNetDispatcherInvokeMethodHandle = findMethod('Mono.WebAssembly.Interop', 'Mono.WebAssembly.Interop', 'MonoWebAssemblyJSRuntime', 'InvokeDotNet');
const dotNetDispatcherBeginInvokeMethodHandle = findMethod('Mono.WebAssembly.Interop', 'Mono.WebAssembly.Interop', 'MonoWebAssemblyJSRuntime', 'BeginInvokeDotNet'); const dotNetDispatcherBeginInvokeMethodHandle = findMethod('Mono.WebAssembly.Interop', 'Mono.WebAssembly.Interop', 'MonoWebAssemblyJSRuntime', 'BeginInvokeDotNet');
const dotNetDispatcherEndInvokeJSMethodHandle = findMethod('Mono.WebAssembly.Interop', 'Mono.WebAssembly.Interop', 'MonoWebAssemblyJSRuntime', 'EndInvokeJS');
DotNet.attachDispatcher({ DotNet.attachDispatcher({
beginInvokeDotNetFromJS: (callId, assemblyName, methodIdentifier, dotNetObjectId, argsJson) => { beginInvokeDotNetFromJS: (callId: number, assemblyName: string | null, methodIdentifier: string, dotNetObjectId: any | null, argsJson: string): void => {
if (!dotNetObjectId && !assemblyName) {
throw new Error('Either assemblyName or dotNetObjectId must have a non null value.');
}
// As a current limitation, we can only pass 4 args. Fortunately we only need one of // As a current limitation, we can only pass 4 args. Fortunately we only need one of
// 'assemblyName' or 'dotNetObjectId', so overload them in a single slot // 'assemblyName' or 'dotNetObjectId', so overload them in a single slot
const assemblyNameOrDotNetObjectId = dotNetObjectId const assemblyNameOrDotNetObjectId: string = dotNetObjectId
? dotNetObjectId.toString() ? dotNetObjectId.toString()
: assemblyName; : assemblyName;
monoPlatform.callMethod(dotNetDispatcherBeginInvokeMethodHandle, null, [ monoPlatform.callMethod(dotNetDispatcherBeginInvokeMethodHandle, null, [
callId ? monoPlatform.toDotNetString(callId.toString()) : null, callId ? monoPlatform.toDotNetString(callId.toString()) : null,
monoPlatform.toDotNetString(assemblyNameOrDotNetObjectId!), monoPlatform.toDotNetString(assemblyNameOrDotNetObjectId),
monoPlatform.toDotNetString(methodIdentifier), monoPlatform.toDotNetString(methodIdentifier),
monoPlatform.toDotNetString(argsJson), monoPlatform.toDotNetString(argsJson),
]); ]);
}, },
endInvokeJSFromDotNet: (asyncHandle, succeeded, serializedArgs): void => {
monoPlatform.callMethod(
dotNetDispatcherEndInvokeJSMethodHandle,
null,
[monoPlatform.toDotNetString(serializedArgs)]
);
},
invokeDotNetFromJS: (assemblyName, methodIdentifier, dotNetObjectId, argsJson) => { invokeDotNetFromJS: (assemblyName, methodIdentifier, dotNetObjectId, argsJson) => {
const resultJsonStringPtr = monoPlatform.callMethod(dotNetDispatcherInvokeMethodHandle, null, [ const resultJsonStringPtr = monoPlatform.callMethod(dotNetDispatcherInvokeMethodHandle, null, [
assemblyName ? monoPlatform.toDotNetString(assemblyName) : null, assemblyName ? monoPlatform.toDotNetString(assemblyName) : null,

View File

@ -1,9 +1,10 @@
import { RenderBatch, ArrayBuilderSegment, RenderTreeEdit, RenderTreeFrame, EditType, FrameType, ArrayValues } from './RenderBatch/RenderBatch'; import { RenderBatch, ArrayBuilderSegment, RenderTreeEdit, RenderTreeFrame, EditType, FrameType, ArrayValues } from './RenderBatch/RenderBatch';
import { EventDelegator } from './EventDelegator'; import { EventDelegator } from './EventDelegator';
import { EventForDotNet, UIEventArgs } from './EventForDotNet'; import { EventForDotNet, UIEventArgs, EventArgsType } from './EventForDotNet';
import { LogicalElement, PermutationListEntry, toLogicalElement, insertLogicalChild, removeLogicalChild, getLogicalParent, getLogicalChild, createAndInsertLogicalContainer, isSvgElement, getLogicalChildrenArray, getLogicalSiblingEnd, permuteLogicalChildren, getClosestDomElement } from './LogicalElements'; import { LogicalElement, PermutationListEntry, toLogicalElement, insertLogicalChild, removeLogicalChild, getLogicalParent, getLogicalChild, createAndInsertLogicalContainer, isSvgElement, getLogicalChildrenArray, getLogicalSiblingEnd, permuteLogicalChildren, getClosestDomElement } from './LogicalElements';
import { applyCaptureIdToElement } from './ElementReferenceCapture'; import { applyCaptureIdToElement } from './ElementReferenceCapture';
import { EventFieldInfo } from './EventFieldInfo'; import { EventFieldInfo } from './EventFieldInfo';
import { dispatchEvent } from './RendererEventDispatcher';
const selectValuePropname = '_blazorSelectValue'; const selectValuePropname = '_blazorSelectValue';
const sharedTemplateElemForParsing = document.createElement('template'); const sharedTemplateElemForParsing = document.createElement('template');
const sharedSvgElemForParsing = document.createElementNS('http://www.w3.org/2000/svg', 'g'); const sharedSvgElemForParsing = document.createElementNS('http://www.w3.org/2000/svg', 'g');
@ -398,6 +399,13 @@ export interface ComponentDescriptor {
end: Node; end: Node;
} }
export interface EventDescriptor {
browserRendererId: number;
eventHandlerId: number;
eventArgsType: EventArgsType;
eventFieldInfo: EventFieldInfo | null;
}
function parseMarkup(markup: string, isSvg: boolean) { function parseMarkup(markup: string, isSvg: boolean) {
if (isSvg) { if (isSvg) {
sharedSvgElemForParsing.innerHTML = markup || ' '; sharedSvgElemForParsing.innerHTML = markup || ' ';
@ -423,7 +431,13 @@ function countDescendantFrames(batch: RenderBatch, frame: RenderTreeFrame): numb
} }
} }
function raiseEvent(event: Event, browserRendererId: number, eventHandlerId: number, eventArgs: EventForDotNet<UIEventArgs>, eventFieldInfo: EventFieldInfo | null) { function raiseEvent(
event: Event,
browserRendererId: number,
eventHandlerId: number,
eventArgs: EventForDotNet<UIEventArgs>,
eventFieldInfo: EventFieldInfo | null
): void {
if (preventDefaultEvents[event.type]) { if (preventDefaultEvents[event.type]) {
event.preventDefault(); event.preventDefault();
} }
@ -435,12 +449,7 @@ function raiseEvent(event: Event, browserRendererId: number, eventHandlerId: num
eventFieldInfo: eventFieldInfo, eventFieldInfo: eventFieldInfo,
}; };
return DotNet.invokeMethodAsync( dispatchEvent(eventDescriptor, eventArgs.data);
'Microsoft.AspNetCore.Components.Web',
'DispatchEvent',
eventDescriptor,
JSON.stringify(eventArgs.data)
);
} }
function clearElement(element: Element) { function clearElement(element: Element) {
@ -452,7 +461,7 @@ function clearElement(element: Element) {
function clearBetween(start: Node, end: Node): void { function clearBetween(start: Node, end: Node): void {
const logicalParent = getLogicalParent(start as unknown as LogicalElement); const logicalParent = getLogicalParent(start as unknown as LogicalElement);
if (!logicalParent){ if (!logicalParent) {
throw new Error("Can't clear between nodes. The start node does not have a logical parent."); throw new Error("Can't clear between nodes. The start node does not have a logical parent.");
} }
const children = getLogicalChildrenArray(logicalParent); const children = getLogicalChildrenArray(logicalParent);

View File

@ -210,7 +210,7 @@ function isCheckbox(element: Element | null) {
// The following interfaces must be kept in sync with the UIEventArgs C# classes // The following interfaces must be kept in sync with the UIEventArgs C# classes
type EventArgsType = 'change' | 'clipboard' | 'drag' | 'error' | 'focus' | 'keyboard' | 'mouse' | 'pointer' | 'progress' | 'touch' | 'unknown' | 'wheel'; export type EventArgsType = 'change' | 'clipboard' | 'drag' | 'error' | 'focus' | 'keyboard' | 'mouse' | 'pointer' | 'progress' | 'touch' | 'unknown' | 'wheel';
export interface UIEventArgs { export interface UIEventArgs {
type: string; type: string;

View File

@ -1,6 +1,6 @@
/* eslint-disable @typescript-eslint/camelcase */ /* eslint-disable @typescript-eslint/camelcase */
import { System_Object, System_String, System_Array, MethodHandle, Pointer } from '../Platform/Platform'; import '../Platform/Platform';
import { platform } from '../Environment'; import '../Environment';
import { RenderBatch } from './RenderBatch/RenderBatch'; import { RenderBatch } from './RenderBatch/RenderBatch';
import { BrowserRenderer } from './BrowserRenderer'; import { BrowserRenderer } from './BrowserRenderer';
import { toLogicalElement, LogicalElement } from './LogicalElements'; import { toLogicalElement, LogicalElement } from './LogicalElements';

View File

@ -0,0 +1,18 @@
import { EventDescriptor } from './BrowserRenderer';
import { UIEventArgs } from './EventForDotNet';
type EventDispatcher = (eventDescriptor: EventDescriptor, eventArgs: UIEventArgs) => void;
let eventDispatcherInstance: EventDispatcher;
export function dispatchEvent(eventDescriptor: EventDescriptor, eventArgs: UIEventArgs): void {
if (!eventDispatcherInstance) {
throw new Error('eventDispatcher not initialized. Call \'setEventDispatcher\' to configure it.');
}
return eventDispatcherInstance(eventDescriptor, eventArgs);
}
export function setEventDispatcher(newDispatcher: (eventDescriptor: EventDescriptor, eventArgs: UIEventArgs) => Promise<void>): void {
eventDispatcherInstance = newDispatcher;
}

View File

@ -139,10 +139,9 @@
lodash "^4.17.11" lodash "^4.17.11"
to-fast-properties "^2.0.0" to-fast-properties "^2.0.0"
"@dotnet/jsinterop@3.0.0-preview6.19280.1": "@dotnet/jsinterop@https://dotnet.myget.org/F/aspnetcore-dev/npm/@dotnet/jsinterop/-/@dotnet/jsinterop-3.0.0-preview8.19367.2.tgz":
version "3.0.0-preview6.19280.1" version "3.0.0-preview8.19367.2"
resolved "https://dotnet.myget.org/F/aspnetcore-dev/npm/@dotnet/jsinterop/-/@dotnet/jsinterop-3.0.0-preview6.19280.1.tgz#4c991132f33157de93bc3b6db93cffc9e964b241" resolved "https://dotnet.myget.org/F/aspnetcore-dev/npm/@dotnet/jsinterop/-/@dotnet/jsinterop-3.0.0-preview8.19367.2.tgz#885d87c9406ad0bbce878ff041d50342d03b2c86"
integrity sha1-TJkRMvMxV96TvDttuTz/yelkskE=
"@microsoft/signalr@link:../../SignalR/clients/ts/signalr": "@microsoft/signalr@link:../../SignalR/clients/ts/signalr":
version "0.0.0" version "0.0.0"

View File

@ -18,8 +18,7 @@ namespace Microsoft.AspNetCore.Components.Web
/// For framework use only. /// For framework use only.
/// </summary> /// </summary>
[JSInvokable(nameof(DispatchEvent))] [JSInvokable(nameof(DispatchEvent))]
public static Task DispatchEvent( public static Task DispatchEvent(BrowserEventDescriptor eventDescriptor, string eventArgsJson)
BrowserEventDescriptor eventDescriptor, string eventArgsJson)
{ {
InterpretEventDescriptor(eventDescriptor); InterpretEventDescriptor(eventDescriptor);
var eventArgs = ParseEventArgsJson(eventDescriptor.EventArgsType, eventArgsJson); var eventArgs = ParseEventArgsJson(eventDescriptor.EventArgsType, eventArgsJson);

View File

@ -1,4 +1,4 @@
// Copyright (c) .NET Foundation. All rights reserved. // Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
@ -9,22 +9,22 @@ namespace Microsoft.AspNetCore.Components.E2ETest.Infrastructure.ServerFixtures
{ {
public abstract class WebHostServerFixture : ServerFixture public abstract class WebHostServerFixture : ServerFixture
{ {
private IWebHost _host;
protected override string StartAndGetRootUri() protected override string StartAndGetRootUri()
{ {
_host = CreateWebHost(); Host = CreateWebHost();
RunInBackgroundThread(_host.Start); RunInBackgroundThread(Host.Start);
return _host.ServerFeatures return Host.ServerFeatures
.Get<IServerAddressesFeature>() .Get<IServerAddressesFeature>()
.Addresses.Single(); .Addresses.Single();
} }
public IWebHost Host { get; set; }
public override void Dispose() public override void Dispose()
{ {
// This can be null if creating the webhost throws, we don't want to throw here and hide // This can be null if creating the webhost throws, we don't want to throw here and hide
// the original exception. // the original exception.
_host?.StopAsync(); Host?.StopAsync();
} }
protected abstract IWebHost CreateWebHost(); protected abstract IWebHost CreateWebHost();

View File

@ -8,6 +8,11 @@ using System.Text.Json;
using System.Threading.Tasks; using System.Threading.Tasks;
using Ignitor; using Ignitor;
using Microsoft.AspNetCore.Components.E2ETest.Infrastructure.ServerFixtures; using Microsoft.AspNetCore.Components.E2ETest.Infrastructure.ServerFixtures;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.SignalR.Client;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Testing;
using Xunit; using Xunit;
namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
@ -31,9 +36,8 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
// Arrange // Arrange
var expectedError = "[\"1\"," + var expectedError = "[\"1\"," +
"false," + "false," +
"\"There was an exception invoking \\u0027WriteAllText\\u0027 on assembly \\u0027System.IO.FileSystem\\u0027. For more details turn on detailed exceptions in \\u0027CircuitOptions.JSInteropDetailedErrors\\u0027\"]"; "\"There was an exception invoking \\u0027WriteAllText\\u0027 on assembly \\u0027System.IO.FileSystem\\u0027. For more details turn on detailed exceptions in \\u0027CircuitOptions.DetailedErrors\\u0027\"]";
var (_, dotNetCompletions, batches) = ConfigureClient();
var (interopCalls, batches) = ConfigureClient();
await GoToTestComponent(batches); await GoToTestComponent(batches);
// Act // Act
@ -45,7 +49,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
JsonSerializer.Serialize(new[] { ".\\log.txt", "log" })); JsonSerializer.Serialize(new[] { ".\\log.txt", "log" }));
// Assert // Assert
Assert.Single(interopCalls, (0, "DotNet.jsCallDispatcher.endInvokeDotNetFromJS", expectedError)); Assert.Single(dotNetCompletions, expectedError);
await ValidateClientKeepsWorking(Client, batches); await ValidateClientKeepsWorking(Client, batches);
} }
@ -56,9 +60,8 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
// Arrange // Arrange
var expectedError = "[\"1\"," + var expectedError = "[\"1\"," +
"false," + "false," +
"\"There was an exception invoking \\u0027MadeUpMethod\\u0027 on assembly \\u0027BasicTestApp\\u0027. For more details turn on detailed exceptions in \\u0027CircuitOptions.JSInteropDetailedErrors\\u0027\"]"; "\"There was an exception invoking \\u0027MadeUpMethod\\u0027 on assembly \\u0027BasicTestApp\\u0027. For more details turn on detailed exceptions in \\u0027CircuitOptions.DetailedErrors\\u0027\"]";
var (_, dotNetCompletions, batches) = ConfigureClient();
var (interopCalls, batches) = ConfigureClient();
await GoToTestComponent(batches); await GoToTestComponent(batches);
// Act // Act
@ -70,7 +73,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
JsonSerializer.Serialize(new[] { ".\\log.txt", "log" })); JsonSerializer.Serialize(new[] { ".\\log.txt", "log" }));
// Assert // Assert
Assert.Single(interopCalls, (0, "DotNet.jsCallDispatcher.endInvokeDotNetFromJS", expectedError)); Assert.Single(dotNetCompletions, expectedError);
await ValidateClientKeepsWorking(Client, batches); await ValidateClientKeepsWorking(Client, batches);
} }
@ -80,9 +83,8 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
// Arrange // Arrange
var expectedError = "[\"1\"," + var expectedError = "[\"1\"," +
"false," + "false," +
"\"There was an exception invoking \\u0027NotifyLocationChanged\\u0027 on assembly \\u0027Microsoft.AspNetCore.Components.Server\\u0027. For more details turn on detailed exceptions in \\u0027CircuitOptions.JSInteropDetailedErrors\\u0027\"]"; "\"There was an exception invoking \\u0027NotifyLocationChanged\\u0027 on assembly \\u0027Microsoft.AspNetCore.Components.Server\\u0027. For more details turn on detailed exceptions in \\u0027CircuitOptions.DetailedErrors\\u0027\"]";
var (_, dotNetCompletions, batches) = ConfigureClient();
var (interopCalls, batches) = ConfigureClient();
await GoToTestComponent(batches); await GoToTestComponent(batches);
// Act // Act
@ -94,7 +96,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
JsonSerializer.Serialize(new[] { _serverFixture.RootUri })); JsonSerializer.Serialize(new[] { _serverFixture.RootUri }));
// Assert // Assert
Assert.Single(interopCalls, (0, "DotNet.jsCallDispatcher.endInvokeDotNetFromJS", expectedError)); Assert.Single(dotNetCompletions, expectedError);
await ValidateClientKeepsWorking(Client, batches); await ValidateClientKeepsWorking(Client, batches);
} }
@ -105,9 +107,8 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
// Arrange // Arrange
var expectedError = "[\"1\"," + var expectedError = "[\"1\"," +
"false," + "false," +
"\"There was an exception invoking \\u0027NotifyLocationChanged\\u0027 on assembly \\u0027\\u0027. For more details turn on detailed exceptions in \\u0027CircuitOptions.JSInteropDetailedErrors\\u0027\"]"; "\"There was an exception invoking \\u0027NotifyLocationChanged\\u0027 on assembly \\u0027\\u0027. For more details turn on detailed exceptions in \\u0027CircuitOptions.DetailedErrors\\u0027\"]";
var (_, dotNetCompletions, batches) = ConfigureClient();
var (interopCalls, batches) = ConfigureClient();
await GoToTestComponent(batches); await GoToTestComponent(batches);
// Act // Act
@ -119,7 +120,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
JsonSerializer.Serialize(new object[] { _serverFixture.RootUri + "counter", false })); JsonSerializer.Serialize(new object[] { _serverFixture.RootUri + "counter", false }));
// Assert // Assert
Assert.Single(interopCalls, (0, "DotNet.jsCallDispatcher.endInvokeDotNetFromJS", expectedError)); Assert.Single(dotNetCompletions, expectedError);
await ValidateClientKeepsWorking(Client, batches); await ValidateClientKeepsWorking(Client, batches);
} }
@ -130,9 +131,8 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
// Arrange // Arrange
var expectedError = "[\"1\"," + var expectedError = "[\"1\"," +
"false," + "false," +
"\"There was an exception invoking \\u0027\\u0027 on assembly \\u0027Microsoft.AspNetCore.Components.Server\\u0027. For more details turn on detailed exceptions in \\u0027CircuitOptions.JSInteropDetailedErrors\\u0027\"]"; "\"There was an exception invoking \\u0027\\u0027 on assembly \\u0027Microsoft.AspNetCore.Components.Server\\u0027. For more details turn on detailed exceptions in \\u0027CircuitOptions.DetailedErrors\\u0027\"]";
var (_, dotNetCompletions, batches) = ConfigureClient();
var (interopCalls, batches) = ConfigureClient();
await GoToTestComponent(batches); await GoToTestComponent(batches);
// Act // Act
@ -144,7 +144,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
JsonSerializer.Serialize(new object[] { _serverFixture.RootUri + "counter", false })); JsonSerializer.Serialize(new object[] { _serverFixture.RootUri + "counter", false }));
// Assert // Assert
Assert.Single(interopCalls, (0, "DotNet.jsCallDispatcher.endInvokeDotNetFromJS", expectedError)); Assert.Single(dotNetCompletions, expectedError);
await ValidateClientKeepsWorking(Client, batches); await ValidateClientKeepsWorking(Client, batches);
} }
@ -156,8 +156,8 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
var expectedDotNetObjectRef = "[\"1\",true,{\"__dotNetObject\":1}]"; var expectedDotNetObjectRef = "[\"1\",true,{\"__dotNetObject\":1}]";
var expectedError = "[\"1\"," + var expectedError = "[\"1\"," +
"false," + "false," +
"\"There was an exception invoking \\u0027Reverse\\u0027 on assembly \\u0027\\u0027. For more details turn on detailed exceptions in \\u0027CircuitOptions.JSInteropDetailedErrors\\u0027\"]"; "\"There was an exception invoking \\u0027Reverse\\u0027 on assembly \\u0027\\u0027. For more details turn on detailed exceptions in \\u0027CircuitOptions.DetailedErrors\\u0027\"]";
var (interopCalls, batches) = ConfigureClient(); var (_, dotNetCompletions, batches) = ConfigureClient();
await GoToTestComponent(batches); await GoToTestComponent(batches);
// Act // Act
@ -168,7 +168,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
null, null,
JsonSerializer.Serialize(Array.Empty<object>())); JsonSerializer.Serialize(Array.Empty<object>()));
Assert.Single(interopCalls, (0, "DotNet.jsCallDispatcher.endInvokeDotNetFromJS", expectedDotNetObjectRef)); Assert.Single(dotNetCompletions, expectedDotNetObjectRef);
await Client.InvokeDotNetMethod( await Client.InvokeDotNetMethod(
"1", "1",
@ -178,7 +178,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
JsonSerializer.Serialize(Array.Empty<object>())); JsonSerializer.Serialize(Array.Empty<object>()));
// Assert // Assert
Assert.Single(interopCalls, (0, "DotNet.jsCallDispatcher.endInvokeDotNetFromJS", "[\"1\",true,\"tnatropmI\"]")); Assert.Single(dotNetCompletions, "[\"1\",true,\"tnatropmI\"]");
await Client.InvokeDotNetMethod( await Client.InvokeDotNetMethod(
"1", "1",
@ -186,8 +186,8 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
"Reverse", "Reverse",
3, // non existing ref 3, // non existing ref
JsonSerializer.Serialize(Array.Empty<object>())); JsonSerializer.Serialize(Array.Empty<object>()));
Assert.Single(interopCalls, (0, "DotNet.jsCallDispatcher.endInvokeDotNetFromJS", expectedError)); Assert.Single(dotNetCompletions, expectedError);
await ValidateClientKeepsWorking(Client, batches); await ValidateClientKeepsWorking(Client, batches);
} }
@ -199,9 +199,9 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
var expectedImportantDotNetObjectRef = "[\"1\",true,{\"__dotNetObject\":1}]"; var expectedImportantDotNetObjectRef = "[\"1\",true,{\"__dotNetObject\":1}]";
var expectedError = "[\"1\"," + var expectedError = "[\"1\"," +
"false," + "false," +
"\"There was an exception invoking \\u0027ReceiveTrivial\\u0027 on assembly \\u0027BasicTestApp\\u0027. For more details turn on detailed exceptions in \\u0027CircuitOptions.JSInteropDetailedErrors\\u0027\"]"; "\"There was an exception invoking \\u0027ReceiveTrivial\\u0027 on assembly \\u0027BasicTestApp\\u0027. For more details turn on detailed exceptions in \\u0027CircuitOptions.DetailedErrors\\u0027\"]";
var (interopCalls, batches) = ConfigureClient(); var (interopCalls, dotNetCompletions, batches) = ConfigureClient();
await GoToTestComponent(batches); await GoToTestComponent(batches);
await Client.InvokeDotNetMethod( await Client.InvokeDotNetMethod(
@ -211,7 +211,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
null, null,
JsonSerializer.Serialize(Array.Empty<object>())); JsonSerializer.Serialize(Array.Empty<object>()));
Assert.Single(interopCalls, (0, "DotNet.jsCallDispatcher.endInvokeDotNetFromJS", expectedImportantDotNetObjectRef)); Assert.Single(dotNetCompletions, expectedImportantDotNetObjectRef);
// Act // Act
await Client.InvokeDotNetMethod( await Client.InvokeDotNetMethod(
@ -222,7 +222,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
JsonSerializer.Serialize(new object[] { new { __dotNetObject = 1 } })); JsonSerializer.Serialize(new object[] { new { __dotNetObject = 1 } }));
// Assert // Assert
Assert.Single(interopCalls, (0, "DotNet.jsCallDispatcher.endInvokeDotNetFromJS", expectedError)); Assert.Single(dotNetCompletions, expectedError);
await ValidateClientKeepsWorking(Client, batches); await ValidateClientKeepsWorking(Client, batches);
} }
@ -233,37 +233,95 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
// Arrange // Arrange
var expectedError = "An exception occurred executing JS interop: The JSON value could not be converted to System.Int32. Path: $ | LineNumber: 0 | BytePositionInLine: 3.. See InnerException for more details."; var expectedError = "An exception occurred executing JS interop: The JSON value could not be converted to System.Int32. Path: $ | LineNumber: 0 | BytePositionInLine: 3.. See InnerException for more details.";
var (interopCalls, batches) = ConfigureClient(); var (interopCalls, dotNetCompletions, batches) = ConfigureClient();
await GoToTestComponent(batches); await GoToTestComponent(batches);
// Act // Act
await Client.ClickAsync("triggerjsinterop"); await Client.ClickAsync("triggerjsinterop-malformed");
Assert.Single(interopCalls, (4, "sendMalformedCallbackReturn", (string)null)); Assert.Single(interopCalls, (4, "sendMalformedCallbackReturn", (string)null));
await Client.InvokeDotNetMethod( await Client.HubConnection.InvokeAsync(
0, "EndInvokeJSFromDotNet",
"Microsoft.JSInterop", 4,
"DotNetDispatcher.EndInvoke", true,
null,
"[4, true, \"{\"]"); "[4, true, \"{\"]");
var text = Assert.Single( var text = Assert.Single(
Client.FindElementById("errormessage").Children.OfType<TextNode>(), Client.FindElementById("errormessage-malformed").Children.OfType<TextNode>(),
e => expectedError == e.TextContent); e => expectedError == e.TextContent);
await ValidateClientKeepsWorking(Client, batches); await ValidateClientKeepsWorking(Client, batches);
} }
[Fact]
public async Task LogsJSInteropCompletionsCallbacksAndContinuesWorkingInAllSituations()
{
// Arrange
var (interopCalls, dotNetCompletions, batches) = ConfigureClient();
await GoToTestComponent(batches);
var sink = _serverFixture.Host.Services.GetRequiredService<TestSink>();
var logEvents = new List<(LogLevel logLevel, string)>();
sink.MessageLogged += (wc) => logEvents.Add((wc.LogLevel, wc.EventId.Name));
// Act
await Client.ClickAsync("triggerjsinterop-malformed");
Assert.Single(interopCalls, (4, "sendMalformedCallbackReturn", (string)null));
await Client.HubConnection.InvokeAsync(
"EndInvokeJSFromDotNet",
4,
true,
"[4, true, }");
// A completely malformed payload like the one above never gets to the application.
Assert.Single(
Client.FindElementById("errormessage-malformed").Children.OfType<TextNode>(),
e => "" == e.TextContent);
Assert.Contains((LogLevel.Debug, "EndInvokeDispatchException"), logEvents);
await Client.ClickAsync("triggerjsinterop-success");
await Client.HubConnection.InvokeAsync(
"EndInvokeJSFromDotNet",
5,
true,
"[5, true, null]");
Assert.Single(
Client.FindElementById("errormessage-success").Children.OfType<TextNode>(),
e => "" == e.TextContent);
Assert.Contains((LogLevel.Debug, "EndInvokeJSSucceeded"), logEvents);
await Client.ClickAsync("triggerjsinterop-failure");
await Client.HubConnection.InvokeAsync(
"EndInvokeJSFromDotNet",
6,
false,
"[6, false, \"There was an error invoking sendFailureCallbackReturn\"]");
Assert.Single(
Client.FindElementById("errormessage-failure").Children.OfType<TextNode>(),
e => "There was an error invoking sendFailureCallbackReturn" == e.TextContent);
Assert.Contains((LogLevel.Debug, "EndInvokeJSFailed"), logEvents);
Assert.DoesNotContain(logEvents, m => m.logLevel > LogLevel.Information);
await ValidateClientKeepsWorking(Client, batches);
}
[Fact] [Fact]
public async Task CannotInvokeJSInvokableMethodsWithInvalidArgumentsPayload() public async Task CannotInvokeJSInvokableMethodsWithInvalidArgumentsPayload()
{ {
// Arrange // Arrange
var expectedError = "[\"1\"," + var expectedError = "[\"1\"," +
"false," + "false," +
"\"There was an exception invoking \\u0027NotifyLocationChanged\\u0027 on assembly \\u0027Microsoft.AspNetCore.Components.Server\\u0027. For more details turn on detailed exceptions in \\u0027CircuitOptions.JSInteropDetailedErrors\\u0027\"]"; "\"There was an exception invoking \\u0027NotifyLocationChanged\\u0027 on assembly \\u0027Microsoft.AspNetCore.Components.Server\\u0027. For more details turn on detailed exceptions in \\u0027CircuitOptions.DetailedErrors\\u0027\"]";
var (interopCalls, batches) = ConfigureClient(); var (_, dotNetCompletions, batches) = ConfigureClient();
await GoToTestComponent(batches); await GoToTestComponent(batches);
// Act // Act
@ -275,7 +333,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
"[ \"invalidPayload\"}"); "[ \"invalidPayload\"}");
// Assert // Assert
Assert.Single(interopCalls, (0, "DotNet.jsCallDispatcher.endInvokeDotNetFromJS", expectedError)); Assert.Single(dotNetCompletions, expectedError);
await ValidateClientKeepsWorking(Client, batches); await ValidateClientKeepsWorking(Client, batches);
} }
@ -285,9 +343,9 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
// Arrange // Arrange
var expectedError = "[\"1\"," + var expectedError = "[\"1\"," +
"false," + "false," +
"\"There was an exception invoking \\u0027ReceiveTrivial\\u0027 on assembly \\u0027BasicTestApp\\u0027. For more details turn on detailed exceptions in \\u0027CircuitOptions.JSInteropDetailedErrors\\u0027\"]"; "\"There was an exception invoking \\u0027ReceiveTrivial\\u0027 on assembly \\u0027BasicTestApp\\u0027. For more details turn on detailed exceptions in \\u0027CircuitOptions.DetailedErrors\\u0027\"]";
var (interopCalls, batches) = ConfigureClient(); var (_, dotNetCompletions, batches) = ConfigureClient();
await GoToTestComponent(batches); await GoToTestComponent(batches);
// Act // Act
@ -299,10 +357,138 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
"[ { \"data\": {\"}} ]"); "[ { \"data\": {\"}} ]");
// Assert // Assert
Assert.Single(interopCalls, (0, "DotNet.jsCallDispatcher.endInvokeDotNetFromJS", expectedError)); Assert.Single(dotNetCompletions, expectedError);
await ValidateClientKeepsWorking(Client, batches); await ValidateClientKeepsWorking(Client, batches);
} }
[Fact]
public async Task DispatchingEventsWithInvalidPayloadsDoesNotCrashTheCircuit()
{
// Arrange
var (interopCalls, dotNetCompletions, batches) = ConfigureClient();
await GoToTestComponent(batches);
var sink = _serverFixture.Host.Services.GetRequiredService<TestSink>();
var logEvents = new List<(LogLevel logLevel, string)>();
sink.MessageLogged += (wc) => logEvents.Add((wc.LogLevel, wc.EventId.Name));
// Act
await Client.HubConnection.InvokeAsync(
"DispatchBrowserEvent",
null,
null);
Assert.Contains(
(LogLevel.Debug, "DispatchEventFailedToParseEventDescriptor"),
logEvents);
await ValidateClientKeepsWorking(Client, batches);
}
[Fact]
public async Task DispatchingEventsWithInvalidUIEventArgs()
{
// Arrange
var (interopCalls, dotNetCompletions, batches) = ConfigureClient();
await GoToTestComponent(batches);
var sink = _serverFixture.Host.Services.GetRequiredService<TestSink>();
var logEvents = new List<(LogLevel logLevel, string)>();
sink.MessageLogged += (wc) => logEvents.Add((wc.LogLevel, wc.EventId.Name));
// Act
var browserDescriptor = new RendererRegistryEventDispatcher.BrowserEventDescriptor()
{
BrowserRendererId = 0,
EventHandlerId = 6,
EventArgsType = "mouse",
};
await Client.HubConnection.InvokeAsync(
"DispatchBrowserEvent",
JsonSerializer.Serialize(browserDescriptor, new JsonSerializerOptions() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }),
"{Invalid:{\"payload}");
Assert.Contains(
(LogLevel.Debug, "DispatchEventFailedToDispatchEvent"),
logEvents);
await ValidateClientKeepsWorking(Client, batches);
}
[Fact]
public async Task DispatchingEventsWithInvalidEventHandlerId()
{
// Arrange
var (interopCalls, dotNetCompletions, batches) = ConfigureClient();
await GoToTestComponent(batches);
var sink = _serverFixture.Host.Services.GetRequiredService<TestSink>();
var logEvents = new List<(LogLevel logLevel, string eventIdName, Exception exception)>();
sink.MessageLogged += (wc) => logEvents.Add((wc.LogLevel, wc.EventId.Name, wc.Exception));
// Act
var mouseEventArgs = new UIMouseEventArgs()
{
Type = "click",
Detail = 1
};
var browserDescriptor = new RendererRegistryEventDispatcher.BrowserEventDescriptor()
{
BrowserRendererId = 0,
EventHandlerId = 1,
EventArgsType = "mouse",
};
await Client.HubConnection.InvokeAsync(
"DispatchBrowserEvent",
JsonSerializer.Serialize(browserDescriptor, new JsonSerializerOptions() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }),
JsonSerializer.Serialize(mouseEventArgs, new JsonSerializerOptions() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }));
Assert.Contains(
logEvents,
e => e.eventIdName == "DispatchEventFailedToDispatchEvent" && e.logLevel == LogLevel.Debug &&
e.exception is ArgumentException ae && ae.Message.Contains("There is no event handler with ID -1"));
await ValidateClientKeepsWorking(Client, batches);
}
[Fact]
public async Task DispatchingEventThroughJSInterop()
{
// Arrange
var (interopCalls, dotNetCompletions, batches) = ConfigureClient();
await GoToTestComponent(batches);
var sink = _serverFixture.Host.Services.GetRequiredService<TestSink>();
var logEvents = new List<(LogLevel logLevel, string eventIdName)>();
sink.MessageLogged += (wc) => logEvents.Add((wc.LogLevel, wc.EventId.Name));
// Act
var mouseEventArgs = new UIMouseEventArgs()
{
Type = "click",
Detail = 1
};
var browserDescriptor = new RendererRegistryEventDispatcher.BrowserEventDescriptor()
{
BrowserRendererId = 0,
EventHandlerId = 1,
EventArgsType = "mouse",
};
var serializerOptions = new JsonSerializerOptions() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase };
var uiArgs = JsonSerializer.Serialize(mouseEventArgs, serializerOptions);
await Assert.ThrowsAsync<TaskCanceledException>(() => Client.InvokeDotNetMethod(
0,
"Microsoft.AspNetCore.Components.Web",
"DispatchEvent",
null,
JsonSerializer.Serialize(new object[] { browserDescriptor, uiArgs }, serializerOptions)));
Assert.Contains(
(LogLevel.Debug, "DispatchEventThroughJSInterop"),
logEvents);
await ValidateClientKeepsWorking(Client, batches);
}
private Task ValidateClientKeepsWorking(BlazorClient Client, List<(int, int, byte[])> batches) => private Task ValidateClientKeepsWorking(BlazorClient Client, List<(int, int, byte[])> batches) =>
ValidateClientKeepsWorking(Client, () => batches.Count); ValidateClientKeepsWorking(Client, () => batches.Count);
@ -325,13 +511,15 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
Assert.Equal(2, batches.Count); Assert.Equal(2, batches.Count);
} }
private (List<(int, string, string)>, List<(int, int, byte[])>) ConfigureClient() private (List<(int, string, string)>, List<string>, List<(int, int, byte[])>) ConfigureClient()
{ {
var interopCalls = new List<(int, string, string)>(); var interopCalls = new List<(int, string, string)>();
Client.JSInterop += (int arg1, string arg2, string arg3) => interopCalls.Add((arg1, arg2, arg3)); Client.JSInterop += (int arg1, string arg2, string arg3) => interopCalls.Add((arg1, arg2, arg3));
var batches = new List<(int, int, byte[])>(); var batches = new List<(int, int, byte[])>();
Client.RenderBatchReceived += (id, renderer, data) => batches.Add((id, renderer, data)); Client.RenderBatchReceived += (id, renderer, data) => batches.Add((id, renderer, data));
return (interopCalls, batches); var endInvokeDotNetCompletions = new List<string>();
Client.DotNetInteropCompletion += (completion) => endInvokeDotNetCompletions.Add(completion);
return (interopCalls, endInvokeDotNetCompletions, batches);
} }
} }
} }

View File

@ -64,7 +64,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests
string GetExpectedMessage(string method) => string GetExpectedMessage(string method) =>
$"\"There was an exception invoking '{method}' on assembly 'BasicTestApp'. For more details turn on " + $"\"There was an exception invoking '{method}' on assembly 'BasicTestApp'. For more details turn on " +
$"detailed exceptions in '{typeof(CircuitOptions).Name}.{nameof(CircuitOptions.JSInteropDetailedErrors)}'\""; $"detailed exceptions in '{typeof(CircuitOptions).Name}.{nameof(CircuitOptions.DetailedErrors)}'\"";
} }
} }
} }

View File

@ -759,7 +759,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.Tests
// For date comparisons, we parse (non-formatted) values to compare them. Client-side and server-side // For date comparisons, we parse (non-formatted) values to compare them. Client-side and server-side
// Blazor have different formatting behaviour by default. // Blazor have different formatting behaviour by default.
[Fact] [Fact(Skip = "https://github.com/aspnet/AspNetCore/issues/12286")]
public void CanBindTextboxDateTimeWithFormat() public void CanBindTextboxDateTimeWithFormat()
{ {
var target = Browser.FindElement(By.Id("textbox-datetime-format")); var target = Browser.FindElement(By.Id("textbox-datetime-format"));
@ -818,7 +818,7 @@ namespace Microsoft.AspNetCore.Components.E2ETest.Tests
// For date comparisons, we parse (non-formatted) values to compare them. Client-side and server-side // For date comparisons, we parse (non-formatted) values to compare them. Client-side and server-side
// Blazor have different formatting behaviour by default. // Blazor have different formatting behaviour by default.
[Fact] [Fact(Skip = "https://github.com/aspnet/AspNetCore/issues/12286")]
public void CanBindTextboxDateTimeOffsetWithFormat() public void CanBindTextboxDateTimeOffsetWithFormat()
{ {
var target = Browser.FindElement(By.Id("textbox-datetimeoffset-format")); var target = Browser.FindElement(By.Id("textbox-datetimeoffset-format"));

View File

@ -4,7 +4,7 @@
<input @ref="myInput" @ref:suppressField value="Value set during render" /> <input @ref="myInput" @ref:suppressField value="Value set during render" />
@code { @code {
ElementRef myInput; ElementReference myInput;
protected override void OnAfterRender() protected override void OnAfterRender()
{ {

View File

@ -28,7 +28,7 @@
@code { @code {
int _count = 0; int _count = 0;
bool _toggleCapturedElementPresence = true; bool _toggleCapturedElementPresence = true;
ElementRef _myInput; ElementReference _myInput;
async Task MakeInteropCall() async Task MakeInteropCall()
{ {

View File

@ -24,7 +24,7 @@
@code { @code {
string infoFromJs; string infoFromJs;
ElementRef myElem; ElementReference myElem;
protected override async Task OnAfterRenderAsync() protected override async Task OnAfterRenderAsync()
{ {

View File

@ -1,7 +1,9 @@
@inject Microsoft.JSInterop.IJSRuntime JSRuntime @using Microsoft.JSInterop
@inject IJSRuntime JSRuntime
@namespace BasicTestApp @namespace BasicTestApp
<h1>Server reliability</h1> <h1>Server reliability</h1>
<p>This component is used on the server-side execution model to validate that the circuit is resilient to failures, intentional or not. <p>
This component is used on the server-side execution model to validate that the circuit is resilient to failures, intentional or not.
The tests that use this component trigger invalid .NET calls to which the server replies with proper JS interop messages indicating a The tests that use this component trigger invalid .NET calls to which the server replies with proper JS interop messages indicating a
failure to perform the call. failure to perform the call.
@ -9,15 +11,22 @@
</p> </p>
<p>Current count: @currentCount</p> <p>Current count: @currentCount</p>
<p id="errormessage">Error = @error</p> <p id="errormessage-malformed">Error = @errorMalformed</p>
<button id="triggerjsinterop" @onclick="@TriggerJSInterop"></button> <p id="errormessage-success">Error = @errorSuccess</p>
<p id="errormessage-failure">Error = @errorFailure</p>
<button id="triggerjsinterop-malformed" @onclick="@TriggerJSInterop">Trigger malformed JS interop callback</button>
<button id="triggerjsinterop-success" @onclick="@TriggerJSInteropSuccess">Trigger successfull JS interop callback</button>
<button id="triggerjsinterop-failure" @onclick="@TriggerJSInteropFailure">Trigger error JS interop callback</button>
<button id="thecounter" @onclick="@IncrementCount">Click me</button> <button id="thecounter" @onclick="@IncrementCount">Click me</button>
@code @code
{ {
int currentCount = 0; int currentCount = 0;
string error = ""; string errorMalformed = "";
string errorSuccess = "";
string errorFailure = "";
void IncrementCount() void IncrementCount()
{ {
@ -34,7 +43,35 @@
} }
catch (Exception e) catch (Exception e)
{ {
error = e.Message; errorMalformed = e.Message;
}
}
async Task TriggerJSInteropSuccess()
{
try
{
var result = await JSRuntime.InvokeAsync<object>(
"sendSuccessCallbackReturn",
Array.Empty<object>());
}
catch (Exception e)
{
errorSuccess = e.Message;
}
}
async Task TriggerJSInteropFailure()
{
try
{
var result = await JSRuntime.InvokeAsync<object>(
"sendFailureCallbackReturn",
Array.Empty<object>());
}
catch (JSException e)
{
errorFailure = e.Message;
} }
} }
} }

View File

@ -19,7 +19,7 @@ namespace ComponentsApp.Server
services.AddSingleton<CircuitHandler, LoggingCircuitHandler>(); services.AddSingleton<CircuitHandler, LoggingCircuitHandler>();
services.AddServerSideBlazor(options => services.AddServerSideBlazor(options =>
{ {
options.JSInteropDetailedErrors = true; options.DetailedErrors = true;
}); });
services.AddSingleton<WeatherForecastService, DefaultWeatherForecastService>(); services.AddSingleton<WeatherForecastService, DefaultWeatherForecastService>();

View File

@ -42,12 +42,16 @@ namespace Ignitor
private CancellableOperation NextJSInteropReceived { get; set; } private CancellableOperation NextJSInteropReceived { get; set; }
private CancellableOperation NextDotNetInteropCompletionReceived { get; set; }
public bool ConfirmRenderBatch { get; set; } = true; public bool ConfirmRenderBatch { get; set; } = true;
public event Action<int, string, string> JSInterop; public event Action<int, string, string> JSInterop;
public event Action<int, int, byte[]> RenderBatchReceived; public event Action<int, int, byte[]> RenderBatchReceived;
public event Action<string> DotNetInteropCompletion;
public event Action<Error> OnCircuitError; public event Action<Error> OnCircuitError;
public string CircuitId { get; set; } public string CircuitId { get; set; }
@ -82,6 +86,18 @@ namespace Ignitor
return NextJSInteropReceived.Completion.Task; return NextJSInteropReceived.Completion.Task;
} }
public Task PrepareForNextDotNetInterop()
{
if (NextDotNetInteropCompletionReceived?.Completion != null)
{
throw new InvalidOperationException("Invalid state previous task not completed");
}
NextDotNetInteropCompletionReceived = new CancellableOperation(DefaultLatencyTimeout);
return NextDotNetInteropCompletionReceived.Completion.Task;
}
public async Task ClickAsync(string elementId) public async Task ClickAsync(string elementId)
{ {
if (!Hive.TryFindElementById(elementId, out var elementNode)) if (!Hive.TryFindElementById(elementId, out var elementNode))
@ -116,6 +132,13 @@ namespace Ignitor
await task; await task;
} }
public async Task ExpectDotNetInterop(Func<Task> action)
{
var task = WaitForDotNetInterop();
await action();
await task;
}
private Task WaitForRenderBatch(TimeSpan? timeout = null) private Task WaitForRenderBatch(TimeSpan? timeout = null)
{ {
if (ImplicitWait) if (ImplicitWait)
@ -144,6 +167,19 @@ namespace Ignitor
} }
} }
private async Task WaitForDotNetInterop()
{
if (ImplicitWait)
{
if (DefaultLatencyTimeout == null)
{
throw new InvalidOperationException("Implicit wait without DefaultLatencyTimeout is not allowed.");
}
await PrepareForNextDotNetInterop();
}
}
public async Task<bool> ConnectAsync(Uri uri, bool prerendered) public async Task<bool> ConnectAsync(Uri uri, bool prerendered)
{ {
var builder = new HubConnectionBuilder(); var builder = new HubConnectionBuilder();
@ -155,6 +191,7 @@ namespace Ignitor
await HubConnection.StartAsync(CancellationToken); await HubConnection.StartAsync(CancellationToken);
HubConnection.On<int, string, string>("JS.BeginInvokeJS", OnBeginInvokeJS); HubConnection.On<int, string, string>("JS.BeginInvokeJS", OnBeginInvokeJS);
HubConnection.On<string>("JS.EndInvokeDotNet", OnEndInvokeDotNet);
HubConnection.On<int, int, byte[]>("JS.RenderBatch", OnRenderBatch); HubConnection.On<int, int, byte[]>("JS.RenderBatch", OnRenderBatch);
HubConnection.On<Error>("JS.OnError", OnError); HubConnection.On<Error>("JS.OnError", OnError);
HubConnection.Closed += OnClosedAsync; HubConnection.Closed += OnClosedAsync;
@ -176,6 +213,20 @@ namespace Ignitor
} }
} }
private void OnEndInvokeDotNet(string completion)
{
try
{
DotNetInteropCompletion?.Invoke(completion);
NextDotNetInteropCompletionReceived?.Completion?.TrySetResult(null);
}
catch (Exception e)
{
NextDotNetInteropCompletionReceived?.Completion?.TrySetException(e);
}
}
private void OnBeginInvokeJS(int asyncHandle, string identifier, string argsJson) private void OnBeginInvokeJS(int asyncHandle, string identifier, string argsJson)
{ {
try try
@ -248,7 +299,7 @@ namespace Ignitor
public async Task InvokeDotNetMethod(object callId, string assemblyName, string methodIdentifier, object dotNetObjectId, string argsJson) public async Task InvokeDotNetMethod(object callId, string assemblyName, string methodIdentifier, object dotNetObjectId, string argsJson)
{ {
await ExpectJSInterop(() => HubConnection.InvokeAsync("BeginInvokeDotNetFromJS", callId?.ToString(), assemblyName, methodIdentifier, dotNetObjectId ?? 0, argsJson)); await ExpectDotNetInterop(() => HubConnection.InvokeAsync("BeginInvokeDotNetFromJS", callId?.ToString(), assemblyName, methodIdentifier, dotNetObjectId ?? 0, argsJson));
} }
private static async Task<string> GetPrerenderedCircuitIdAsync(Uri uri) private static async Task<string> GetPrerenderedCircuitIdAsync(Uri uri)

View File

@ -63,14 +63,14 @@ namespace Ignitor
_events[eventName] = descriptor; _events[eventName] = descriptor;
} }
internal async Task SelectAsync(HubConnection connection, string value) internal Task SelectAsync(HubConnection connection, string value)
{ {
if (!Events.TryGetValue("change", out var changeEventDescriptor)) if (!Events.TryGetValue("change", out var changeEventDescriptor))
{ {
throw new InvalidOperationException("Element does not have a click event."); throw new InvalidOperationException("Element does not have a change event.");
} }
var mouseEventArgs = new UIChangeEventArgs() var sleectEventArgs = new UIChangeEventArgs()
{ {
Type = changeEventDescriptor.EventName, Type = changeEventDescriptor.EventName,
Value = value Value = value
@ -88,31 +88,10 @@ namespace Ignitor
} }
}; };
var serializedJson = JsonSerializer.Serialize(mouseEventArgs, new JsonSerializerOptions() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }); return DispatchEventCore(connection, Serialize(browserDescriptor), Serialize(sleectEventArgs));
var argsObject = new object[] { browserDescriptor, serializedJson };
var callId = "0";
var assemblyName = "Microsoft.AspNetCore.Components.Web";
var methodIdentifier = "DispatchEvent";
var dotNetObjectId = 0;
var clickArgs = JsonSerializer.Serialize(argsObject, new JsonSerializerOptions() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase });
await connection.InvokeAsync("BeginInvokeDotNetFromJS", callId, assemblyName, methodIdentifier, dotNetObjectId, clickArgs);
} }
public class ElementEventDescriptor public Task ClickAsync(HubConnection connection)
{
public ElementEventDescriptor(string eventName, ulong eventId)
{
EventName = eventName ?? throw new ArgumentNullException(nameof(eventName));
EventId = eventId;
}
public string EventName { get; }
public ulong EventId { get; }
}
public async Task ClickAsync(HubConnection connection)
{ {
if (!Events.TryGetValue("click", out var clickEventDescriptor)) if (!Events.TryGetValue("click", out var clickEventDescriptor))
{ {
@ -130,14 +109,27 @@ namespace Ignitor
EventHandlerId = clickEventDescriptor.EventId, EventHandlerId = clickEventDescriptor.EventId,
EventArgsType = "mouse", EventArgsType = "mouse",
}; };
var serializedJson = JsonSerializer.Serialize(mouseEventArgs, new JsonSerializerOptions() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase });
var argsObject = new object[] { browserDescriptor, serializedJson }; return DispatchEventCore(connection, Serialize(browserDescriptor), Serialize(mouseEventArgs));
var callId = "0"; }
var assemblyName = "Microsoft.AspNetCore.Components.Web";
var methodIdentifier = "DispatchEvent"; private static string Serialize<T>(T payload) =>
var dotNetObjectId = 0; JsonSerializer.Serialize(payload, new JsonSerializerOptions() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase });
var clickArgs = JsonSerializer.Serialize(argsObject, new JsonSerializerOptions() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase });
await connection.InvokeAsync("BeginInvokeDotNetFromJS", callId, assemblyName, methodIdentifier, dotNetObjectId, clickArgs); private static Task DispatchEventCore(HubConnection connection, string descriptor, string eventArgs) =>
connection.InvokeAsync("DispatchBrowserEvent", descriptor, eventArgs);
public class ElementEventDescriptor
{
public ElementEventDescriptor(string eventName, ulong eventId)
{
EventName = eventName ?? throw new ArgumentNullException(nameof(eventName));
EventId = eventId;
}
public string EventName { get; }
public ulong EventId { get; }
} }
} }
} }

View File

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web"> <Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework> <TargetFramework>netcoreapp3.0</TargetFramework>
@ -13,6 +13,7 @@
<Reference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" /> <Reference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" />
<Reference Include="Microsoft.AspNetCore.Components.Server" /> <Reference Include="Microsoft.AspNetCore.Components.Server" />
<Reference Include="Microsoft.AspNetCore.Mvc.Components.Prerendering" /> <Reference Include="Microsoft.AspNetCore.Mvc.Components.Prerendering" />
<Reference Include="Microsoft.Extensions.Logging.Testing" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -1,6 +1,9 @@
using Microsoft.AspNetCore; using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Testing;
namespace TestServer namespace TestServer
{ {
@ -15,6 +18,12 @@ namespace TestServer
public static IWebHost BuildWebHost<TStartup>(string[] args) where TStartup : class => public static IWebHost BuildWebHost<TStartup>(string[] args) where TStartup : class =>
WebHost.CreateDefaultBuilder(args) WebHost.CreateDefaultBuilder(args)
.ConfigureLogging((ctx, lb) =>
{
TestSink sink = new TestSink();
lb.AddProvider(new TestLoggerProvider(sink));
lb.Services.Add(ServiceDescriptor.Singleton(sink));
})
.UseConfiguration(new ConfigurationBuilder() .UseConfiguration(new ConfigurationBuilder()
.AddCommandLine(args) .AddCommandLine(args)
.Build()) .Build())

View File

@ -31,7 +31,7 @@ namespace TestServer
.AddCircuitOptions(o => .AddCircuitOptions(o =>
{ {
var detailedErrors = Configuration.GetValue<bool>("circuit-detailed-errors"); var detailedErrors = Configuration.GetValue<bool>("circuit-detailed-errors");
o.JSInteropDetailedErrors = detailedErrors; o.DetailedErrors = detailedErrors;
}); });
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(); services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie();

View File

@ -1,6 +1,9 @@
{ {
"Logging": { "Logging": {
"IncludeScopes": false, "IncludeScopes": false,
"LogLevel": {
"Microsoft.AspNetCore.Components": "Debug"
},
"Debug": { "Debug": {
"LogLevel": { "LogLevel": {
"Default": "Warning" "Default": "Warning"

View File

@ -7,7 +7,6 @@ using System.IO;
using System.IO.Pipelines; using System.IO.Pipelines;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Http.Features;
namespace Microsoft.AspNetCore.TestHost namespace Microsoft.AspNetCore.TestHost
{ {
@ -83,9 +82,6 @@ namespace Microsoft.AspNetCore.TestHost
public override void CancelPendingFlush() => _pipe.Writer.CancelPendingFlush(); public override void CancelPendingFlush() => _pipe.Writer.CancelPendingFlush();
public override void OnReaderCompleted(Action<Exception, object> callback, object state)
=> _pipe.Writer.OnReaderCompleted(callback, state);
public override void Advance(int bytes) public override void Advance(int bytes)
{ {
CheckNotComplete(); CheckNotComplete();

View File

@ -1,6 +1,7 @@
// Copyright (c) .NET Foundation. All rights reserved. // Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.Linq; using System.Linq;
@ -29,7 +30,7 @@ namespace Microsoft.CodeAnalysis
public static IEnumerable<AttributeData> GetAttributes(this IMethodSymbol methodSymbol, ITypeSymbol attribute, bool inherit) public static IEnumerable<AttributeData> GetAttributes(this IMethodSymbol methodSymbol, ITypeSymbol attribute, bool inherit)
{ {
Debug.Assert(methodSymbol != null); Debug.Assert(methodSymbol != null);
Debug.Assert(attribute != null); attribute = attribute ?? throw new ArgumentNullException(nameof(attribute));
IMethodSymbol? current = methodSymbol; IMethodSymbol? current = methodSymbol;
while (current != null) while (current != null)
@ -50,8 +51,8 @@ namespace Microsoft.CodeAnalysis
public static IEnumerable<AttributeData> GetAttributes(this ITypeSymbol typeSymbol, ITypeSymbol attribute, bool inherit) public static IEnumerable<AttributeData> GetAttributes(this ITypeSymbol typeSymbol, ITypeSymbol attribute, bool inherit)
{ {
Debug.Assert(typeSymbol != null); typeSymbol = typeSymbol ?? throw new ArgumentNullException(nameof(typeSymbol));
Debug.Assert(attribute != null); attribute = attribute ?? throw new ArgumentNullException(nameof(attribute));
foreach (var type in GetTypeHierarchy(typeSymbol)) foreach (var type in GetTypeHierarchy(typeSymbol))
{ {
@ -69,8 +70,8 @@ namespace Microsoft.CodeAnalysis
public static bool HasAttribute(this IPropertySymbol propertySymbol, ITypeSymbol attribute, bool inherit) public static bool HasAttribute(this IPropertySymbol propertySymbol, ITypeSymbol attribute, bool inherit)
{ {
Debug.Assert(propertySymbol != null); propertySymbol = propertySymbol ?? throw new ArgumentNullException(nameof(propertySymbol));
Debug.Assert(attribute != null); attribute = attribute ?? throw new ArgumentNullException(nameof(attribute));
if (!inherit) if (!inherit)
{ {
@ -93,8 +94,8 @@ namespace Microsoft.CodeAnalysis
public static bool IsAssignableFrom(this ITypeSymbol source, ITypeSymbol target) public static bool IsAssignableFrom(this ITypeSymbol source, ITypeSymbol target)
{ {
Debug.Assert(source != null); source = source ?? throw new ArgumentNullException(nameof(source));
Debug.Assert(target != null); target = target ?? throw new ArgumentNullException(nameof(target));
if (source == target) if (source == target)
{ {

View File

@ -9,7 +9,6 @@
<IncludeBuildOutput>false</IncludeBuildOutput> <IncludeBuildOutput>false</IncludeBuildOutput>
<GenerateDocumentationFile>false</GenerateDocumentationFile> <GenerateDocumentationFile>false</GenerateDocumentationFile>
<NuspecFile>$(MSBuildProjectName).nuspec</NuspecFile> <NuspecFile>$(MSBuildProjectName).nuspec</NuspecFile>
<NullableContextOptions>enable</NullableContextOptions>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
</PropertyGroup> </PropertyGroup>

View File

@ -11,9 +11,9 @@ namespace Microsoft.AspNetCore.Mvc.Analyzers
{ {
public static bool IsController(INamedTypeSymbol type, INamedTypeSymbol controllerAttribute, INamedTypeSymbol nonControllerAttribute) public static bool IsController(INamedTypeSymbol type, INamedTypeSymbol controllerAttribute, INamedTypeSymbol nonControllerAttribute)
{ {
Debug.Assert(type != null); type = type ?? throw new ArgumentNullException(nameof(type));
Debug.Assert(controllerAttribute != null); controllerAttribute = controllerAttribute ?? throw new ArgumentNullException(nameof(controllerAttribute));
Debug.Assert(nonControllerAttribute != null); nonControllerAttribute = nonControllerAttribute ?? throw new ArgumentNullException(nameof(nonControllerAttribute));
if (type.TypeKind != TypeKind.Class) if (type.TypeKind != TypeKind.Class)
{ {
@ -57,8 +57,8 @@ namespace Microsoft.AspNetCore.Mvc.Analyzers
public static bool IsControllerAction(IMethodSymbol method, INamedTypeSymbol nonActionAttribute, IMethodSymbol disposableDispose) public static bool IsControllerAction(IMethodSymbol method, INamedTypeSymbol nonActionAttribute, IMethodSymbol disposableDispose)
{ {
Debug.Assert(method != null); method = method ?? throw new ArgumentNullException(nameof(method));
Debug.Assert(nonActionAttribute != null); nonActionAttribute = nonActionAttribute ?? throw new ArgumentNullException(nameof(nonActionAttribute));
if (method.MethodKind != MethodKind.Ordinary) if (method.MethodKind != MethodKind.Ordinary)
{ {

View File

@ -9,7 +9,6 @@
<IncludeBuildOutput>false</IncludeBuildOutput> <IncludeBuildOutput>false</IncludeBuildOutput>
<GenerateDocumentationFile>false</GenerateDocumentationFile> <GenerateDocumentationFile>false</GenerateDocumentationFile>
<NuspecFile>$(MSBuildProjectName).nuspec</NuspecFile> <NuspecFile>$(MSBuildProjectName).nuspec</NuspecFile>
<NullableContextOptions>enable</NullableContextOptions>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
</PropertyGroup> </PropertyGroup>

View File

@ -25,7 +25,26 @@ namespace Microsoft.AspNetCore.Mvc.Rendering
{ {
HTML = "<b>John Doe</b>" HTML = "<b>John Doe</b>"
}; };
var expectedOutput = "{\"html\":\"\\u003cb\\u003eJohn Doe\\u003c\\u002fb\\u003e\"}"; var expectedOutput = "{\"html\":\"\\u003Cb\\u003EJohn Doe\\u003C/b\\u003E\"}";
// Act
var result = helper.Serialize(obj);
// Assert
var htmlString = Assert.IsType<HtmlString>(result);
Assert.Equal(expectedOutput, htmlString.ToString());
}
[Fact]
public override void Serialize_WithNonAsciiChars()
{
// Arrange
var helper = GetJsonHelper();
var obj = new
{
HTML = $"Hello pingüino"
};
var expectedOutput = "{\"html\":\"Hello ping\\u00FCino\"}";
// Act // Act
var result = helper.Serialize(obj); var result = helper.Serialize(obj);

View File

@ -1,2 +1,2 @@
 @using Microsoft.AspNetCore.Components.Routing
<Router AppAssembly="@typeof(MvcSandbox.Startup).Assembly" FallbackComponent="@typeof(NotFound)" /> <Router AppAssembly="@typeof(MvcSandbox.Startup).Assembly" FallbackComponent="@typeof(NotFound)" />

View File

@ -27,7 +27,7 @@ namespace Microsoft.AspNetCore.Mvc.FunctionalTests
// Assert // Assert
await response.AssertStatusCodeAsync(HttpStatusCode.OK); await response.AssertStatusCodeAsync(HttpStatusCode.OK);
Assert.Equal("\"Hello Mr. \\ud83e\\udd8a\"", await response.Content.ReadAsStringAsync()); Assert.Equal("\"Hello Mr. \\uD83E\\uDD8A\"", await response.Content.ReadAsStringAsync());
} }
[Fact] [Fact]

View File

@ -39,82 +39,82 @@
<!-- Fallback to static href --> <!-- Fallback to static href -->
<link href="/styles/site.min.css?a=b&amp;c=d" rel="stylesheet" data-extra="test" title='"the" title' /> <link href="/styles/site.min.css?a=b&amp;c=d" rel="stylesheet" data-extra="test" title='"the" title' />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["\/styles\/site.css?a=b\u0026amp;c=d"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 title=\u0027\u0022the\u0022 title\u0027 ");</script> <meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css?a=b\u0026amp;c=d"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 title=\u0027\u0022the\u0022 title\u0027 ");</script>
<!-- Fallback to static href with no asp-suppress-fallback-integrity attribute, default behavior is to keep integrity hash --> <!-- Fallback to static href with no asp-suppress-fallback-integrity attribute, default behavior is to keep integrity hash -->
<link href="/styles/site.min.css?a=b&amp;c=d" rel="stylesheet" data-extra="test" title='"the" title' integrity="XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh+pQc=" crossorigin="anonymous" /> <link href="/styles/site.min.css?a=b&amp;c=d" rel="stylesheet" data-extra="test" title='"the" title' integrity="XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh+pQc=" crossorigin="anonymous" />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["\/styles\/site.css?a=b\u0026amp;c=d"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 title=\u0027\u0022the\u0022 title\u0027 integrity=\u0022XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh\u002BpQc=\u0022 crossorigin=\u0022anonymous\u0022 ");</script> <meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css?a=b\u0026amp;c=d"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 title=\u0027\u0022the\u0022 title\u0027 integrity=\u0022XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh\u002BpQc=\u0022 crossorigin=\u0022anonymous\u0022 ");</script>
<!-- Fallback to static href with asp-suppress-fallback-integrity set to false, behavior is to keep integrity hash --> <!-- Fallback to static href with asp-suppress-fallback-integrity set to false, behavior is to keep integrity hash -->
<link href="/styles/site.min.css?a=b&amp;c=d" rel="stylesheet" data-extra="test" title='"the" title' integrity="XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh+pQc=" crossorigin="anonymous" /> <link href="/styles/site.min.css?a=b&amp;c=d" rel="stylesheet" data-extra="test" title='"the" title' integrity="XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh+pQc=" crossorigin="anonymous" />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["\/styles\/site.css?a=b\u0026amp;c=d"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 title=\u0027\u0022the\u0022 title\u0027 integrity=\u0022XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh\u002BpQc=\u0022 crossorigin=\u0022anonymous\u0022 ");</script> <meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css?a=b\u0026amp;c=d"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 title=\u0027\u0022the\u0022 title\u0027 integrity=\u0022XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh\u002BpQc=\u0022 crossorigin=\u0022anonymous\u0022 ");</script>
<!-- Fallback to static href with asp-suppress-fallback-integrity provided, removes integrity attribute on fallback so that different CSS can be loaded --> <!-- Fallback to static href with asp-suppress-fallback-integrity provided, removes integrity attribute on fallback so that different CSS can be loaded -->
<link href="/styles/site.min.css?a=b&amp;c=d" rel="stylesheet" data-extra="test" title='"the" title' integrity="XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh+pQc=" crossorigin="anonymous" /> <link href="/styles/site.min.css?a=b&amp;c=d" rel="stylesheet" data-extra="test" title='"the" title' integrity="XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh+pQc=" crossorigin="anonymous" />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["\/styles\/siteIntegrity.css?a=b\u0026amp;c=d"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 title=\u0027\u0022the\u0022 title\u0027 crossorigin=\u0022anonymous\u0022 ");</script> <meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/siteIntegrity.css?a=b\u0026amp;c=d"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 title=\u0027\u0022the\u0022 title\u0027 crossorigin=\u0022anonymous\u0022 ");</script>
<!-- Fallback to static href with dynamic attributes --> <!-- Fallback to static href with dynamic attributes -->
<link href="/styles/site.min.css?a=b&amp;c=d" rel="stylesheet" data-extra="test" title='&quot;the&quot; title' /> <link href="/styles/site.min.css?a=b&amp;c=d" rel="stylesheet" data-extra="test" title='&quot;the&quot; title' />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["\/styles\/site.css?a=b\u0026amp;c=d"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 title=\u0027\u0026quot;the\u0026quot; title\u0027 ");</script> <meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css?a=b\u0026amp;c=d"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 title=\u0027\u0026quot;the\u0026quot; title\u0027 ");</script>
<!-- Fallback to static href with custom rel --> <!-- Fallback to static href with custom rel -->
<link href="/styles/site.min.css?a=b&amp;c=d" rel="x-stylesheet" /> <link href="/styles/site.min.css?a=b&amp;c=d" rel="x-stylesheet" />
<!-- Fallback from globbed href to static href --> <!-- Fallback from globbed href to static href -->
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["\/styles\/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script> <meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>
<!-- Fallback from globbed href with exclude to static href --> <!-- Fallback from globbed href with exclude to static href -->
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["\/styles\/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script> <meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>
<!-- Fallback from globbed and static href to static href --> <!-- Fallback from globbed and static href to static href -->
<link href="styles/site.min.css" rel="stylesheet" data-extra="test" /><link href="/styles/site.css" rel="stylesheet" data-extra="test" /> <link href="styles/site.min.css" rel="stylesheet" data-extra="test" /><link href="/styles/site.css" rel="stylesheet" data-extra="test" />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["\/styles\/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script> <meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>
<!-- Fallback from globbed and static href with exclude to static href --> <!-- Fallback from globbed and static href with exclude to static href -->
<link href="styles/site.min.css" rel="stylesheet" data-extra="test" /> <link href="styles/site.min.css" rel="stylesheet" data-extra="test" />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["\/styles\/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script> <meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>
<!-- Fallback to static href with no primary href --> <!-- Fallback to static href with no primary href -->
<link rel="stylesheet" data-extra="test"> <link rel="stylesheet" data-extra="test">
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["\/styles\/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script> <meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>
<!-- Fallback to globbed href --> <!-- Fallback to globbed href -->
<link href="/styles/site.min.css" rel="stylesheet" data-extra="test" /> <link href="/styles/site.min.css" rel="stylesheet" data-extra="test" />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["\/styles\/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script> <meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>
<!-- Fallback to static and globbed href --> <!-- Fallback to static and globbed href -->
<link href="/styles/site.min.css" rel="stylesheet" data-extra="test" /> <link href="/styles/site.min.css" rel="stylesheet" data-extra="test" />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["\/styles\/site.css","\/styles\/sub\/site2.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script> <meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css","/styles/sub/site2.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>
<!-- Fallback to static and globbed href should dedupe --> <!-- Fallback to static and globbed href should dedupe -->
<link href="/styles/site.min.css" rel="stylesheet" data-extra="test" /> <link href="/styles/site.min.css" rel="stylesheet" data-extra="test" />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["\/styles\/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script> <meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>
<!-- Fallback to static and globbed href with exclude --> <!-- Fallback to static and globbed href with exclude -->
<link href="/styles/site.min.css" rel="stylesheet" data-extra="test" /> <link href="/styles/site.min.css" rel="stylesheet" data-extra="test" />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["\/styles\/site.css","\/styles\/siteIntegrity.css","\/styles\/sub\/site2.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script> <meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css","/styles/siteIntegrity.css","/styles/sub/site2.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>
<!-- Fallback from globbed href to globbed href --> <!-- Fallback from globbed href to globbed href -->
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["\/styles\/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script> <meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>
<!-- Fallback from globbed href with exclude to globbed href --> <!-- Fallback from globbed href with exclude to globbed href -->
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["\/styles\/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script> <meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>
<!-- Fallback from globbed and static href to globbed href --> <!-- Fallback from globbed and static href to globbed href -->
<link href="styles/site.min.css" rel="stylesheet" data-extra="test" /><link href="/styles/site.css" rel="stylesheet" data-extra="test" /> <link href="styles/site.min.css" rel="stylesheet" data-extra="test" /><link href="/styles/site.css" rel="stylesheet" data-extra="test" />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["\/styles\/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script> <meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>
<!-- Fallback from globbed and static href with exclude to globbed href --> <!-- Fallback from globbed and static href with exclude to globbed href -->
<link href="styles/site.min.css" rel="stylesheet" data-extra="test"> <link href="styles/site.min.css" rel="stylesheet" data-extra="test">
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["\/styles\/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script> <meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>
<!-- Kitchen sink, all the attributes --> <!-- Kitchen sink, all the attributes -->
<link href="styles/site.min.css" rel="stylesheet" data-extra="test" /> <link href="styles/site.min.css" rel="stylesheet" data-extra="test" />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["\/styles\/site.css","\/styles\/siteIntegrity.css","\/styles\/sub\/site2.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script> <meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css","/styles/siteIntegrity.css","/styles/sub/site2.css"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>
<!-- Fallback to globbed href that doesn't exist --> <!-- Fallback to globbed href that doesn't exist -->
<link href="/styles/site.min.css" rel="stylesheet" data-extra="test" /> <link href="/styles/site.min.css" rel="stylesheet" data-extra="test" />
@ -139,7 +139,7 @@
<!-- Fallback with file version --> <!-- Fallback with file version -->
<link href="/styles/site.min.css" rel="stylesheet" data-extra="test"> <link href="/styles/site.min.css" rel="stylesheet" data-extra="test">
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["\/styles\/site.css?v=XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh-pQc"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script> <meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/styles/site.css?v=XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh-pQc"], "rel=\u0022stylesheet\u0022 data-extra=\u0022test\u0022 ");</script>
<!-- Globbed link tag with existing file, static href and file version --> <!-- Globbed link tag with existing file, static href and file version -->
<link href="/styles/site.css?v=XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh-pQc" rel="stylesheet" /><link href="/styles/siteIntegrity.css?v=2PJDxTb5ea6QWpW5p3vvrvP3bat7l18amFI0M8-xBls" rel="stylesheet" /><link href="/styles/sub/site2.css?v=30cxPex0tA9xEatW7f1Qhnn8tVLAHgE6xwIZhESq0y0" rel="stylesheet" /><link href="/styles/sub/site3.css?v=fSxxOr1Q4Dq2uPuzlju5UYGuK0SKABI-ghvaIGEsZDc" rel="stylesheet" /><link href="/styles/sub/site3.min.css?v=s8JMmAZxBn0dzuhRtQ0wgOvNBK4XRJRWEC2wfzsVF9M" rel="stylesheet" /> <link href="/styles/site.css?v=XY7YsMemPf8AGU4SIX9ED9eOjK1LOQWu2dmCNmh-pQc" rel="stylesheet" /><link href="/styles/siteIntegrity.css?v=2PJDxTb5ea6QWpW5p3vvrvP3bat7l18amFI0M8-xBls" rel="stylesheet" /><link href="/styles/sub/site2.css?v=30cxPex0tA9xEatW7f1Qhnn8tVLAHgE6xwIZhESq0y0" rel="stylesheet" /><link href="/styles/sub/site3.css?v=fSxxOr1Q4Dq2uPuzlju5UYGuK0SKABI-ghvaIGEsZDc" rel="stylesheet" /><link href="/styles/sub/site3.min.css?v=s8JMmAZxBn0dzuhRtQ0wgOvNBK4XRJRWEC2wfzsVF9M" rel="stylesheet" />

View File

@ -13,43 +13,43 @@
<script src="/blank.js?a=b&amp;c=d" data-foo="foo-data2" title="&lt;the title>"> <script src="/blank.js?a=b&amp;c=d" data-foo="foo-data2" title="&lt;the title>">
// TagHelper script with comment in body, and extra properties. // TagHelper script with comment in body, and extra properties.
</script> </script>
<script>(false||document.write("\u003Cscript src=\u0022\/styles\/site.js?a=b\u0026amp;c=d\u0022 data-foo=\u0022foo-data2\u0022 title=\u0022\u0026lt;the title\u003E\u0022\u003E\u003C\/script\u003E"));</script> <script>(false||document.write("\u003Cscript src=\u0022/styles/site.js?a=b\u0026amp;c=d\u0022 data-foo=\u0022foo-data2\u0022 title=\u0022\u0026lt;the title\u003E\u0022\u003E\u003C/script\u003E"));</script>
<script src="/blank.js" title='"the" title'> <script src="/blank.js" title='"the" title'>
// Fallback to globbed src // Fallback to globbed src
</script> </script>
<script>(false||document.write("\u003Cscript src=\u0022\/styles\/site.js\u0022 title=\u0027\u0022the\u0022 title\u0027\u003E\u003C\/script\u003E"));</script> <script>(false||document.write("\u003Cscript src=\u0022/styles/site.js\u0022 title=\u0027\u0022the\u0022 title\u0027\u003E\u003C/script\u003E"));</script>
<script src="/styles/siteIntegrity.js?a=integrity" crossorigin="anonymous" integrity="sha256-tMQLOHBNPE829MHQPO8metegsGobA/henDPOvtZOWhQ="> <script src="/styles/siteIntegrity.js?a=integrity" crossorigin="anonymous" integrity="sha256-tMQLOHBNPE829MHQPO8metegsGobA/henDPOvtZOWhQ=">
// Script loading primary source, applied integrity hash to primary source. // Script loading primary source, applied integrity hash to primary source.
</script> </script>
<script>(true||document.write("\u003Cscript src=\u0022\/styles\/sub\/site2.js?a=integrity\u0022 crossorigin=\u0022anonymous\u0022 integrity=\u0022sha256-tMQLOHBNPE829MHQPO8metegsGobA\/henDPOvtZOWhQ=\u0022\u003E\u003C\/script\u003E"));</script> <script>(true||document.write("\u003Cscript src=\u0022/styles/sub/site2.js?a=integrity\u0022 crossorigin=\u0022anonymous\u0022 integrity=\u0022sha256-tMQLOHBNPE829MHQPO8metegsGobA/henDPOvtZOWhQ=\u0022\u003E\u003C/script\u003E"));</script>
<script src="/styles/siteIntegrity.js?a=integrity" crossorigin="anonymous" integrity="sha256-tMQLOHBNPE829MHQPO8metegsGobA/henDPOvtZOWhQ="> <script src="/styles/siteIntegrity.js?a=integrity" crossorigin="anonymous" integrity="sha256-tMQLOHBNPE829MHQPO8metegsGobA/henDPOvtZOWhQ=">
// Script uses fallback source, applies integrity hash to fallback. // Script uses fallback source, applies integrity hash to fallback.
</script> </script>
<script>(false||document.write("\u003Cscript src=\u0022\/styles\/sub\/siteIntegrity2.js?a=integrity\u0022 crossorigin=\u0022anonymous\u0022 integrity=\u0022sha256-tMQLOHBNPE829MHQPO8metegsGobA\/henDPOvtZOWhQ=\u0022\u003E\u003C\/script\u003E"));</script> <script>(false||document.write("\u003Cscript src=\u0022/styles/sub/siteIntegrity2.js?a=integrity\u0022 crossorigin=\u0022anonymous\u0022 integrity=\u0022sha256-tMQLOHBNPE829MHQPO8metegsGobA/henDPOvtZOWhQ=\u0022\u003E\u003C/script\u003E"));</script>
<script src="/styles/siteIntegrity.js?a=integrity" crossorigin="anonymous" integrity="sha256-tMQLOHBNPE829MHQPO8metegsGobA/henDPOvtZOWhQ="> <script src="/styles/siteIntegrity.js?a=integrity" crossorigin="anonymous" integrity="sha256-tMQLOHBNPE829MHQPO8metegsGobA/henDPOvtZOWhQ=">
// Script uses fallback source, ignores integrity hash on fallback. // Script uses fallback source, ignores integrity hash on fallback.
</script> </script>
<script>(false||document.write("\u003Cscript src=\u0022\/styles\/sub\/siteIntegrity3.js?a=integrity\u0022 crossorigin=\u0022anonymous\u0022\u003E\u003C\/script\u003E"));</script> <script>(false||document.write("\u003Cscript src=\u0022/styles/sub/siteIntegrity3.js?a=integrity\u0022 crossorigin=\u0022anonymous\u0022\u003E\u003C/script\u003E"));</script>
<script src="/blank.js"> <script src="/blank.js">
// Fallback to globbed src with exclude // Fallback to globbed src with exclude
</script> </script>
<script>(false||document.write("\u003Cscript src=\u0022\/styles\/site.js\u0022\u003E\u003C\/script\u003E\u003Cscript src=\u0022\/styles\/siteIntegrity.js\u0022\u003E\u003C\/script\u003E\u003Cscript src=\u0022\/styles\/sub\/site2.js\u0022\u003E\u003C\/script\u003E\u003Cscript src=\u0022\/styles\/sub\/siteIntegrity2.js\u0022\u003E\u003C\/script\u003E\u003Cscript src=\u0022\/styles\/sub\/siteIntegrity3.js\u0022\u003E\u003C\/script\u003E"));</script> <script>(false||document.write("\u003Cscript src=\u0022/styles/site.js\u0022\u003E\u003C/script\u003E\u003Cscript src=\u0022/styles/siteIntegrity.js\u0022\u003E\u003C/script\u003E\u003Cscript src=\u0022/styles/sub/site2.js\u0022\u003E\u003C/script\u003E\u003Cscript src=\u0022/styles/sub/siteIntegrity2.js\u0022\u003E\u003C/script\u003E\u003Cscript src=\u0022/styles/sub/siteIntegrity3.js\u0022\u003E\u003C/script\u003E"));</script>
<script src="/blank.js"> <script src="/blank.js">
// Fallback to globbed and static src // Fallback to globbed and static src
</script> </script>
<script>(false||document.write("\u003Cscript src=\u0022\/styles\/site.js\u0022\u003E\u003C\/script\u003E\u003Cscript src=\u0022\/styles\/sub\/site2.js\u0022\u003E\u003C\/script\u003E"));</script> <script>(false||document.write("\u003Cscript src=\u0022/styles/site.js\u0022\u003E\u003C/script\u003E\u003Cscript src=\u0022/styles/sub/site2.js\u0022\u003E\u003C/script\u003E"));</script>
<script src="/blank.js"> <script src="/blank.js">
// Fallback to globbed and static src should de-dupe // Fallback to globbed and static src should de-dupe
</script> </script>
<script>(false||document.write("\u003Cscript src=\u0022\/styles\/site.js\u0022\u003E\u003C\/script\u003E"));</script> <script>(false||document.write("\u003Cscript src=\u0022/styles/site.js\u0022\u003E\u003C/script\u003E"));</script>
<script src="/blank.js"> <script src="/blank.js">
// Fallback to globbed src with missing include // Fallback to globbed src with missing include
@ -58,7 +58,7 @@
<script src="/blank.js"> <script src="/blank.js">
// Fallback to static and globbed src with missing include // Fallback to static and globbed src with missing include
</script> </script>
<script>(false||document.write("\u003Cscript src=\u0022\/styles\/site.js\u0022\u003E\u003C\/script\u003E"));</script> <script>(false||document.write("\u003Cscript src=\u0022/styles/site.js\u0022\u003E\u003C/script\u003E"));</script>
<script src="/blank.js"> <script src="/blank.js">
// Fallback to globbed src outside of webroot // Fallback to globbed src outside of webroot
@ -71,7 +71,7 @@
<script data-foo="foo-data3"> <script data-foo="foo-data3">
// Valid TagHelper (although no src is provided) script with comment in body, and extra properties. // Valid TagHelper (although no src is provided) script with comment in body, and extra properties.
</script> </script>
<script>(false||document.write("\u003Cscript data-foo=\u0022foo-data3\u0022 src=\u0022\/styles\/site.js\u0022\u003E\u003C\/script\u003E"));</script> <script>(false||document.write("\u003Cscript data-foo=\u0022foo-data3\u0022 src=\u0022/styles/site.js\u0022\u003E\u003C/script\u003E"));</script>
<script src="/blank.js"> <script src="/blank.js">
// Invalid TagHelper script with comment in body. // Invalid TagHelper script with comment in body.
@ -114,12 +114,12 @@
<script src="/blank.js"> <script src="/blank.js">
// TagHelper script with comment in body, and file version. // TagHelper script with comment in body, and file version.
</script> </script>
<script>(false||document.write("\u003Cscript src=\u0022\/styles\/site.js?v=jx1PJjLX32-xgQQx2BxnckU9QH9DVKkm4-M5bSK869I\u0022\u003E\u003C\/script\u003E"));</script> <script>(false||document.write("\u003Cscript src=\u0022/styles/site.js?v=jx1PJjLX32-xgQQx2BxnckU9QH9DVKkm4-M5bSK869I\u0022\u003E\u003C/script\u003E"));</script>
<script src="/blank.js"> <script src="/blank.js">
// Fallback to globbed src with file version. // Fallback to globbed src with file version.
</script> </script>
<script>(false||document.write("\u003Cscript src=\u0022\/styles\/site.js?v=jx1PJjLX32-xgQQx2BxnckU9QH9DVKkm4-M5bSK869I\u0022\u003E\u003C\/script\u003E"));</script> <script>(false||document.write("\u003Cscript src=\u0022/styles/site.js?v=jx1PJjLX32-xgQQx2BxnckU9QH9DVKkm4-M5bSK869I\u0022\u003E\u003C/script\u003E"));</script>
<script src="/styles/site.js?v=jx1PJjLX32-xgQQx2BxnckU9QH9DVKkm4-M5bSK869I"> <script src="/styles/site.js?v=jx1PJjLX32-xgQQx2BxnckU9QH9DVKkm4-M5bSK869I">
// Regular script with comment in body, and file version. // Regular script with comment in body, and file version.

View File

@ -7,6 +7,7 @@
<PropertyGroup> <PropertyGroup>
<PropsProperties> <PropsProperties>
RestoreSources=$([MSBuild]::Escape("$(RestoreSources);$(ArtifactsShippingPackagesDir);$(ArtifactsNonShippingPackagesDir)")); RestoreSources=$([MSBuild]::Escape("$(RestoreSources);$(ArtifactsShippingPackagesDir);$(ArtifactsNonShippingPackagesDir)"));
MicrosoftNetCompilersToolsetPackageVersion=$(MicrosoftNetCompilersToolsetPackageVersion);
MicrosoftNETCoreAppRuntimeVersion=$(MicrosoftNETCoreAppRuntimeVersion); MicrosoftNETCoreAppRuntimeVersion=$(MicrosoftNETCoreAppRuntimeVersion);
MicrosoftNETCoreAppRefPackageVersion=$(MicrosoftNETCoreAppRefPackageVersion); MicrosoftNETCoreAppRefPackageVersion=$(MicrosoftNETCoreAppRefPackageVersion);
MicrosoftNETCorePlatformsPackageVersion=$(MicrosoftNETCorePlatformsPackageVersion); MicrosoftNETCorePlatformsPackageVersion=$(MicrosoftNETCorePlatformsPackageVersion);

View File

@ -32,6 +32,13 @@
AppHostRuntimeIdentifiers="" /> AppHostRuntimeIdentifiers="" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Net.Compilers.Toolset"
Version="${MicrosoftNetCompilersToolsetPackageVersion}"
PrivateAssets="all"
IsImplicitlyDefined="true" />
</ItemGroup>
<ItemGroup Condition="'$(UsingMicrosoftNETSdkWeb)' == 'true' OR '$(RazorSdkCurrentVersionProps)' != ''"> <ItemGroup Condition="'$(UsingMicrosoftNETSdkWeb)' == 'true' OR '$(RazorSdkCurrentVersionProps)' != ''">
<!-- <!--
Use the Razor SDK as a package reference. The version of the .NET Core SDK we build with often contains a version of the Razor SDK Use the Razor SDK as a package reference. The version of the .NET Core SDK we build with often contains a version of the Razor SDK

View File

@ -109,11 +109,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
_context.ReportApplicationError(exception); _context.ReportApplicationError(exception);
} }
public override void OnWriterCompleted(Action<Exception, object> callback, object state)
{
_requestBodyPipe.Reader.OnWriterCompleted(callback, state);
}
public override void CancelPendingRead() public override void CancelPendingRead()
{ {
_requestBodyPipe.Reader.CancelPendingRead(); _requestBodyPipe.Reader.CancelPendingRead();

View File

@ -245,11 +245,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
_completed = true; _completed = true;
} }
public override void OnWriterCompleted(Action<Exception, object> callback, object state)
{
// TODO make this work with ContentLength.
}
public override void CancelPendingRead() public override void CancelPendingRead()
{ {
Interlocked.Exchange(ref _userCanceled, 1); Interlocked.Exchange(ref _userCanceled, 1);

View File

@ -63,11 +63,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
_context.Input.CancelPendingRead(); _context.Input.CancelPendingRead();
} }
public override void OnWriterCompleted(Action<Exception, object> callback, object state)
{
_context.Input.OnWriterCompleted(callback, state);
}
public override Task ConsumeAsync() public override Task ConsumeAsync()
{ {
return Task.CompletedTask; return Task.CompletedTask;

View File

@ -52,13 +52,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
_body.Complete(exception); _body.Complete(exception);
} }
public override void OnWriterCompleted(Action<Exception, object> callback, object state)
{
ValidateState();
_body.OnWriterCompleted(callback, state);
}
public override ValueTask<ReadResult> ReadAsync(CancellationToken cancellationToken = default) public override ValueTask<ReadResult> ReadAsync(CancellationToken cancellationToken = default)
{ {
ValidateState(cancellationToken); ValidateState(cancellationToken);

View File

@ -58,12 +58,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
return _pipeControl.GetSpan(sizeHint); return _pipeControl.GetSpan(sizeHint);
} }
public override void OnReaderCompleted(Action<Exception, object> callback, object state)
{
ValidateState();
throw new NotSupportedException();
}
public override ValueTask<FlushResult> WriteAsync(ReadOnlyMemory<byte> source, CancellationToken cancellationToken = default) public override ValueTask<FlushResult> WriteAsync(ReadOnlyMemory<byte> source, CancellationToken cancellationToken = default)
{ {
ValidateState(cancellationToken); ValidateState(cancellationToken);

View File

@ -47,8 +47,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
public abstract bool TryRead(out ReadResult readResult); public abstract bool TryRead(out ReadResult readResult);
public abstract void OnWriterCompleted(Action<Exception, object> callback, object state);
public abstract void Complete(Exception exception); public abstract void Complete(Exception exception);
public abstract void CancelPendingRead(); public abstract void CancelPendingRead();

View File

@ -34,8 +34,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
return true; return true;
} }
public override void OnWriterCompleted(Action<Exception, object> callback, object state) { }
public override void Complete(Exception ex) { } public override void Complete(Exception ex) { }
public override void CancelPendingRead() { } public override void CancelPendingRead() { }

View File

@ -148,11 +148,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
_context.ReportApplicationError(exception); _context.ReportApplicationError(exception);
} }
public override void OnWriterCompleted(Action<Exception, object> callback, object state)
{
_context.RequestBodyPipe.Reader.OnWriterCompleted(callback, state);
}
public override void CancelPendingRead() public override void CancelPendingRead()
{ {
_context.RequestBodyPipe.Reader.CancelPendingRead(); _context.RequestBodyPipe.Reader.CancelPendingRead();

View File

@ -174,11 +174,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.PipeW
} }
} }
public override void OnReaderCompleted(Action<Exception, object> callback, object state)
{
_innerPipeWriter.OnReaderCompleted(callback, state);
}
public override void CancelPendingFlush() public override void CancelPendingFlush()
{ {
// We propagate IsCanceled when we do multiple flushes in a loop. If FlushResult.IsCanceled is true with more data pending to flush, // We propagate IsCanceled when we do multiple flushes in a loop. If FlushResult.IsCanceled is true with more data pending to flush,

View File

@ -101,8 +101,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
Assert.Throws<Exception>(() => requestPipe.TryRead(out var res))); Assert.Throws<Exception>(() => requestPipe.TryRead(out var res)));
Assert.Same(ex, Assert.Same(ex,
Assert.Throws<Exception>(() => requestPipe.Complete())); Assert.Throws<Exception>(() => requestPipe.Complete()));
Assert.Same(ex,
Assert.Throws<Exception>(() => requestPipe.OnWriterCompleted(null, null)));
} }
[Fact] [Fact]
@ -119,7 +117,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
Assert.Throws<ObjectDisposedException>(() => requestPipe.CancelPendingRead()); Assert.Throws<ObjectDisposedException>(() => requestPipe.CancelPendingRead());
Assert.Throws<ObjectDisposedException>(() => requestPipe.TryRead(out var res)); Assert.Throws<ObjectDisposedException>(() => requestPipe.TryRead(out var res));
Assert.Throws<ObjectDisposedException>(() => requestPipe.Complete()); Assert.Throws<ObjectDisposedException>(() => requestPipe.Complete());
Assert.Throws<ObjectDisposedException>(() => requestPipe.OnWriterCompleted(null, null));
await Assert.ThrowsAsync<ObjectDisposedException>(async () => await requestPipe.ReadAsync()); await Assert.ThrowsAsync<ObjectDisposedException>(async () => await requestPipe.ReadAsync());
} }
@ -137,7 +134,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
Assert.Throws<ObjectDisposedException>(() => responsePipe.GetMemory()); Assert.Throws<ObjectDisposedException>(() => responsePipe.GetMemory());
Assert.Throws<ObjectDisposedException>(() => responsePipe.GetSpan()); Assert.Throws<ObjectDisposedException>(() => responsePipe.GetSpan());
Assert.Throws<ObjectDisposedException>(() => responsePipe.Complete()); Assert.Throws<ObjectDisposedException>(() => responsePipe.Complete());
Assert.Throws<ObjectDisposedException>(() => responsePipe.OnReaderCompleted(null, null));
await Assert.ThrowsAsync<ObjectDisposedException>(async () => await responsePipe.WriteAsync(new Memory<byte>())); await Assert.ThrowsAsync<ObjectDisposedException>(async () => await responsePipe.WriteAsync(new Memory<byte>()));
await Assert.ThrowsAsync<ObjectDisposedException>(async () => await responsePipe.FlushAsync()); await Assert.ThrowsAsync<ObjectDisposedException>(async () => await responsePipe.FlushAsync());
} }
@ -170,11 +166,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
throw new NotImplementedException(); throw new NotImplementedException();
} }
public override void OnWriterCompleted(Action<Exception, object> callback, object state)
{
throw new NotImplementedException();
}
public override ValueTask<ReadResult> ReadAsync(CancellationToken cancellationToken = default) public override ValueTask<ReadResult> ReadAsync(CancellationToken cancellationToken = default)
{ {
throw new NotImplementedException(); throw new NotImplementedException();

View File

@ -377,11 +377,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
{ {
CancelPendingFlushCallCount++; CancelPendingFlushCallCount++;
} }
public override void OnReaderCompleted(Action<Exception, object> callback, object state)
{
throw new NotImplementedException();
}
} }
} }
} }

View File

@ -10,14 +10,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
{ {
public class HttpResponsePipeWriterTests public class HttpResponsePipeWriterTests
{ {
[Fact]
public void OnReaderCompletedThrowsNotSupported()
{
var pipeWriter = CreateHttpResponsePipeWriter();
pipeWriter.StartAcceptingWrites();
Assert.Throws<NotSupportedException>(() => pipeWriter.OnReaderCompleted((a, b) => { }, null));
}
[Fact] [Fact]
public void AdvanceAfterStopAcceptingWritesThrowsObjectDisposedException() public void AdvanceAfterStopAcceptingWritesThrowsObjectDisposedException()
{ {

View File

@ -1139,102 +1139,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
} }
} }
[Fact] // TODO
public async Task OnWriterCompletedForContentLengthDoesNotWork()
{
using (var input = new TestInput())
{
var body = Http1MessageBody.For(HttpVersion.Http11, new HttpRequestHeaders { HeaderContentLength = "5" }, input.Http1Connection);
var reader = new HttpRequestPipeReader();
reader.StartAcceptingReads(body);
input.Add("Hello");
var retVal = false;
// Callback isn't fired at the moment.
reader.OnWriterCompleted((a, b) => retVal = true, null);
Assert.True(reader.TryRead(out var readResult));
Assert.True(readResult.IsCompleted);
Assert.False(retVal);
await body.StopAsync();
}
}
[Fact]
public async Task OnWriterCompletedForChunkedWorks()
{
using (var input = new TestInput())
{
var body = Http1MessageBody.For(HttpVersion.Http11, new HttpRequestHeaders { HeaderTransferEncoding = "chunked" }, input.Http1Connection);
var reader = new HttpRequestPipeReader();
reader.StartAcceptingReads(body);
var tcs = new TaskCompletionSource<object>();
reader.OnWriterCompleted((a, b) => tcs.SetResult(null), null);
input.Add("0\r\n\r\n");
Assert.True(reader.TryRead(out var readResult));
Assert.True(readResult.IsCompleted);
Assert.Null(await tcs.Task.DefaultTimeout());
await body.StopAsync();
}
}
[Fact]
public async Task OnWriterCompletedForUpgradeWorks()
{
using (var input = new TestInput())
{
var body = Http1MessageBody.For(HttpVersion.Http11, new HttpRequestHeaders { HeaderConnection = "upgrade" }, input.Http1Connection);
var reader = new HttpRequestPipeReader();
reader.StartAcceptingReads(body);
var retVal = false;
reader.OnWriterCompleted((a, b) => retVal = true, null);
input.Add("hi");
Assert.True(reader.TryRead(out var readResult));
reader.AdvanceTo(readResult.Buffer.End);
input.Fin();
Assert.True(retVal);
await body.StopAsync();
}
}
[Fact]
public async Task OnWriterCompletedForNoContentLengthNoop()
{
using (var input = new TestInput())
{
var body = Http1MessageBody.For(HttpVersion.Http11, new HttpRequestHeaders(), input.Http1Connection);
var reader = new HttpRequestPipeReader();
reader.StartAcceptingReads(body);
var retVal = false;
reader.OnWriterCompleted((a, b) => retVal = true, null);
input.Add("hi");
Assert.True(reader.TryRead(out var readResult));
reader.AdvanceTo(readResult.Buffer.End);
input.Fin();
Assert.False(retVal);
await body.StopAsync();
}
}
[Fact] [Fact]
public async Task CompleteForContentLengthAllowsConsumeToWork() public async Task CompleteForContentLengthAllowsConsumeToWork()
{ {

View File

@ -1,4 +1,4 @@
// Copyright (c) .NET Foundation. All rights reserved. // Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System; using System;
@ -143,7 +143,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Performance
public override void CancelPendingFlush() { } public override void CancelPendingFlush() { }
public override void Complete(Exception exception = null) { } public override void Complete(Exception exception = null) { }
public override ValueTask<FlushResult> FlushAsync(CancellationToken cancellationToken = default) => default; public override ValueTask<FlushResult> FlushAsync(CancellationToken cancellationToken = default) => default;
public override void OnReaderCompleted(Action<Exception, object> callback, object state) { }
} }
public enum BenchmarkTypes public enum BenchmarkTypes

View File

@ -56,8 +56,6 @@ namespace Microsoft.AspNetCore.Testing
public override Memory<byte> GetMemory(int sizeHint = 0) => _output.GetMemory(sizeHint); public override Memory<byte> GetMemory(int sizeHint = 0) => _output.GetMemory(sizeHint);
public override Span<byte> GetSpan(int sizeHint = 0) => _output.GetSpan(sizeHint); public override Span<byte> GetSpan(int sizeHint = 0) => _output.GetSpan(sizeHint);
public override void OnReaderCompleted(Action<Exception, object> callback, object state) => _output.OnReaderCompleted(callback, state);
} }
private class PassThroughPipeReader : PipeReader private class PassThroughPipeReader : PipeReader
@ -77,8 +75,6 @@ namespace Microsoft.AspNetCore.Testing
public override void Complete(Exception exception = null) => _input.Complete(exception); public override void Complete(Exception exception = null) => _input.Complete(exception);
public override void OnWriterCompleted(Action<Exception, object> callback, object state) => _input.OnWriterCompleted(callback, state);
public override ValueTask<ReadResult> ReadAsync(CancellationToken cancellationToken = default) => _input.ReadAsync(cancellationToken); public override ValueTask<ReadResult> ReadAsync(CancellationToken cancellationToken = default) => _input.ReadAsync(cancellationToken);
public override bool TryRead(out ReadResult result) => _input.TryRead(out result); public override bool TryRead(out ReadResult result) => _input.TryRead(out result);

View File

@ -41,10 +41,13 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
var outputBufferedTcs = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously); var outputBufferedTcs = new TaskCompletionSource<object>(TaskCreationOptions.RunContinuationsAsynchronously);
#pragma warning disable 0618 // TODO: Repalce OnWriterCompleted
transportConnection.Output.OnWriterCompleted((ex, state) => transportConnection.Output.OnWriterCompleted((ex, state) =>
{ {
((TaskCompletionSource<object>)state).SetResult(null); ((TaskCompletionSource<object>)state).SetResult(null);
}, outputBufferedTcs); },
outputBufferedTcs);
#pragma warning restore
await connection.Send( await connection.Send(
"GET / HTTP/1.1", "GET / HTTP/1.1",

View File

@ -144,11 +144,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests.TestTrans
_reader.Complete(exception); _reader.Complete(exception);
} }
public override void OnWriterCompleted(Action<Exception, object> callback, object state)
{
_reader.OnWriterCompleted(callback, state);
}
public override ValueTask<ReadResult> ReadAsync(CancellationToken cancellationToken = default) public override ValueTask<ReadResult> ReadAsync(CancellationToken cancellationToken = default)
{ {
var task = _reader.ReadAsync(cancellationToken); var task = _reader.ReadAsync(cancellationToken);

View File

@ -367,8 +367,10 @@ namespace Microsoft.AspNetCore.SignalR.Client.Tests
var connectionClosed = new TaskCompletionSource<object>(); var connectionClosed = new TaskCompletionSource<object>();
await AsyncUsing(CreateHubConnection(testConnection), async connection => await AsyncUsing(CreateHubConnection(testConnection), async connection =>
{ {
#pragma warning disable 0618
// We're hooking the TestConnection shutting down here because the HubConnection one will be blocked on the lock // We're hooking the TestConnection shutting down here because the HubConnection one will be blocked on the lock
testConnection.Transport.Input.OnWriterCompleted((_, __) => testConnectionClosed.TrySetResult(null), null); testConnection.Transport.Input.OnWriterCompleted((_, __) => testConnectionClosed.TrySetResult(null), null);
#pragma warning restore
connection.Closed += (e) => connection.Closed += (e) =>
{ {
connectionClosed.TrySetResult(null); connectionClosed.TrySetResult(null);

View File

@ -53,11 +53,14 @@ namespace Microsoft.AspNetCore.SignalR.Client.Tests
Application = pair.Application; Application = pair.Application;
Transport = pair.Transport; Transport = pair.Transport;
// TODO: Resolve this, for now we use Pipe which works
#pragma warning disable 0618
Application.Input.OnWriterCompleted((ex, _) => Application.Input.OnWriterCompleted((ex, _) =>
{ {
Application.Output.Complete(); Application.Output.Complete();
}, },
null); null);
#pragma warning restore 0618
} }
public override ValueTask DisposeAsync() => DisposeCoreAsync(); public override ValueTask DisposeAsync() => DisposeCoreAsync();

View File

@ -21,6 +21,7 @@ namespace Microsoft.AspNetCore.Http.Connections.Client.Internal
// Volatile so that the SSE loop sees the updated value set from a different thread // Volatile so that the SSE loop sees the updated value set from a different thread
private volatile Exception _error; private volatile Exception _error;
private readonly CancellationTokenSource _transportCts = new CancellationTokenSource(); private readonly CancellationTokenSource _transportCts = new CancellationTokenSource();
private readonly CancellationTokenSource _inputCts = new CancellationTokenSource();
private readonly ServerSentEventsMessageParser _parser = new ServerSentEventsMessageParser(); private readonly ServerSentEventsMessageParser _parser = new ServerSentEventsMessageParser();
private IDuplexPipe _transport; private IDuplexPipe _transport;
private IDuplexPipe _application; private IDuplexPipe _application;
@ -84,17 +85,16 @@ namespace Microsoft.AspNetCore.Http.Connections.Client.Internal
// Cancellation token will be triggered when the pipe is stopped on the client. // Cancellation token will be triggered when the pipe is stopped on the client.
// This is to avoid the client throwing from a 404 response caused by the // This is to avoid the client throwing from a 404 response caused by the
// server stopping the connection while the send message request is in progress. // server stopping the connection while the send message request is in progress.
var inputCts = new CancellationTokenSource(); // _application.Input.OnWriterCompleted((exception, state) => ((CancellationTokenSource)state).Cancel(), inputCts);
_application.Input.OnWriterCompleted((exception, state) => ((CancellationTokenSource)state).Cancel(), inputCts);
Running = ProcessAsync(url, response, inputCts.Token); Running = ProcessAsync(url, response);
} }
private async Task ProcessAsync(Uri url, HttpResponseMessage response, CancellationToken inputCancellationToken) private async Task ProcessAsync(Uri url, HttpResponseMessage response)
{ {
// Start sending and polling (ask for binary if the server supports it) // Start sending and polling (ask for binary if the server supports it)
var receiving = ProcessEventStream(_application, response, _transportCts.Token); var receiving = ProcessEventStream(response, _transportCts.Token);
var sending = SendUtils.SendMessages(url, _application, _httpClient, _logger, inputCancellationToken); var sending = SendUtils.SendMessages(url, _application, _httpClient, _logger, _inputCts.Token);
// Wait for send or receive to complete // Wait for send or receive to complete
var trigger = await Task.WhenAny(receiving, sending); var trigger = await Task.WhenAny(receiving, sending);
@ -105,6 +105,8 @@ namespace Microsoft.AspNetCore.Http.Connections.Client.Internal
// 1. Waiting for application data // 1. Waiting for application data
// 2. Waiting for an outgoing send (this should be instantaneous) // 2. Waiting for an outgoing send (this should be instantaneous)
_inputCts.Cancel();
// Cancel the application so that ReadAsync yields // Cancel the application so that ReadAsync yields
_application.Input.CancelPendingRead(); _application.Input.CancelPendingRead();
@ -124,7 +126,7 @@ namespace Microsoft.AspNetCore.Http.Connections.Client.Internal
} }
} }
private async Task ProcessEventStream(IDuplexPipe application, HttpResponseMessage response, CancellationToken cancellationToken) private async Task ProcessEventStream(HttpResponseMessage response, CancellationToken cancellationToken)
{ {
Log.StartReceive(_logger); Log.StartReceive(_logger);

View File

@ -1,6 +1,8 @@
// Copyright (c) .NET Foundation. All rights reserved. // Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
#pragma warning disable CS0618 // TODO: Remove when we replace the events
using System; using System;
using System.Buffers; using System.Buffers;
using System.IO.Pipelines; using System.IO.Pipelines;

View File

@ -124,7 +124,7 @@ namespace Microsoft.AspNetCore.SignalR.Common.Tests.Internal.Protocol
public static IDictionary<string, JsonProtocolTestData> CustomProtocolTestData => new[] public static IDictionary<string, JsonProtocolTestData> CustomProtocolTestData => new[]
{ {
new JsonProtocolTestData("InvocationMessage_HasFloatArgument", new InvocationMessage(null, "Target", new object[] { 1, "Foo", 2.0f }), true, true, "{\"type\":1,\"target\":\"Target\",\"arguments\":[1,\"Foo\",2]}"), new JsonProtocolTestData("InvocationMessage_HasFloatArgument", new InvocationMessage(null, "Target", new object[] { 1, "Foo", 2.0f }), true, true, "{\"type\":1,\"target\":\"Target\",\"arguments\":[1,\"Foo\",2]}"),
new JsonProtocolTestData("InvocationMessage_StringIsoDateArgument", new InvocationMessage("Method", new object[] { "2016-05-10T13:51:20+12:34" }), true, true, "{\"type\":1,\"target\":\"Method\",\"arguments\":[\"2016-05-10T13:51:20\\u002b12:34\"]}"), new JsonProtocolTestData("InvocationMessage_StringIsoDateArgument", new InvocationMessage("Method", new object[] { "2016-05-10T13:51:20+12:34" }), true, true, "{\"type\":1,\"target\":\"Method\",\"arguments\":[\"2016-05-10T13:51:20\\u002B12:34\"]}"),
new JsonProtocolTestData("InvocationMessage_HasCustomArgumentWithNoCamelCase", new InvocationMessage(null, "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), false, true, "{\"type\":1,\"target\":\"Target\",\"arguments\":[{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"ByteArrProp\":\"AQID\"}]}"), new JsonProtocolTestData("InvocationMessage_HasCustomArgumentWithNoCamelCase", new InvocationMessage(null, "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), false, true, "{\"type\":1,\"target\":\"Target\",\"arguments\":[{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"ByteArrProp\":\"AQID\"}]}"),
new JsonProtocolTestData("InvocationMessage_HasCustomArgumentWithNullValueIgnore", new InvocationMessage(null, "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), true, true, "{\"type\":1,\"target\":\"Target\",\"arguments\":[{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"byteArrProp\":\"AQID\"}]}"), new JsonProtocolTestData("InvocationMessage_HasCustomArgumentWithNullValueIgnore", new InvocationMessage(null, "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), true, true, "{\"type\":1,\"target\":\"Target\",\"arguments\":[{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"byteArrProp\":\"AQID\"}]}"),
new JsonProtocolTestData("InvocationMessage_HasCustomArgumentWithNullValueIgnoreAndNoCamelCase", new InvocationMessage(null, "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), false, false, "{\"type\":1,\"target\":\"Target\",\"arguments\":[{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"NullProp\":null,\"ByteArrProp\":\"AQID\"}]}"), new JsonProtocolTestData("InvocationMessage_HasCustomArgumentWithNullValueIgnoreAndNoCamelCase", new InvocationMessage(null, "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), false, false, "{\"type\":1,\"target\":\"Target\",\"arguments\":[{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"NullProp\":null,\"ByteArrProp\":\"AQID\"}]}"),

View File

@ -1,6 +1,8 @@
// Copyright (c) .NET Foundation. All rights reserved. // Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
#pragma warning disable 0618 // TODO: Remove dependency on pipe events
using System.Threading.Tasks; using System.Threading.Tasks;
namespace System.IO.Pipelines namespace System.IO.Pipelines

View File

@ -36,11 +36,6 @@ namespace Microsoft.AspNetCore.SignalR.Microbenchmarks.Shared
throw new NotImplementedException(); throw new NotImplementedException();
} }
public override void OnWriterCompleted(Action<Exception, object> callback, object state)
{
throw new NotImplementedException();
}
public override ValueTask<ReadResult> ReadAsync(CancellationToken cancellationToken = new CancellationToken()) public override ValueTask<ReadResult> ReadAsync(CancellationToken cancellationToken = new CancellationToken())
{ {
if (ReadResults.Count == 0) if (ReadResults.Count == 0)
@ -59,4 +54,4 @@ namespace Microsoft.AspNetCore.SignalR.Microbenchmarks.Shared
throw new NotImplementedException(); throw new NotImplementedException();
} }
} }
} }

View File

@ -29,11 +29,6 @@ namespace Microsoft.AspNetCore.SignalR.Microbenchmarks.Shared
return _buffer; return _buffer;
} }
public override void OnReaderCompleted(Action<Exception, object> callback, object state)
{
throw new NotImplementedException();
}
public override void CancelPendingFlush() public override void CancelPendingFlush()
{ {
throw new NotImplementedException(); throw new NotImplementedException();
@ -59,4 +54,4 @@ namespace Microsoft.AspNetCore.SignalR.Microbenchmarks.Shared
return await Task.FromResult<FlushResult>(default).ForceAsync(); return await Task.FromResult<FlushResult>(default).ForceAsync();
} }
} }
} }

@ -1 +1 @@
Subproject commit 6f5f80e2f56fd14627108e19830685450e8701f1 Subproject commit 8861abdde93a3b97180ac3b2eafa33459ad52392