Merge branch 'master' into master
This commit is contained in:
commit
887872dac0
|
|
@ -56,5 +56,10 @@ Later on, this will be checked using this condition:
|
|||
Microsoft.AspNetCore.AzureAppServices.SiteExtension;
|
||||
</PackagesInPatch>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(VersionPrefix)' == '2.2.6' ">
|
||||
<PackagesInPatch>
|
||||
Microsoft.AspNetCore.Mvc.Api.Analyzers;
|
||||
</PackagesInPatch>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -57,340 +57,340 @@
|
|||
<Uri>https://github.com/aspnet/EntityFrameworkCore</Uri>
|
||||
<Sha>b9c9b57de1ba41f75427db0a51b2e897d0354656</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.AspNetCore.Analyzer.Testing" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.AspNetCore.Analyzer.Testing" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.AspNetCore.BenchmarkRunner.Sources" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.AspNetCore.BenchmarkRunner.Sources" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.ActivatorUtilities.Sources" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.ActivatorUtilities.Sources" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Caching.Abstractions" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Caching.Abstractions" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Caching.Memory" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Caching.Memory" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Caching.SqlServer" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Caching.SqlServer" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Caching.StackExchangeRedis" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Caching.StackExchangeRedis" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.CommandLineUtils.Sources" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.CommandLineUtils.Sources" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Abstractions" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Abstractions" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.AzureKeyVault" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.AzureKeyVault" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Binder" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Binder" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.CommandLine" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.CommandLine" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.FileExtensions" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.FileExtensions" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Ini" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Ini" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Json" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Json" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.KeyPerFile" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.KeyPerFile" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.UserSecrets" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.UserSecrets" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Xml" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Configuration.Xml" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Configuration" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Configuration" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.DependencyInjection" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.DependencyInjection" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.DiagnosticAdapter" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.DiagnosticAdapter" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Diagnostics.HealthChecks" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Diagnostics.HealthChecks" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.FileProviders.Abstractions" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.FileProviders.Abstractions" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.FileProviders.Composite" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.FileProviders.Composite" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.FileProviders.Embedded" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.FileProviders.Embedded" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.FileProviders.Physical" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.FileProviders.Physical" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.FileSystemGlobbing" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.FileSystemGlobbing" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.HashCodeCombiner.Sources" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.HashCodeCombiner.Sources" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Hosting.Abstractions" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Hosting.Abstractions" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Hosting" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Hosting" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.HostFactoryResolver.Sources" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.HostFactoryResolver.Sources" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Http" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Http" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Localization.Abstractions" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Localization.Abstractions" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Localization" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Localization" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Abstractions" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Abstractions" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.AzureAppServices" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Logging.AzureAppServices" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Configuration" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Configuration" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Console" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Console" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Debug" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Debug" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.EventSource" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Logging.EventSource" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.EventLog" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Logging.EventLog" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.TraceSource" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Logging.TraceSource" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Testing" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Logging.Testing" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Logging" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Logging" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.ObjectPool" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.ObjectPool" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Options.DataAnnotations" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Options.DataAnnotations" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Options" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Options" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.ParameterDefaultValue.Sources" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.ParameterDefaultValue.Sources" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.Primitives" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.Primitives" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.TypeNameHelper.Sources" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.TypeNameHelper.Sources" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.ValueStopwatch.Sources" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.ValueStopwatch.Sources" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.WebEncoders" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Extensions.WebEncoders" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Internal.Extensions.Refs" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.Internal.Extensions.Refs" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.JSInterop" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.JSInterop" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Mono.WebAssembly.Interop" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Mono.WebAssembly.Interop" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.CSharp" Version="4.6.0-preview6.19279.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Dependency Name="Microsoft.CSharp" Version="4.6.0-preview6.19303.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Uri>https://github.com/dotnet/corefx</Uri>
|
||||
<Sha>e23119d577e644d2c2a25419c88c1181681358e0</Sha>
|
||||
<Sha>d47cae744ddfb625db8e391cecb261e4c3d7bb1c</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Win32.Registry" Version="4.6.0-preview6.19279.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Dependency Name="Microsoft.Win32.Registry" Version="4.6.0-preview6.19303.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Uri>https://github.com/dotnet/corefx</Uri>
|
||||
<Sha>e23119d577e644d2c2a25419c88c1181681358e0</Sha>
|
||||
<Sha>d47cae744ddfb625db8e391cecb261e4c3d7bb1c</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.ComponentModel.Annotations" Version="4.6.0-preview6.19279.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Dependency Name="System.ComponentModel.Annotations" Version="4.6.0-preview6.19303.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Uri>https://github.com/dotnet/corefx</Uri>
|
||||
<Sha>e23119d577e644d2c2a25419c88c1181681358e0</Sha>
|
||||
<Sha>d47cae744ddfb625db8e391cecb261e4c3d7bb1c</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Data.SqlClient" Version="4.7.0-preview6.19264.9" CoherentParentDependency="Microsoft.NETCore.App" Pinned="true">
|
||||
<Uri>https://github.com/dotnet/corefx</Uri>
|
||||
<Sha>a28176b5ec68b6da1472934fe9493790d1665cae</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Diagnostics.EventLog" Version="4.6.0-preview6.19279.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Dependency Name="System.Diagnostics.EventLog" Version="4.6.0-preview6.19303.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Uri>https://github.com/dotnet/corefx</Uri>
|
||||
<Sha>e23119d577e644d2c2a25419c88c1181681358e0</Sha>
|
||||
<Sha>d47cae744ddfb625db8e391cecb261e4c3d7bb1c</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.IO.Pipelines" Version="4.6.0-preview6.19279.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Dependency Name="System.IO.Pipelines" Version="4.6.0-preview6.19303.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Uri>https://github.com/dotnet/corefx</Uri>
|
||||
<Sha>e23119d577e644d2c2a25419c88c1181681358e0</Sha>
|
||||
<Sha>d47cae744ddfb625db8e391cecb261e4c3d7bb1c</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Net.Http.WinHttpHandler" Version="4.6.0-preview6.19279.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Dependency Name="System.Net.Http.WinHttpHandler" Version="4.6.0-preview6.19303.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Uri>https://github.com/dotnet/corefx</Uri>
|
||||
<Sha>e23119d577e644d2c2a25419c88c1181681358e0</Sha>
|
||||
<Sha>d47cae744ddfb625db8e391cecb261e4c3d7bb1c</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Net.WebSockets.WebSocketProtocol" Version="4.6.0-preview6.19279.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Dependency Name="System.Net.WebSockets.WebSocketProtocol" Version="4.6.0-preview6.19303.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Uri>https://github.com/dotnet/corefx</Uri>
|
||||
<Sha>e23119d577e644d2c2a25419c88c1181681358e0</Sha>
|
||||
<Sha>d47cae744ddfb625db8e391cecb261e4c3d7bb1c</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Reflection.Metadata" Version="1.7.0-preview6.19279.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Dependency Name="System.Reflection.Metadata" Version="1.7.0-preview6.19303.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Uri>https://github.com/dotnet/corefx</Uri>
|
||||
<Sha>e23119d577e644d2c2a25419c88c1181681358e0</Sha>
|
||||
<Sha>d47cae744ddfb625db8e391cecb261e4c3d7bb1c</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Runtime.CompilerServices.Unsafe" Version="4.6.0-preview6.19279.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Dependency Name="System.Runtime.CompilerServices.Unsafe" Version="4.6.0-preview6.19303.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Uri>https://github.com/dotnet/corefx</Uri>
|
||||
<Sha>e23119d577e644d2c2a25419c88c1181681358e0</Sha>
|
||||
<Sha>d47cae744ddfb625db8e391cecb261e4c3d7bb1c</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Security.Cryptography.Cng" Version="4.6.0-preview6.19279.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Dependency Name="System.Security.Cryptography.Cng" Version="4.6.0-preview6.19303.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Uri>https://github.com/dotnet/corefx</Uri>
|
||||
<Sha>e23119d577e644d2c2a25419c88c1181681358e0</Sha>
|
||||
<Sha>d47cae744ddfb625db8e391cecb261e4c3d7bb1c</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Security.Cryptography.Pkcs" Version="4.6.0-preview6.19279.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Dependency Name="System.Security.Cryptography.Pkcs" Version="4.6.0-preview6.19303.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Uri>https://github.com/dotnet/corefx</Uri>
|
||||
<Sha>e23119d577e644d2c2a25419c88c1181681358e0</Sha>
|
||||
<Sha>d47cae744ddfb625db8e391cecb261e4c3d7bb1c</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Security.Cryptography.Xml" Version="4.6.0-preview6.19279.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Dependency Name="System.Security.Cryptography.Xml" Version="4.6.0-preview6.19303.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Uri>https://github.com/dotnet/corefx</Uri>
|
||||
<Sha>e23119d577e644d2c2a25419c88c1181681358e0</Sha>
|
||||
<Sha>d47cae744ddfb625db8e391cecb261e4c3d7bb1c</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Security.Permissions" Version="4.6.0-preview6.19279.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Dependency Name="System.Security.Permissions" Version="4.6.0-preview6.19303.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Uri>https://github.com/dotnet/corefx</Uri>
|
||||
<Sha>e23119d577e644d2c2a25419c88c1181681358e0</Sha>
|
||||
<Sha>d47cae744ddfb625db8e391cecb261e4c3d7bb1c</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Security.Principal.Windows" Version="4.6.0-preview6.19279.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Dependency Name="System.Security.Principal.Windows" Version="4.6.0-preview6.19303.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Uri>https://github.com/dotnet/corefx</Uri>
|
||||
<Sha>e23119d577e644d2c2a25419c88c1181681358e0</Sha>
|
||||
<Sha>d47cae744ddfb625db8e391cecb261e4c3d7bb1c</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.ServiceProcess.ServiceController" Version="4.6.0-preview6.19279.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Dependency Name="System.ServiceProcess.ServiceController" Version="4.6.0-preview6.19303.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Uri>https://github.com/dotnet/corefx</Uri>
|
||||
<Sha>e23119d577e644d2c2a25419c88c1181681358e0</Sha>
|
||||
<Sha>d47cae744ddfb625db8e391cecb261e4c3d7bb1c</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Text.Encodings.Web" Version="4.6.0-preview6.19279.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Dependency Name="System.Text.Encodings.Web" Version="4.6.0-preview6.19303.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Uri>https://github.com/dotnet/corefx</Uri>
|
||||
<Sha>e23119d577e644d2c2a25419c88c1181681358e0</Sha>
|
||||
<Sha>d47cae744ddfb625db8e391cecb261e4c3d7bb1c</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Text.Json" Version="4.6.0-preview6.19279.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Dependency Name="System.Text.Json" Version="4.6.0-preview6.19303.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Uri>https://github.com/dotnet/corefx</Uri>
|
||||
<Sha>e23119d577e644d2c2a25419c88c1181681358e0</Sha>
|
||||
<Sha>d47cae744ddfb625db8e391cecb261e4c3d7bb1c</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="System.Threading.Channels" Version="4.6.0-preview6.19279.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Dependency Name="System.Threading.Channels" Version="4.6.0-preview6.19303.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Uri>https://github.com/dotnet/corefx</Uri>
|
||||
<Sha>e23119d577e644d2c2a25419c88c1181681358e0</Sha>
|
||||
<Sha>d47cae744ddfb625db8e391cecb261e4c3d7bb1c</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.Extensions.DependencyModel" Version="3.0.0-preview6-27730-01" CoherentParentDependency="Microsoft.Extensions.Logging">
|
||||
<Dependency Name="Microsoft.Extensions.DependencyModel" Version="3.0.0-preview6-27803-13" CoherentParentDependency="Microsoft.Extensions.Logging">
|
||||
<Uri>https://github.com/dotnet/core-setup</Uri>
|
||||
<Sha>63abc77da6d99470caa5bfa0465afe244105e595</Sha>
|
||||
<Sha>372355272004e08c035c61077f5d6ca4d8f9cd22</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.NETCore.App" Version="3.0.0-preview6-27730-01" CoherentParentDependency="Microsoft.Extensions.Logging">
|
||||
<Dependency Name="Microsoft.NETCore.App" Version="3.0.0-preview6-27803-13" CoherentParentDependency="Microsoft.Extensions.Logging">
|
||||
<Uri>https://github.com/dotnet/core-setup</Uri>
|
||||
<Sha>63abc77da6d99470caa5bfa0465afe244105e595</Sha>
|
||||
<Sha>372355272004e08c035c61077f5d6ca4d8f9cd22</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="NETStandard.Library.Ref" Version="2.1.0-preview6-27730-01" CoherentParentDependency="Microsoft.Extensions.Logging">
|
||||
<Dependency Name="NETStandard.Library.Ref" Version="2.1.0-preview6-27803-13" CoherentParentDependency="Microsoft.Extensions.Logging">
|
||||
<Uri>https://github.com/dotnet/core-setup</Uri>
|
||||
<Sha>63abc77da6d99470caa5bfa0465afe244105e595</Sha>
|
||||
<Sha>372355272004e08c035c61077f5d6ca4d8f9cd22</Sha>
|
||||
</Dependency>
|
||||
</ProductDependencies>
|
||||
<ToolsetDependencies>
|
||||
<!-- Listed explicitly to workaround https://github.com/dotnet/cli/issues/10528 -->
|
||||
<Dependency Name="Microsoft.NETCore.Platforms" Version="3.0.0-preview6.19279.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Dependency Name="Microsoft.NETCore.Platforms" Version="3.0.0-preview6.19303.8" CoherentParentDependency="Microsoft.NETCore.App">
|
||||
<Uri>https://github.com/dotnet/corefx</Uri>
|
||||
<Sha>e23119d577e644d2c2a25419c88c1181681358e0</Sha>
|
||||
<Sha>d47cae744ddfb625db8e391cecb261e4c3d7bb1c</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Internal.AspNetCore.Analyzers" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Internal.AspNetCore.Analyzers" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.DotNet.GenAPI" Version="1.0.0-beta.19302.2">
|
||||
<Uri>https://github.com/dotnet/arcade</Uri>
|
||||
|
|
@ -404,9 +404,9 @@
|
|||
<Uri>https://github.com/dotnet/arcade</Uri>
|
||||
<Sha>e6a5d5f970bb872451c6310ae34eda31041fb552</Sha>
|
||||
</Dependency>
|
||||
<Dependency Name="Microsoft.AspNetCore.Testing" Version="3.0.0-preview6.19303.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Dependency Name="Microsoft.AspNetCore.Testing" Version="3.0.0-preview6.19304.2" CoherentParentDependency="Microsoft.EntityFrameworkCore">
|
||||
<Uri>https://github.com/aspnet/Extensions</Uri>
|
||||
<Sha>6e92fcad99b6a6e882ac8dc5ad817b558f603597</Sha>
|
||||
<Sha>04a5ac947976fc17e701ffd4cd406b589e14b1e5</Sha>
|
||||
</Dependency>
|
||||
</ToolsetDependencies>
|
||||
</Dependencies>
|
||||
|
|
|
|||
|
|
@ -23,95 +23,95 @@
|
|||
<!-- Packages from dotnet/arcade -->
|
||||
<MicrosoftDotNetGenAPIPackageVersion>1.0.0-beta.19302.2</MicrosoftDotNetGenAPIPackageVersion>
|
||||
<!-- Packages from dotnet/core-setup -->
|
||||
<MicrosoftExtensionsDependencyModelPackageVersion>3.0.0-preview6-27730-01</MicrosoftExtensionsDependencyModelPackageVersion>
|
||||
<MicrosoftNETCoreAppPackageVersion>3.0.0-preview6-27730-01</MicrosoftNETCoreAppPackageVersion>
|
||||
<NETStandardLibraryRefPackageVersion>2.1.0-preview6-27730-01</NETStandardLibraryRefPackageVersion>
|
||||
<MicrosoftExtensionsDependencyModelPackageVersion>3.0.0-preview6-27803-13</MicrosoftExtensionsDependencyModelPackageVersion>
|
||||
<MicrosoftNETCoreAppPackageVersion>3.0.0-preview6-27803-13</MicrosoftNETCoreAppPackageVersion>
|
||||
<NETStandardLibraryRefPackageVersion>2.1.0-preview6-27803-13</NETStandardLibraryRefPackageVersion>
|
||||
<!-- Packages from dotnet/corefx -->
|
||||
<MicrosoftCSharpPackageVersion>4.6.0-preview6.19279.8</MicrosoftCSharpPackageVersion>
|
||||
<MicrosoftWin32RegistryPackageVersion>4.6.0-preview6.19279.8</MicrosoftWin32RegistryPackageVersion>
|
||||
<SystemComponentModelAnnotationsPackageVersion>4.6.0-preview6.19279.8</SystemComponentModelAnnotationsPackageVersion>
|
||||
<MicrosoftCSharpPackageVersion>4.6.0-preview6.19303.8</MicrosoftCSharpPackageVersion>
|
||||
<MicrosoftWin32RegistryPackageVersion>4.6.0-preview6.19303.8</MicrosoftWin32RegistryPackageVersion>
|
||||
<SystemComponentModelAnnotationsPackageVersion>4.6.0-preview6.19303.8</SystemComponentModelAnnotationsPackageVersion>
|
||||
<SystemDataSqlClientPackageVersion>4.7.0-preview6.19264.9</SystemDataSqlClientPackageVersion>
|
||||
<SystemDiagnosticsEventLogPackageVersion>4.6.0-preview6.19279.8</SystemDiagnosticsEventLogPackageVersion>
|
||||
<SystemIOPipelinesPackageVersion>4.6.0-preview6.19279.8</SystemIOPipelinesPackageVersion>
|
||||
<SystemNetHttpWinHttpHandlerPackageVersion>4.6.0-preview6.19279.8</SystemNetHttpWinHttpHandlerPackageVersion>
|
||||
<SystemNetWebSocketsWebSocketProtocolPackageVersion>4.6.0-preview6.19279.8</SystemNetWebSocketsWebSocketProtocolPackageVersion>
|
||||
<SystemReflectionMetadataPackageVersion>1.7.0-preview6.19279.8</SystemReflectionMetadataPackageVersion>
|
||||
<SystemRuntimeCompilerServicesUnsafePackageVersion>4.6.0-preview6.19279.8</SystemRuntimeCompilerServicesUnsafePackageVersion>
|
||||
<SystemSecurityCryptographyCngPackageVersion>4.6.0-preview6.19279.8</SystemSecurityCryptographyCngPackageVersion>
|
||||
<SystemSecurityCryptographyPkcsPackageVersion>4.6.0-preview6.19279.8</SystemSecurityCryptographyPkcsPackageVersion>
|
||||
<SystemSecurityCryptographyXmlPackageVersion>4.6.0-preview6.19279.8</SystemSecurityCryptographyXmlPackageVersion>
|
||||
<SystemSecurityPermissionsPackageVersion>4.6.0-preview6.19279.8</SystemSecurityPermissionsPackageVersion>
|
||||
<SystemSecurityPrincipalWindowsPackageVersion>4.6.0-preview6.19279.8</SystemSecurityPrincipalWindowsPackageVersion>
|
||||
<SystemServiceProcessServiceControllerPackageVersion>4.6.0-preview6.19279.8</SystemServiceProcessServiceControllerPackageVersion>
|
||||
<SystemTextEncodingsWebPackageVersion>4.6.0-preview6.19279.8</SystemTextEncodingsWebPackageVersion>
|
||||
<SystemTextJsonPackageVersion>4.6.0-preview6.19279.8</SystemTextJsonPackageVersion>
|
||||
<SystemThreadingChannelsPackageVersion>4.6.0-preview6.19279.8</SystemThreadingChannelsPackageVersion>
|
||||
<SystemDiagnosticsEventLogPackageVersion>4.6.0-preview6.19303.8</SystemDiagnosticsEventLogPackageVersion>
|
||||
<SystemIOPipelinesPackageVersion>4.6.0-preview6.19303.8</SystemIOPipelinesPackageVersion>
|
||||
<SystemNetHttpWinHttpHandlerPackageVersion>4.6.0-preview6.19303.8</SystemNetHttpWinHttpHandlerPackageVersion>
|
||||
<SystemNetWebSocketsWebSocketProtocolPackageVersion>4.6.0-preview6.19303.8</SystemNetWebSocketsWebSocketProtocolPackageVersion>
|
||||
<SystemReflectionMetadataPackageVersion>1.7.0-preview6.19303.8</SystemReflectionMetadataPackageVersion>
|
||||
<SystemRuntimeCompilerServicesUnsafePackageVersion>4.6.0-preview6.19303.8</SystemRuntimeCompilerServicesUnsafePackageVersion>
|
||||
<SystemSecurityCryptographyCngPackageVersion>4.6.0-preview6.19303.8</SystemSecurityCryptographyCngPackageVersion>
|
||||
<SystemSecurityCryptographyPkcsPackageVersion>4.6.0-preview6.19303.8</SystemSecurityCryptographyPkcsPackageVersion>
|
||||
<SystemSecurityCryptographyXmlPackageVersion>4.6.0-preview6.19303.8</SystemSecurityCryptographyXmlPackageVersion>
|
||||
<SystemSecurityPermissionsPackageVersion>4.6.0-preview6.19303.8</SystemSecurityPermissionsPackageVersion>
|
||||
<SystemSecurityPrincipalWindowsPackageVersion>4.6.0-preview6.19303.8</SystemSecurityPrincipalWindowsPackageVersion>
|
||||
<SystemServiceProcessServiceControllerPackageVersion>4.6.0-preview6.19303.8</SystemServiceProcessServiceControllerPackageVersion>
|
||||
<SystemTextEncodingsWebPackageVersion>4.6.0-preview6.19303.8</SystemTextEncodingsWebPackageVersion>
|
||||
<SystemTextJsonPackageVersion>4.6.0-preview6.19303.8</SystemTextJsonPackageVersion>
|
||||
<SystemThreadingChannelsPackageVersion>4.6.0-preview6.19303.8</SystemThreadingChannelsPackageVersion>
|
||||
<!-- Only listed explicitly to workaround https://github.com/dotnet/cli/issues/10528 -->
|
||||
<MicrosoftNETCorePlatformsPackageVersion>3.0.0-preview6.19279.8</MicrosoftNETCorePlatformsPackageVersion>
|
||||
<MicrosoftNETCorePlatformsPackageVersion>3.0.0-preview6.19303.8</MicrosoftNETCorePlatformsPackageVersion>
|
||||
<!-- Packages from aspnet/Blazor -->
|
||||
<MicrosoftAspNetCoreBlazorMonoPackageVersion>0.10.0-preview7.19303.2</MicrosoftAspNetCoreBlazorMonoPackageVersion>
|
||||
<!-- Packages from aspnet/Extensions -->
|
||||
<InternalAspNetCoreAnalyzersPackageVersion>3.0.0-preview6.19303.2</InternalAspNetCoreAnalyzersPackageVersion>
|
||||
<MicrosoftAspNetCoreAnalyzerTestingPackageVersion>3.0.0-preview6.19303.2</MicrosoftAspNetCoreAnalyzerTestingPackageVersion>
|
||||
<MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion>3.0.0-preview6.19303.2</MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion>
|
||||
<MicrosoftAspNetCoreTestingPackageVersion>3.0.0-preview6.19303.2</MicrosoftAspNetCoreTestingPackageVersion>
|
||||
<MicrosoftExtensionsActivatorUtilitiesSourcesPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsActivatorUtilitiesSourcesPackageVersion>
|
||||
<MicrosoftExtensionsCachingAbstractionsPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsCachingAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsCachingMemoryPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsCachingMemoryPackageVersion>
|
||||
<MicrosoftExtensionsCachingSqlServerPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsCachingSqlServerPackageVersion>
|
||||
<MicrosoftExtensionsCachingStackExchangeRedisPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsCachingStackExchangeRedisPackageVersion>
|
||||
<MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationAbstractionsPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsConfigurationAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationAzureKeyVaultPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsConfigurationAzureKeyVaultPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationBinderPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsConfigurationBinderPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationCommandLinePackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsConfigurationCommandLinePackageVersion>
|
||||
<MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationIniPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsConfigurationIniPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationJsonPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsConfigurationJsonPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationKeyPerFilePackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsConfigurationKeyPerFilePackageVersion>
|
||||
<MicrosoftExtensionsConfigurationPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsConfigurationPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationUserSecretsPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsConfigurationUserSecretsPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationXmlPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsConfigurationXmlPackageVersion>
|
||||
<MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsDependencyInjectionPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsDependencyInjectionPackageVersion>
|
||||
<MicrosoftExtensionsDiagnosticAdapterPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsDiagnosticAdapterPackageVersion>
|
||||
<MicrosoftExtensionsDiagnosticsHealthChecksAbstractionsPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsDiagnosticsHealthChecksAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsDiagnosticsHealthChecksPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsDiagnosticsHealthChecksPackageVersion>
|
||||
<MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsFileProvidersCompositePackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsFileProvidersCompositePackageVersion>
|
||||
<MicrosoftExtensionsFileProvidersEmbeddedPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsFileProvidersEmbeddedPackageVersion>
|
||||
<MicrosoftExtensionsFileProvidersPhysicalPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsFileProvidersPhysicalPackageVersion>
|
||||
<MicrosoftExtensionsFileSystemGlobbingPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsFileSystemGlobbingPackageVersion>
|
||||
<MicrosoftExtensionsHashCodeCombinerSourcesPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsHashCodeCombinerSourcesPackageVersion>
|
||||
<MicrosoftExtensionsHostingAbstractionsPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsHostingAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsHostingPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsHostingPackageVersion>
|
||||
<MicrosoftExtensionsHostFactoryResolverSourcesPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsHostFactoryResolverSourcesPackageVersion>
|
||||
<MicrosoftExtensionsHttpPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsHttpPackageVersion>
|
||||
<MicrosoftExtensionsLocalizationAbstractionsPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsLocalizationAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsLocalizationPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsLocalizationPackageVersion>
|
||||
<MicrosoftExtensionsLoggingAbstractionsPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsLoggingAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsLoggingAzureAppServicesPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsLoggingAzureAppServicesPackageVersion>
|
||||
<MicrosoftExtensionsLoggingConfigurationPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsLoggingConfigurationPackageVersion>
|
||||
<MicrosoftExtensionsLoggingConsolePackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsLoggingConsolePackageVersion>
|
||||
<MicrosoftExtensionsLoggingDebugPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsLoggingDebugPackageVersion>
|
||||
<MicrosoftExtensionsLoggingEventSourcePackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsLoggingEventSourcePackageVersion>
|
||||
<MicrosoftExtensionsLoggingEventLogPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsLoggingEventLogPackageVersion>
|
||||
<MicrosoftExtensionsLoggingPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsLoggingPackageVersion>
|
||||
<MicrosoftExtensionsLoggingTestingPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsLoggingTestingPackageVersion>
|
||||
<MicrosoftExtensionsLoggingTraceSourcePackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsLoggingTraceSourcePackageVersion>
|
||||
<MicrosoftExtensionsObjectPoolPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsObjectPoolPackageVersion>
|
||||
<MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>
|
||||
<MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>
|
||||
<MicrosoftExtensionsOptionsPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsOptionsPackageVersion>
|
||||
<MicrosoftExtensionsParameterDefaultValueSourcesPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsParameterDefaultValueSourcesPackageVersion>
|
||||
<MicrosoftExtensionsPrimitivesPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsPrimitivesPackageVersion>
|
||||
<MicrosoftExtensionsTypeNameHelperSourcesPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsTypeNameHelperSourcesPackageVersion>
|
||||
<MicrosoftExtensionsValueStopwatchSourcesPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsValueStopwatchSourcesPackageVersion>
|
||||
<MicrosoftExtensionsWebEncodersPackageVersion>3.0.0-preview6.19303.2</MicrosoftExtensionsWebEncodersPackageVersion>
|
||||
<MicrosoftInternalExtensionsRefsPackageVersion>3.0.0-preview6.19303.2</MicrosoftInternalExtensionsRefsPackageVersion>
|
||||
<MicrosoftJSInteropPackageVersion>3.0.0-preview6.19303.2</MicrosoftJSInteropPackageVersion>
|
||||
<MonoWebAssemblyInteropPackageVersion>3.0.0-preview6.19303.2</MonoWebAssemblyInteropPackageVersion>
|
||||
<InternalAspNetCoreAnalyzersPackageVersion>3.0.0-preview6.19304.2</InternalAspNetCoreAnalyzersPackageVersion>
|
||||
<MicrosoftAspNetCoreAnalyzerTestingPackageVersion>3.0.0-preview6.19304.2</MicrosoftAspNetCoreAnalyzerTestingPackageVersion>
|
||||
<MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion>3.0.0-preview6.19304.2</MicrosoftAspNetCoreBenchmarkRunnerSourcesPackageVersion>
|
||||
<MicrosoftAspNetCoreTestingPackageVersion>3.0.0-preview6.19304.2</MicrosoftAspNetCoreTestingPackageVersion>
|
||||
<MicrosoftExtensionsActivatorUtilitiesSourcesPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsActivatorUtilitiesSourcesPackageVersion>
|
||||
<MicrosoftExtensionsCachingAbstractionsPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsCachingAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsCachingMemoryPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsCachingMemoryPackageVersion>
|
||||
<MicrosoftExtensionsCachingSqlServerPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsCachingSqlServerPackageVersion>
|
||||
<MicrosoftExtensionsCachingStackExchangeRedisPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsCachingStackExchangeRedisPackageVersion>
|
||||
<MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsCommandLineUtilsSourcesPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationAbstractionsPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsConfigurationAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationAzureKeyVaultPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsConfigurationAzureKeyVaultPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationBinderPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsConfigurationBinderPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationCommandLinePackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsConfigurationCommandLinePackageVersion>
|
||||
<MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsConfigurationEnvironmentVariablesPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsConfigurationFileExtensionsPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationIniPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsConfigurationIniPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationJsonPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsConfigurationJsonPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationKeyPerFilePackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsConfigurationKeyPerFilePackageVersion>
|
||||
<MicrosoftExtensionsConfigurationPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsConfigurationPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationUserSecretsPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsConfigurationUserSecretsPackageVersion>
|
||||
<MicrosoftExtensionsConfigurationXmlPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsConfigurationXmlPackageVersion>
|
||||
<MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsDependencyInjectionAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsDependencyInjectionPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsDependencyInjectionPackageVersion>
|
||||
<MicrosoftExtensionsDiagnosticAdapterPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsDiagnosticAdapterPackageVersion>
|
||||
<MicrosoftExtensionsDiagnosticsHealthChecksAbstractionsPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsDiagnosticsHealthChecksAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsDiagnosticsHealthChecksPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsDiagnosticsHealthChecksPackageVersion>
|
||||
<MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsFileProvidersAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsFileProvidersCompositePackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsFileProvidersCompositePackageVersion>
|
||||
<MicrosoftExtensionsFileProvidersEmbeddedPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsFileProvidersEmbeddedPackageVersion>
|
||||
<MicrosoftExtensionsFileProvidersPhysicalPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsFileProvidersPhysicalPackageVersion>
|
||||
<MicrosoftExtensionsFileSystemGlobbingPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsFileSystemGlobbingPackageVersion>
|
||||
<MicrosoftExtensionsHashCodeCombinerSourcesPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsHashCodeCombinerSourcesPackageVersion>
|
||||
<MicrosoftExtensionsHostingAbstractionsPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsHostingAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsHostingPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsHostingPackageVersion>
|
||||
<MicrosoftExtensionsHostFactoryResolverSourcesPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsHostFactoryResolverSourcesPackageVersion>
|
||||
<MicrosoftExtensionsHttpPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsHttpPackageVersion>
|
||||
<MicrosoftExtensionsLocalizationAbstractionsPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsLocalizationAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsLocalizationPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsLocalizationPackageVersion>
|
||||
<MicrosoftExtensionsLoggingAbstractionsPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsLoggingAbstractionsPackageVersion>
|
||||
<MicrosoftExtensionsLoggingAzureAppServicesPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsLoggingAzureAppServicesPackageVersion>
|
||||
<MicrosoftExtensionsLoggingConfigurationPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsLoggingConfigurationPackageVersion>
|
||||
<MicrosoftExtensionsLoggingConsolePackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsLoggingConsolePackageVersion>
|
||||
<MicrosoftExtensionsLoggingDebugPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsLoggingDebugPackageVersion>
|
||||
<MicrosoftExtensionsLoggingEventSourcePackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsLoggingEventSourcePackageVersion>
|
||||
<MicrosoftExtensionsLoggingEventLogPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsLoggingEventLogPackageVersion>
|
||||
<MicrosoftExtensionsLoggingPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsLoggingPackageVersion>
|
||||
<MicrosoftExtensionsLoggingTestingPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsLoggingTestingPackageVersion>
|
||||
<MicrosoftExtensionsLoggingTraceSourcePackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsLoggingTraceSourcePackageVersion>
|
||||
<MicrosoftExtensionsObjectPoolPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsObjectPoolPackageVersion>
|
||||
<MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsOptionsConfigurationExtensionsPackageVersion>
|
||||
<MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsOptionsDataAnnotationsPackageVersion>
|
||||
<MicrosoftExtensionsOptionsPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsOptionsPackageVersion>
|
||||
<MicrosoftExtensionsParameterDefaultValueSourcesPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsParameterDefaultValueSourcesPackageVersion>
|
||||
<MicrosoftExtensionsPrimitivesPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsPrimitivesPackageVersion>
|
||||
<MicrosoftExtensionsTypeNameHelperSourcesPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsTypeNameHelperSourcesPackageVersion>
|
||||
<MicrosoftExtensionsValueStopwatchSourcesPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsValueStopwatchSourcesPackageVersion>
|
||||
<MicrosoftExtensionsWebEncodersPackageVersion>3.0.0-preview6.19304.2</MicrosoftExtensionsWebEncodersPackageVersion>
|
||||
<MicrosoftInternalExtensionsRefsPackageVersion>3.0.0-preview6.19304.2</MicrosoftInternalExtensionsRefsPackageVersion>
|
||||
<MicrosoftJSInteropPackageVersion>3.0.0-preview6.19304.2</MicrosoftJSInteropPackageVersion>
|
||||
<MonoWebAssemblyInteropPackageVersion>3.0.0-preview6.19304.2</MonoWebAssemblyInteropPackageVersion>
|
||||
<!-- Packages from aspnet/EntityFrameworkCore -->
|
||||
<dotnetefPackageVersion>3.0.0-preview7.19303.12</dotnetefPackageVersion>
|
||||
<MicrosoftEntityFrameworkCoreInMemoryPackageVersion>3.0.0-preview7.19303.12</MicrosoftEntityFrameworkCoreInMemoryPackageVersion>
|
||||
|
|
@ -180,9 +180,9 @@
|
|||
<BenchmarkDotNetPackageVersion>0.10.13</BenchmarkDotNetPackageVersion>
|
||||
<CastleCorePackageVersion>4.2.1</CastleCorePackageVersion>
|
||||
<FSharpCorePackageVersion>4.2.1</FSharpCorePackageVersion>
|
||||
<GoogleProtobufPackageVersion>3.7.0</GoogleProtobufPackageVersion>
|
||||
<GrpcAspNetCoreServerPackageVersion>0.1.21-dev201905010701</GrpcAspNetCoreServerPackageVersion>
|
||||
<GrpcToolsPackageVersion>1.20.0-pre3</GrpcToolsPackageVersion>
|
||||
<GoogleProtobufPackageVersion>3.8.0</GoogleProtobufPackageVersion>
|
||||
<GrpcAspNetCoreServerPackageVersion>0.1.21-pre1</GrpcAspNetCoreServerPackageVersion>
|
||||
<GrpcToolsPackageVersion>1.21.0</GrpcToolsPackageVersion>
|
||||
<IdentityServer4AspNetIdentityPackageVersion>3.0.0-preview3.4</IdentityServer4AspNetIdentityPackageVersion>
|
||||
<IdentityServer4EntityFrameworkPackageVersion>3.0.0-preview3.4</IdentityServer4EntityFrameworkPackageVersion>
|
||||
<IdentityServer4PackageVersion>3.0.0-preview3.4</IdentityServer4PackageVersion>
|
||||
|
|
|
|||
|
|
@ -13,5 +13,9 @@
|
|||
<assembly fullname="System">
|
||||
<!-- Without this, [Required(typeof(bool), "true", "true", ErrorMessage = "...")] fails -->
|
||||
<type fullname="System.ComponentModel.BooleanConverter" />
|
||||
|
||||
<!-- TypeConverters are only used through reflection. These are two built-in TypeConverters that are useful. -->
|
||||
<type fullname="System.ComponentModel.GuidConverter" />
|
||||
<type fullname="System.ComponentModel.TimeSpanConverter" />
|
||||
</assembly>
|
||||
</linker>
|
||||
|
|
|
|||
|
|
@ -155,6 +155,7 @@ namespace Microsoft.AspNetCore.Components
|
|||
public static Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.UIChangeEventArgs> CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory factory, object receiver, System.Action<int> setter, int existingValue) { throw null; }
|
||||
public static Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.UIChangeEventArgs> CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory factory, object receiver, System.Action<long> setter, long existingValue) { throw null; }
|
||||
public static Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.UIChangeEventArgs> CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory factory, object receiver, System.Action<bool?> setter, bool? existingValue) { throw null; }
|
||||
public static Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.UIChangeEventArgs> CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory factory, object receiver, System.Action<System.DateTime?> setter, System.DateTime? existingValue) { throw null; }
|
||||
public static Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.UIChangeEventArgs> CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory factory, object receiver, System.Action<decimal?> setter, decimal? existingValue) { throw null; }
|
||||
public static Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.UIChangeEventArgs> CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory factory, object receiver, System.Action<double?> setter, double? existingValue) { throw null; }
|
||||
public static Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.UIChangeEventArgs> CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory factory, object receiver, System.Action<int?> setter, int? existingValue) { throw null; }
|
||||
|
|
@ -162,7 +163,7 @@ namespace Microsoft.AspNetCore.Components
|
|||
public static Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.UIChangeEventArgs> CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory factory, object receiver, System.Action<float?> setter, float? existingValue) { throw null; }
|
||||
public static Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.UIChangeEventArgs> CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory factory, object receiver, System.Action<float> setter, float existingValue) { throw null; }
|
||||
public static Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.UIChangeEventArgs> CreateBinder(this Microsoft.AspNetCore.Components.EventCallbackFactory factory, object receiver, System.Action<string> setter, string existingValue) { throw null; }
|
||||
public static Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.UIChangeEventArgs> CreateBinder<T>(this Microsoft.AspNetCore.Components.EventCallbackFactory factory, object receiver, System.Action<T> setter, T existingValue) where T : struct, System.Enum { throw null; }
|
||||
public static Microsoft.AspNetCore.Components.EventCallback<Microsoft.AspNetCore.Components.UIChangeEventArgs> CreateBinder<T>(this Microsoft.AspNetCore.Components.EventCallbackFactory factory, object receiver, System.Action<T> setter, T existingValue) { throw null; }
|
||||
}
|
||||
public static partial class EventCallbackFactoryUIEventArgsExtensions
|
||||
{
|
||||
|
|
|
|||
|
|
@ -2,13 +2,27 @@
|
|||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.Globalization;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Microsoft.AspNetCore.Components
|
||||
{
|
||||
/// <summary>
|
||||
/// Contains extension methods for two-way binding using <see cref="EventCallback"/>. For internal use only.
|
||||
/// </summary>
|
||||
//
|
||||
// NOTE: for number parsing, the HTML5 spec dictates that <input type="number"> the DOM will represent
|
||||
// number values as floating point numbers using `.` as the period separator. This is NOT culture senstive.
|
||||
// Put another way, the user might see `,` as their decimal separator, but the value available in events
|
||||
// to JS code is always simpilar to what .NET parses with InvariantCulture.
|
||||
//
|
||||
// See: https://www.w3.org/TR/html5/sec-forms.html#number-state-typenumber
|
||||
// See: https://www.w3.org/TR/html5/infrastructure.html#valid-floating-point-number
|
||||
//
|
||||
// For now we're not necessarily handling this correctly since we parse the same way for number and text.
|
||||
public static class EventCallbackFactoryBinderExtensions
|
||||
{
|
||||
private delegate bool BindConverter<T>(object obj, out T value);
|
||||
|
|
@ -53,7 +67,7 @@ namespace Microsoft.AspNetCore.Components
|
|||
return false;
|
||||
}
|
||||
|
||||
if (!int.TryParse(text, out var converted))
|
||||
if (!int.TryParse(text, NumberStyles.Integer, CultureInfo.CurrentCulture, out var converted))
|
||||
{
|
||||
value = default;
|
||||
return false;
|
||||
|
|
@ -72,7 +86,7 @@ namespace Microsoft.AspNetCore.Components
|
|||
return true;
|
||||
}
|
||||
|
||||
if (!int.TryParse(text, out var converted))
|
||||
if (!int.TryParse(text, NumberStyles.Integer, CultureInfo.CurrentCulture, out var converted))
|
||||
{
|
||||
value = default;
|
||||
return false;
|
||||
|
|
@ -94,7 +108,7 @@ namespace Microsoft.AspNetCore.Components
|
|||
return false;
|
||||
}
|
||||
|
||||
if (!long.TryParse(text, out var converted))
|
||||
if (!long.TryParse(text, NumberStyles.Integer, CultureInfo.CurrentCulture, out var converted))
|
||||
{
|
||||
value = default;
|
||||
return false;
|
||||
|
|
@ -113,7 +127,7 @@ namespace Microsoft.AspNetCore.Components
|
|||
return true;
|
||||
}
|
||||
|
||||
if (!long.TryParse(text, out var converted))
|
||||
if (!long.TryParse(text, NumberStyles.Integer, CultureInfo.CurrentCulture, out var converted))
|
||||
{
|
||||
value = default;
|
||||
return false;
|
||||
|
|
@ -135,7 +149,7 @@ namespace Microsoft.AspNetCore.Components
|
|||
return false;
|
||||
}
|
||||
|
||||
if (!float.TryParse(text, out var converted))
|
||||
if (!float.TryParse(text, NumberStyles.Number, CultureInfo.CurrentCulture, out var converted))
|
||||
{
|
||||
value = default;
|
||||
return false;
|
||||
|
|
@ -154,7 +168,7 @@ namespace Microsoft.AspNetCore.Components
|
|||
return true;
|
||||
}
|
||||
|
||||
if (!float.TryParse(text, out var converted))
|
||||
if (!float.TryParse(text, NumberStyles.Number, CultureInfo.CurrentCulture, out var converted))
|
||||
{
|
||||
value = default;
|
||||
return false;
|
||||
|
|
@ -176,7 +190,7 @@ namespace Microsoft.AspNetCore.Components
|
|||
return false;
|
||||
}
|
||||
|
||||
if (!double.TryParse(text, out var converted))
|
||||
if (!double.TryParse(text, NumberStyles.Number, CultureInfo.CurrentCulture, out var converted))
|
||||
{
|
||||
value = default;
|
||||
return false;
|
||||
|
|
@ -195,7 +209,7 @@ namespace Microsoft.AspNetCore.Components
|
|||
return true;
|
||||
}
|
||||
|
||||
if (!double.TryParse(text, out var converted))
|
||||
if (!double.TryParse(text, NumberStyles.Number, CultureInfo.CurrentCulture, out var converted))
|
||||
{
|
||||
value = default;
|
||||
return false;
|
||||
|
|
@ -217,7 +231,7 @@ namespace Microsoft.AspNetCore.Components
|
|||
return false;
|
||||
}
|
||||
|
||||
if (!decimal.TryParse(text, out var converted))
|
||||
if (!decimal.TryParse(text, NumberStyles.Number, CultureInfo.CurrentCulture, out var converted))
|
||||
{
|
||||
value = default;
|
||||
return false;
|
||||
|
|
@ -236,7 +250,7 @@ namespace Microsoft.AspNetCore.Components
|
|||
return true;
|
||||
}
|
||||
|
||||
if (!decimal.TryParse(text, out var converted))
|
||||
if (!decimal.TryParse(text, NumberStyles.Number, CultureInfo.CurrentCulture, out var converted))
|
||||
{
|
||||
value = default;
|
||||
return false;
|
||||
|
|
@ -246,28 +260,83 @@ namespace Microsoft.AspNetCore.Components
|
|||
return true;
|
||||
}
|
||||
|
||||
private static class EnumConverter<T> where T : struct, Enum
|
||||
private static BindConverter<DateTime> ConvertToDateTime = ConvertToDateTimeCore;
|
||||
private static BindConverter<DateTime?> ConvertToNullableDateTime = ConvertToNullableDateTimeCore;
|
||||
|
||||
private static bool ConvertToDateTimeCore(object obj, out DateTime value)
|
||||
{
|
||||
public static readonly BindConverter<T> Convert = ConvertCore;
|
||||
|
||||
public static bool ConvertCore(object obj, out T value)
|
||||
var text = (string)obj;
|
||||
if (string.IsNullOrEmpty(text))
|
||||
{
|
||||
var text = (string)obj;
|
||||
if (string.IsNullOrEmpty(text))
|
||||
{
|
||||
value = default;
|
||||
return true;
|
||||
}
|
||||
value = default;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!Enum.TryParse<T>(text, out var converted))
|
||||
{
|
||||
value = default;
|
||||
return false;
|
||||
}
|
||||
if (!DateTime.TryParse(text, CultureInfo.CurrentCulture, DateTimeStyles.None, out var converted))
|
||||
{
|
||||
value = default;
|
||||
return false;
|
||||
}
|
||||
|
||||
value = converted;
|
||||
value = converted;
|
||||
return true;
|
||||
}
|
||||
|
||||
private static bool ConvertToNullableDateTimeCore(object obj, out DateTime? value)
|
||||
{
|
||||
var text = (string)obj;
|
||||
if (string.IsNullOrEmpty(text))
|
||||
{
|
||||
value = default;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!DateTime.TryParse(text, CultureInfo.CurrentCulture, DateTimeStyles.None, out var converted))
|
||||
{
|
||||
value = default;
|
||||
return false;
|
||||
}
|
||||
|
||||
value = converted;
|
||||
return true;
|
||||
}
|
||||
|
||||
private static bool ConvertToEnum<T>(object obj, out T value) where T : struct, Enum
|
||||
{
|
||||
var text = (string)obj;
|
||||
if (string.IsNullOrEmpty(text))
|
||||
{
|
||||
value = default;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!Enum.TryParse<T>(text, out var converted))
|
||||
{
|
||||
value = default;
|
||||
return false;
|
||||
}
|
||||
|
||||
value = converted;
|
||||
return true;
|
||||
}
|
||||
|
||||
private static bool ConvertToNullableEnum<T>(object obj, out Nullable<T> value) where T : struct, Enum
|
||||
{
|
||||
var text = (string)obj;
|
||||
if (string.IsNullOrEmpty(text))
|
||||
{
|
||||
value = default;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!Enum.TryParse<T>(text, out var converted))
|
||||
{
|
||||
value = default;
|
||||
return false;
|
||||
}
|
||||
|
||||
value = converted;
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -284,7 +353,6 @@ namespace Microsoft.AspNetCore.Components
|
|||
Action<string> setter,
|
||||
string existingValue)
|
||||
{
|
||||
;
|
||||
return CreateBinderCore<string>(factory, receiver, setter, ConvertToString);
|
||||
}
|
||||
|
||||
|
|
@ -489,15 +557,6 @@ namespace Microsoft.AspNetCore.Components
|
|||
Action<decimal?> setter,
|
||||
decimal? existingValue)
|
||||
{
|
||||
Func<object, decimal?> converter = (obj) =>
|
||||
{
|
||||
if (decimal.TryParse((string)obj, out var value))
|
||||
{
|
||||
return value;
|
||||
}
|
||||
|
||||
return null;
|
||||
};
|
||||
return CreateBinderCore<decimal?>(factory, receiver, setter, ConvertToNullableDecimal);
|
||||
}
|
||||
|
||||
|
|
@ -515,28 +574,24 @@ namespace Microsoft.AspNetCore.Components
|
|||
Action<DateTime> setter,
|
||||
DateTime existingValue)
|
||||
{
|
||||
// Avoiding CreateBinderCore so we can avoid an extra allocating lambda
|
||||
// when a format is used.
|
||||
Action<UIChangeEventArgs> callback = (e) =>
|
||||
{
|
||||
DateTime value = default;
|
||||
var converted = false;
|
||||
try
|
||||
{
|
||||
value = ConvertDateTime(e.Value, format: null);
|
||||
converted = true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
return CreateBinderCore<DateTime>(factory, receiver, setter, ConvertToDateTime);
|
||||
}
|
||||
|
||||
// See comments in CreateBinderCore
|
||||
if (converted)
|
||||
{
|
||||
setter(value);
|
||||
}
|
||||
};
|
||||
return factory.Create<UIChangeEventArgs>(receiver, callback);
|
||||
/// <summary>
|
||||
/// For internal use only.
|
||||
/// </summary>
|
||||
/// <param name="factory"></param>
|
||||
/// <param name="receiver"></param>
|
||||
/// <param name="setter"></param>
|
||||
/// <param name="existingValue"></param>
|
||||
/// <returns></returns>
|
||||
public static EventCallback<UIChangeEventArgs> CreateBinder(
|
||||
this EventCallbackFactory factory,
|
||||
object receiver,
|
||||
Action<DateTime?> setter,
|
||||
DateTime? existingValue)
|
||||
{
|
||||
return CreateBinderCore<DateTime?>(factory, receiver, setter, ConvertToNullableDateTime);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -577,6 +632,23 @@ namespace Microsoft.AspNetCore.Components
|
|||
}
|
||||
};
|
||||
return factory.Create<UIChangeEventArgs>(receiver, callback);
|
||||
|
||||
static DateTime ConvertDateTime(object obj, string format)
|
||||
{
|
||||
var text = (string)obj;
|
||||
if (string.IsNullOrEmpty(text))
|
||||
{
|
||||
return default;
|
||||
}
|
||||
else if (format != null && DateTime.TryParseExact(text, format, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out var value))
|
||||
{
|
||||
return value;
|
||||
}
|
||||
else
|
||||
{
|
||||
return DateTime.Parse(text);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -592,26 +664,9 @@ namespace Microsoft.AspNetCore.Components
|
|||
this EventCallbackFactory factory,
|
||||
object receiver,
|
||||
Action<T> setter,
|
||||
T existingValue) where T : struct, Enum
|
||||
T existingValue)
|
||||
{
|
||||
return CreateBinderCore<T>(factory, receiver, setter, EnumConverter<T>.Convert);
|
||||
}
|
||||
|
||||
private static DateTime ConvertDateTime(object obj, string format)
|
||||
{
|
||||
var text = (string)obj;
|
||||
if (string.IsNullOrEmpty(text))
|
||||
{
|
||||
return default;
|
||||
}
|
||||
else if (format != null && DateTime.TryParseExact(text, format, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out var value))
|
||||
{
|
||||
return value;
|
||||
}
|
||||
else
|
||||
{
|
||||
return DateTime.Parse(text);
|
||||
}
|
||||
return CreateBinderCore<T>(factory, receiver, setter, BinderConverterCache.Get<T>());
|
||||
}
|
||||
|
||||
private static EventCallback<UIChangeEventArgs> CreateBinderCore<T>(
|
||||
|
|
@ -642,5 +697,139 @@ namespace Microsoft.AspNetCore.Components
|
|||
};
|
||||
return factory.Create<UIChangeEventArgs>(receiver, callback);
|
||||
}
|
||||
|
||||
// We can't rely on generics + static to cache here unfortunately. That would require us to overload
|
||||
// CreateBinder on T : struct AND T : class, which is not allowed.
|
||||
private static class BinderConverterCache
|
||||
{
|
||||
private readonly static ConcurrentDictionary<Type, Delegate> _cache = new ConcurrentDictionary<Type, Delegate>();
|
||||
|
||||
private static MethodInfo _convertToEnum;
|
||||
private static MethodInfo _convertToNullableEnum;
|
||||
|
||||
public static BindConverter<T> Get<T>()
|
||||
{
|
||||
if (!_cache.TryGetValue(typeof(T), out var converter))
|
||||
{
|
||||
// We need to replicate all of the primitive cases that we handle here so that they will behave the same way.
|
||||
// The result will be cached.
|
||||
if (typeof(T) == typeof(string))
|
||||
{
|
||||
converter = ConvertToString;
|
||||
}
|
||||
else if (typeof(T) == typeof(bool))
|
||||
{
|
||||
converter = ConvertToBool;
|
||||
}
|
||||
else if (typeof(T) == typeof(bool?))
|
||||
{
|
||||
converter = ConvertToNullableBool;
|
||||
}
|
||||
else if (typeof(T) == typeof(int))
|
||||
{
|
||||
converter = ConvertToInt;
|
||||
}
|
||||
else if (typeof(T) == typeof(int?))
|
||||
{
|
||||
converter = ConvertToNullableInt;
|
||||
}
|
||||
else if (typeof(T) == typeof(long))
|
||||
{
|
||||
converter = ConvertToLong;
|
||||
}
|
||||
else if (typeof(T) == typeof(long?))
|
||||
{
|
||||
converter = ConvertToNullableLong;
|
||||
}
|
||||
else if (typeof(T) == typeof(float))
|
||||
{
|
||||
converter = ConvertToFloat;
|
||||
}
|
||||
else if (typeof(T) == typeof(float?))
|
||||
{
|
||||
converter = ConvertToNullableFloat;
|
||||
}
|
||||
else if (typeof(T) == typeof(double))
|
||||
{
|
||||
converter = ConvertToDouble;
|
||||
}
|
||||
else if (typeof(T) == typeof(double?))
|
||||
{
|
||||
converter = ConvertToNullableDouble;
|
||||
}
|
||||
else if (typeof(T) == typeof(decimal))
|
||||
{
|
||||
converter = ConvertToDecimal;
|
||||
}
|
||||
else if (typeof(T) == typeof(decimal?))
|
||||
{
|
||||
converter = ConvertToNullableDecimal;
|
||||
}
|
||||
else if (typeof(T) == typeof(DateTime))
|
||||
{
|
||||
converter = ConvertToDateTime;
|
||||
}
|
||||
else if (typeof(T) == typeof(DateTime?))
|
||||
{
|
||||
converter = ConvertToNullableDateTime;
|
||||
}
|
||||
else if (typeof(T).IsEnum)
|
||||
{
|
||||
// We have to deal invoke this dynamically to work around the type constraint on Enum.TryParse.
|
||||
var method = _convertToEnum ??= typeof(EventCallbackFactoryBinderExtensions).GetMethod(nameof(ConvertToEnum), BindingFlags.NonPublic | BindingFlags.Static);
|
||||
converter = method.MakeGenericMethod(typeof(T)).CreateDelegate(typeof(BindConverter<T>), target: null);
|
||||
}
|
||||
else if (Nullable.GetUnderlyingType(typeof(T)) is Type innerType && innerType.IsEnum)
|
||||
{
|
||||
// We have to deal invoke this dynamically to work around the type constraint on Enum.TryParse.
|
||||
var method = _convertToNullableEnum ??= typeof(EventCallbackFactoryBinderExtensions).GetMethod(nameof(ConvertToNullableEnum), BindingFlags.NonPublic | BindingFlags.Static);
|
||||
converter = method.MakeGenericMethod(innerType).CreateDelegate(typeof(BindConverter<T>), target: null);
|
||||
}
|
||||
else
|
||||
{
|
||||
converter = MakeTypeConverterConverter<T>();
|
||||
}
|
||||
|
||||
_cache.TryAdd(typeof(T), converter);
|
||||
}
|
||||
|
||||
return (BindConverter<T>)converter;
|
||||
}
|
||||
|
||||
private static BindConverter<T> MakeTypeConverterConverter<T>()
|
||||
{
|
||||
var typeConverter = TypeDescriptor.GetConverter(typeof(T));
|
||||
if (typeConverter == null || !typeConverter.CanConvertFrom(typeof(string)))
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
$"The type '{typeof(T).FullName}' does not have an associated {typeof(TypeConverter).Name} that supports " +
|
||||
$"conversion from a string. " +
|
||||
$"Apply '{typeof(TypeConverterAttribute).Name}' to the type to register a converter.");
|
||||
}
|
||||
|
||||
return ConvertWithTypeConverter;
|
||||
|
||||
bool ConvertWithTypeConverter(object obj, out T value)
|
||||
{
|
||||
var text = (string)obj;
|
||||
if (string.IsNullOrEmpty(text))
|
||||
{
|
||||
value = default;
|
||||
return true;
|
||||
}
|
||||
|
||||
// We intentionally close-over the TypeConverter to cache it. The TypeDescriptor infrastructure is slow.
|
||||
var converted = typeConverter.ConvertFromString(context: null, CultureInfo.CurrentCulture, text);
|
||||
if (converted == null)
|
||||
{
|
||||
value = default;
|
||||
return false;
|
||||
}
|
||||
|
||||
value = (T)converted;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
// 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.Globalization;
|
||||
using System.Threading.Tasks;
|
||||
using Xunit;
|
||||
|
||||
|
|
@ -344,6 +346,25 @@ namespace Microsoft.AspNetCore.Components
|
|||
Assert.Equal(1, component.Count);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task CreateBinder_NullableEnum()
|
||||
{
|
||||
// Arrange
|
||||
var value = (AttributeTargets?)AttributeTargets.All;
|
||||
var component = new EventCountingComponent();
|
||||
Action<AttributeTargets?> setter = (_) => value = _;
|
||||
|
||||
var binder = EventCallback.Factory.CreateBinder(component, setter, value);
|
||||
|
||||
var expectedValue = AttributeTargets.Class;
|
||||
|
||||
// Act
|
||||
await binder.InvokeAsync(new UIChangeEventArgs() { Value = expectedValue.ToString(), });
|
||||
|
||||
Assert.Equal(expectedValue, value);
|
||||
Assert.Equal(1, component.Count);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task CreateBinder_DateTime()
|
||||
{
|
||||
|
|
@ -363,6 +384,26 @@ namespace Microsoft.AspNetCore.Components
|
|||
Assert.Equal(1, component.Count);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task CreateBinder_NullableDateTime()
|
||||
{
|
||||
// Arrange
|
||||
var value = (DateTime?)DateTime.Now;
|
||||
var component = new EventCountingComponent();
|
||||
Action<DateTime?> setter = (_) => value = _;
|
||||
|
||||
var binder = EventCallback.Factory.CreateBinder(component, setter, value);
|
||||
|
||||
var expectedValue = new DateTime(2018, 3, 4, 1, 2, 3);
|
||||
|
||||
// Act
|
||||
await binder.InvokeAsync(new UIChangeEventArgs() { Value = expectedValue.ToString(), });
|
||||
|
||||
Assert.Equal(expectedValue, value);
|
||||
Assert.Equal(1, component.Count);
|
||||
}
|
||||
|
||||
// For now format is only supported by this specific method.
|
||||
[Fact]
|
||||
public async Task CreateBinder_DateTime_Format()
|
||||
{
|
||||
|
|
@ -383,6 +424,80 @@ namespace Microsoft.AspNetCore.Components
|
|||
Assert.Equal(1, component.Count);
|
||||
}
|
||||
|
||||
// This uses a type converter
|
||||
[Fact]
|
||||
public async Task CreateBinder_Guid()
|
||||
{
|
||||
// Arrange
|
||||
var value = Guid.NewGuid();
|
||||
var component = new EventCountingComponent();
|
||||
Action<Guid> setter = (_) => value = _;
|
||||
|
||||
var binder = EventCallback.Factory.CreateBinder(component, setter, value);
|
||||
|
||||
var expectedValue = Guid.NewGuid();
|
||||
|
||||
// Act
|
||||
await binder.InvokeAsync(new UIChangeEventArgs() { Value = expectedValue.ToString(), });
|
||||
|
||||
Assert.Equal(expectedValue, value);
|
||||
Assert.Equal(1, component.Count);
|
||||
}
|
||||
|
||||
// This uses a type converter
|
||||
[Fact]
|
||||
public async Task CreateBinder_NullableGuid()
|
||||
{
|
||||
// Arrange
|
||||
var value = (Guid?)Guid.NewGuid();
|
||||
var component = new EventCountingComponent();
|
||||
Action<Guid?> setter = (_) => value = _;
|
||||
|
||||
var binder = EventCallback.Factory.CreateBinder(component, setter, value);
|
||||
|
||||
var expectedValue = Guid.NewGuid();
|
||||
|
||||
// Act
|
||||
await binder.InvokeAsync(new UIChangeEventArgs() { Value = expectedValue.ToString(), });
|
||||
|
||||
Assert.Equal(expectedValue, value);
|
||||
Assert.Equal(1, component.Count);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task CreateBinder_CustomTypeConverter()
|
||||
{
|
||||
// Arrange
|
||||
var value = new SecretMessage() { Message = "A message", };
|
||||
var component = new EventCountingComponent();
|
||||
Action<SecretMessage> setter = (_) => value = _;
|
||||
|
||||
var binder = EventCallback.Factory.CreateBinder(component, setter, value);
|
||||
|
||||
var expectedValue = new SecretMessage() { Message = "TypeConverter may be old, but it still works!", };
|
||||
|
||||
// Act
|
||||
await binder.InvokeAsync(new UIChangeEventArgs() { Value = expectedValue.ToString(), });
|
||||
|
||||
Assert.Equal(expectedValue.Message, value.Message);
|
||||
Assert.Equal(1, component.Count);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CreateBinder_GenericWithoutTypeConverter_Throws()
|
||||
{
|
||||
var value = new ClassWithoutTypeConverter();
|
||||
var component = new EventCountingComponent();
|
||||
Action<ClassWithoutTypeConverter> setter = (_) => value = _;
|
||||
|
||||
var ex = Assert.Throws<InvalidOperationException>(() => EventCallback.Factory.CreateBinder(component, setter, value));
|
||||
|
||||
Assert.Equal(
|
||||
$"The type '{typeof(ClassWithoutTypeConverter).FullName}' does not have an associated TypeConverter that supports conversion from a string. " +
|
||||
$"Apply 'TypeConverterAttribute' to the type to register a converter.",
|
||||
ex.Message);
|
||||
}
|
||||
|
||||
private class EventCountingComponent : IComponent, IHandleEvent
|
||||
{
|
||||
public int Count;
|
||||
|
|
@ -403,5 +518,42 @@ namespace Microsoft.AspNetCore.Components
|
|||
throw new System.NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
private class ClassWithoutTypeConverter
|
||||
{
|
||||
}
|
||||
|
||||
[TypeConverter(typeof(SecretMessageTypeConverter))]
|
||||
private class SecretMessage
|
||||
{
|
||||
public string Message { get; set; }
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return Message;
|
||||
}
|
||||
}
|
||||
|
||||
private class SecretMessageTypeConverter : TypeConverter
|
||||
{
|
||||
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
|
||||
{
|
||||
if (sourceType == typeof(string))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
|
||||
{
|
||||
if (value is string message)
|
||||
{
|
||||
return new SecretMessage() { Message = message, };
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
// 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 BasicTestApp;
|
||||
using Microsoft.AspNetCore.Components.E2ETest.Infrastructure;
|
||||
using Microsoft.AspNetCore.Components.E2ETest.Infrastructure.ServerFixtures;
|
||||
|
|
@ -538,5 +539,48 @@ namespace Microsoft.AspNetCore.Components.E2ETest.Tests
|
|||
Browser.Equal("0.011", () => boundValue.Text);
|
||||
Assert.Equal("0.011", mirrorValue.GetAttribute("value"));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CanBindTextboxGenericInt()
|
||||
{
|
||||
var target = Browser.FindElement(By.Id("textbox-generic-int"));
|
||||
var boundValue = Browser.FindElement(By.Id("textbox-generic-int-value"));
|
||||
var mirrorValue = Browser.FindElement(By.Id("textbox-generic-int-mirror"));
|
||||
Assert.Equal("-42", target.GetAttribute("value"));
|
||||
Assert.Equal("-42", boundValue.Text);
|
||||
Assert.Equal("-42", mirrorValue.GetAttribute("value"));
|
||||
|
||||
// Modify target; value is not updated because it's not convertable.
|
||||
target.Clear();
|
||||
Browser.Equal("-42", () => boundValue.Text);
|
||||
Assert.Equal("-42", mirrorValue.GetAttribute("value"));
|
||||
|
||||
// Modify target; verify value is updated and that textboxes linked to the same data are updated
|
||||
target.SendKeys("42\t");
|
||||
Browser.Equal("42", () => boundValue.Text);
|
||||
Assert.Equal("42", mirrorValue.GetAttribute("value"));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CanBindTextboxGenericGuid()
|
||||
{
|
||||
var target = Browser.FindElement(By.Id("textbox-generic-guid"));
|
||||
var boundValue = Browser.FindElement(By.Id("textbox-generic-guid-value"));
|
||||
var mirrorValue = Browser.FindElement(By.Id("textbox-generic-guid-mirror"));
|
||||
Assert.Equal("00000000-0000-0000-0000-000000000000", target.GetAttribute("value"));
|
||||
Assert.Equal("00000000-0000-0000-0000-000000000000", boundValue.Text);
|
||||
Assert.Equal("00000000-0000-0000-0000-000000000000", mirrorValue.GetAttribute("value"));
|
||||
|
||||
// Modify target; value is not updated because it's not convertable.
|
||||
target.Clear();
|
||||
Browser.Equal("00000000-0000-0000-0000-000000000000", () => boundValue.Text);
|
||||
Assert.Equal("00000000-0000-0000-0000-000000000000", mirrorValue.GetAttribute("value"));
|
||||
|
||||
// Modify target; verify value is updated and that textboxes linked to the same data are updated
|
||||
var newValue = Guid.NewGuid().ToString();
|
||||
target.SendKeys(newValue + "\t");
|
||||
Browser.Equal(newValue, () => boundValue.Text);
|
||||
Assert.Equal(newValue, mirrorValue.GetAttribute("value"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -90,6 +90,19 @@
|
|||
<input id="textbox-nullable-decimal-invalid-mirror" @bind="textboxNullableDecimalInvalidValue" readonly />
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Generic bind (int):
|
||||
<BindGenericComponent Id="textbox-generic-int" @bind-Value="textboxGenericIntValue" />
|
||||
<span id="textbox-generic-int-value">@textboxGenericIntValue</span>
|
||||
<input id="textbox-generic-int-mirror" @bind="textboxGenericIntValue" readonly />
|
||||
</p>
|
||||
<p>
|
||||
Generic bind (guid):
|
||||
<BindGenericComponent Id="textbox-generic-guid" @bind-Value="textboxGenericGuidValue" />
|
||||
<span id="textbox-generic-guid-value">@textboxGenericGuidValue</span>
|
||||
<input id="textbox-generic-guid-mirror" @bind="textboxGenericGuidValue" readonly />
|
||||
</p>
|
||||
|
||||
<h2>Text Area</h2>
|
||||
<p>
|
||||
Initially blank:
|
||||
|
|
@ -138,36 +151,39 @@
|
|||
</p>
|
||||
|
||||
@code {
|
||||
string textboxInitiallyBlankValue = null;
|
||||
string textboxInitiallyPopulatedValue = "Hello";
|
||||
string textboxInitiallyBlankValue = null;
|
||||
string textboxInitiallyPopulatedValue = "Hello";
|
||||
|
||||
string textAreaInitiallyBlankValue = null;
|
||||
string textAreaInitiallyPopulatedValue = "Hello";
|
||||
string textAreaInitiallyBlankValue = null;
|
||||
string textAreaInitiallyPopulatedValue = "Hello";
|
||||
|
||||
bool? checkboxInitiallyNullValue = null;
|
||||
bool checkboxInitiallyUncheckedValue = false;
|
||||
bool checkboxInitiallyCheckedValue = true;
|
||||
bool? checkboxInitiallyNullValue = null;
|
||||
bool checkboxInitiallyUncheckedValue = false;
|
||||
bool checkboxInitiallyCheckedValue = true;
|
||||
|
||||
int textboxIntValue = -42;
|
||||
int? textboxNullableIntValue = null;
|
||||
long textboxLongValue = 3_000_000_000;
|
||||
long? textboxNullableLongValue = null;
|
||||
float textboxFloatValue = 3.141f;
|
||||
float? textboxNullableFloatValue = null;
|
||||
double textboxDoubleValue = 3.14159265359d;
|
||||
double? textboxNullableDoubleValue = null;
|
||||
decimal textboxDecimalValue = 0.0000000000000000000000000001M;
|
||||
decimal? textboxNullableDecimalValue = null;
|
||||
decimal textboxDecimalInvalidValue = 0.0000000000000000000000000001M;
|
||||
decimal? textboxNullableDecimalInvalidValue = null;
|
||||
int textboxIntValue = -42;
|
||||
int? textboxNullableIntValue = null;
|
||||
long textboxLongValue = 3_000_000_000;
|
||||
long? textboxNullableLongValue = null;
|
||||
float textboxFloatValue = 3.141f;
|
||||
float? textboxNullableFloatValue = null;
|
||||
double textboxDoubleValue = 3.14159265359d;
|
||||
double? textboxNullableDoubleValue = null;
|
||||
decimal textboxDecimalValue = 0.0000000000000000000000000001M;
|
||||
decimal? textboxNullableDecimalValue = null;
|
||||
decimal textboxDecimalInvalidValue = 0.0000000000000000000000000001M;
|
||||
decimal? textboxNullableDecimalInvalidValue = null;
|
||||
|
||||
bool includeFourthOption = false;
|
||||
enum SelectableValue { First, Second, Third, Fourth }
|
||||
SelectableValue selectValue = SelectableValue.Second;
|
||||
int textboxGenericIntValue = -42;
|
||||
Guid textboxGenericGuidValue = Guid.Empty;
|
||||
|
||||
void AddAndSelectNewSelectOption()
|
||||
{
|
||||
includeFourthOption = true;
|
||||
selectValue = SelectableValue.Fourth;
|
||||
}
|
||||
bool includeFourthOption = false;
|
||||
enum SelectableValue { First, Second, Third, Fourth }
|
||||
SelectableValue selectValue = SelectableValue.Second;
|
||||
|
||||
void AddAndSelectNewSelectOption()
|
||||
{
|
||||
includeFourthOption = true;
|
||||
selectValue = SelectableValue.Fourth;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
@typeparam TValue
|
||||
|
||||
<input id="@Id" type="text" value="@Value" @onchange="@(EventCallback.Factory.CreateBinder<TValue>(this, _ => ValueChanged.InvokeAsync(_), Value))" />
|
||||
|
||||
@code {
|
||||
[Parameter] string Id { get; set; }
|
||||
[Parameter] TValue Value { get; set; }
|
||||
[Parameter] EventCallback<TValue> ValueChanged { get; set; }
|
||||
}
|
||||
|
|
@ -28,6 +28,7 @@ namespace Microsoft.AspNetCore.Hosting.FunctionalTests
|
|||
[ConditionalFact]
|
||||
[OSSkipCondition(OperatingSystems.Windows)]
|
||||
[OSSkipCondition(OperatingSystems.MacOSX)]
|
||||
[Flaky("https://github.com/aspnet/AspNetCore-Internal/issues/2577", FlakyOn.All)]
|
||||
public async Task ShutdownTestRun()
|
||||
{
|
||||
await ExecuteShutdownTest(nameof(ShutdownTestRun), "Run");
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ using System;
|
|||
using System.Globalization;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Testing;
|
||||
using Microsoft.AspNetCore.Testing.xunit;
|
||||
using Xunit;
|
||||
|
||||
namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
||||
|
|
@ -343,6 +344,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Binders
|
|||
|
||||
[Theory]
|
||||
[MemberData(nameof(ConvertibleTypeData))]
|
||||
[Flaky("https://github.com/aspnet/AspNetCore-Internal/issues/2626", FlakyOn.AzP.Linux)]
|
||||
public async Task BindModel_ReturnsModel_IfAttemptedValueIsValid_FrenchThirtyTwoThousandPointOne(Type destinationType)
|
||||
{
|
||||
// Arrange
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ namespace Microsoft.AspNetCore.Mvc.Rendering
|
|||
protected abstract IJsonHelper GetJsonHelper();
|
||||
|
||||
[Fact]
|
||||
public void Serialize_EscapesHtmlByDefault()
|
||||
public virtual void Serialize_EscapesHtmlByDefault()
|
||||
{
|
||||
// Arrange
|
||||
var helper = GetJsonHelper();
|
||||
|
|
|
|||
|
|
@ -2,7 +2,9 @@
|
|||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System.Text.Json.Serialization;
|
||||
using Microsoft.AspNetCore.Html;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Xunit;
|
||||
|
||||
namespace Microsoft.AspNetCore.Mvc.Rendering
|
||||
{
|
||||
|
|
@ -13,5 +15,24 @@ namespace Microsoft.AspNetCore.Mvc.Rendering
|
|||
var options = new JsonOptions() { JsonSerializerOptions = { PropertyNamingPolicy = JsonNamingPolicy.CamelCase } };
|
||||
return new SystemTextJsonHelper(Options.Create(options));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public override void Serialize_EscapesHtmlByDefault()
|
||||
{
|
||||
// Arrange
|
||||
var helper = GetJsonHelper();
|
||||
var obj = new
|
||||
{
|
||||
HTML = "<b>John Doe</b>"
|
||||
};
|
||||
var expectedOutput = "{\"html\":\"\\u003cb\\u003eJohn Doe\\u003c\\u002fb\\u003e\"}";
|
||||
|
||||
// Act
|
||||
var result = helper.Serialize(obj);
|
||||
|
||||
// Assert
|
||||
var htmlString = Assert.IsType<HtmlString>(result);
|
||||
Assert.Equal(expectedOutput, htmlString.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,25 +0,0 @@
|
|||
@using Microsoft.AspNetCore.Http.Features
|
||||
|
||||
@{
|
||||
var consentFeature = Context.Features.Get<ITrackingConsentFeature>();
|
||||
var showBanner = !consentFeature?.CanTrack ?? false;
|
||||
var cookieString = consentFeature?.CreateConsentCookie();
|
||||
}
|
||||
|
||||
@if (showBanner)
|
||||
{
|
||||
<div id="cookieConsent" class="alert alert-info alert-dismissible fade show" role="alert">
|
||||
Use this space to summarize your privacy and cookie use policy. <a class="alert-link" asp-page="/Privacy">Learn More</a>.
|
||||
<button type="button" class="accept-policy close" data-dismiss="alert" aria-label="Close" data-cookie-string="@cookieString">
|
||||
<span aria-hidden="true">Accept</span>
|
||||
</button>
|
||||
</div>
|
||||
<script>
|
||||
(function () {
|
||||
var button = document.querySelector("#cookieConsent button[data-cookie-string]");
|
||||
button.addEventListener("click", function (event) {
|
||||
document.cookie = button.dataset.cookieString;
|
||||
}, false);
|
||||
})();
|
||||
</script>
|
||||
}
|
||||
|
|
@ -34,13 +34,9 @@
|
|||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
<div class="container">
|
||||
<partial name="_CookieConsentPartial" />
|
||||
<main role="main" class="pb-3">
|
||||
<main role="main" class="pb-3">
|
||||
@RenderBody()
|
||||
</main>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<footer class="border-top footer text-muted">
|
||||
<div class="container">
|
||||
© copyrightYear - Company.WebApplication1 - <a asp-area="" asp-page="/Privacy">Privacy</a>
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
<script src="~/lib/jquery-validation/dist/jquery.validate.js"></script>
|
||||
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
|
||||
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
|
||||
|
|
@ -52,11 +52,6 @@ namespace Company.WebApplication1
|
|||
// This method gets called by the runtime. Use this method to add services to the container.
|
||||
public void ConfigureServices(IServiceCollection services)
|
||||
{
|
||||
services.Configure<CookiePolicyOptions>(options =>
|
||||
{
|
||||
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
|
||||
options.CheckConsentNeeded = context => true;
|
||||
});
|
||||
|
||||
#if (IndividualLocalAuth)
|
||||
services.AddDbContext<ApplicationDbContext>(options =>
|
||||
|
|
@ -152,8 +147,6 @@ namespace Company.WebApplication1
|
|||
#endif
|
||||
app.UseStaticFiles();
|
||||
|
||||
app.UseCookiePolicy();
|
||||
|
||||
app.UseRouting();
|
||||
|
||||
#if (OrganizationalAuth || IndividualAuth)
|
||||
|
|
|
|||
|
|
@ -52,11 +52,6 @@ namespace Company.WebApplication1
|
|||
// This method gets called by the runtime. Use this method to add services to the container.
|
||||
public void ConfigureServices(IServiceCollection services)
|
||||
{
|
||||
services.Configure<CookiePolicyOptions>(options =>
|
||||
{
|
||||
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
|
||||
options.CheckConsentNeeded = context => true;
|
||||
});
|
||||
|
||||
#if (IndividualLocalAuth)
|
||||
services.AddDbContext<ApplicationDbContext>(options =>
|
||||
|
|
@ -153,8 +148,6 @@ namespace Company.WebApplication1
|
|||
#endif
|
||||
app.UseStaticFiles();
|
||||
|
||||
app.UseCookiePolicy();
|
||||
|
||||
app.UseRouting();
|
||||
|
||||
#if (OrganizationalAuth || IndividualAuth)
|
||||
|
|
|
|||
|
|
@ -1,25 +0,0 @@
|
|||
@using Microsoft.AspNetCore.Http.Features
|
||||
|
||||
@{
|
||||
var consentFeature = Context.Features.Get<ITrackingConsentFeature>();
|
||||
var showBanner = !consentFeature?.CanTrack ?? false;
|
||||
var cookieString = consentFeature?.CreateConsentCookie();
|
||||
}
|
||||
|
||||
@if (showBanner)
|
||||
{
|
||||
<div id="cookieConsent" class="alert alert-info alert-dismissible fade show" role="alert">
|
||||
Use this space to summarize your privacy and cookie use policy. <a class="alert-link" asp-area="" asp-controller="Home" asp-action="Privacy">Learn More</a>.
|
||||
<button type="button" class="accept-policy close" data-dismiss="alert" aria-label="Close" data-cookie-string="@cookieString">
|
||||
<span aria-hidden="true">Accept</span>
|
||||
</button>
|
||||
</div>
|
||||
<script>
|
||||
(function () {
|
||||
var button = document.querySelector("#cookieConsent button[data-cookie-string]");
|
||||
button.addEventListener("click", function (event) {
|
||||
document.cookie = button.dataset.cookieString;
|
||||
}, false);
|
||||
})();
|
||||
</script>
|
||||
}
|
||||
|
|
@ -34,13 +34,9 @@
|
|||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
<div class="container">
|
||||
<partial name="_CookieConsentPartial" />
|
||||
<main role="main" class="pb-3">
|
||||
<main role="main" class="pb-3">
|
||||
@RenderBody()
|
||||
</main>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<footer class="border-top footer text-muted">
|
||||
<div class="container">
|
||||
© copyrightYear - Company.WebApplication1 - <a asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
|
||||
|
|
|
|||
|
|
@ -1,25 +0,0 @@
|
|||
@using Microsoft.AspNetCore.Http.Features
|
||||
|
||||
@{
|
||||
var consentFeature = Context.Features.Get<ITrackingConsentFeature>();
|
||||
var showBanner = !consentFeature?.CanTrack ?? false;
|
||||
var cookieString = consentFeature?.CreateConsentCookie();
|
||||
}
|
||||
|
||||
@if (showBanner)
|
||||
{
|
||||
<div id="cookieConsent" class="alert alert-info alert-dismissible fade show" role="alert">
|
||||
Use this space to summarize your privacy and cookie use policy. <a class="alert-link" asp-page="/Privacy">Learn More</a>.
|
||||
<button type="button" class="accept-policy close" data-dismiss="alert" aria-label="Close" data-cookie-string="@cookieString">
|
||||
<span aria-hidden="true">Accept</span>
|
||||
</button>
|
||||
</div>
|
||||
<script>
|
||||
(function () {
|
||||
var button = document.querySelector("#cookieConsent button[data-cookie-string]");
|
||||
button.addEventListener("click", function (event) {
|
||||
document.cookie = button.dataset.cookieString;
|
||||
}, false);
|
||||
})();
|
||||
</script>
|
||||
}
|
||||
|
|
@ -30,13 +30,9 @@
|
|||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
<div class="container">
|
||||
<partial name="_CookieConsentPartial" />
|
||||
<main role="main" class="pb-3">
|
||||
<main role="main" class="pb-3">
|
||||
@RenderBody()
|
||||
</main>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<footer class="border-top footer text-muted">
|
||||
<div class="container">
|
||||
© copyrightYear - Company.WebApplication1 - <a asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@
|
|||
"Pages/Privacy.cshtml.cs",
|
||||
"Pages/_ViewImports.cshtml",
|
||||
"Pages/_ViewStart.cshtml",
|
||||
"Pages/Shared/_CookieConsentPartial.cshtml",
|
||||
"Pages/Shared/_Layout.cshtml",
|
||||
"Pages/Shared/_LoginPartial.cshtml",
|
||||
"Pages/Shared/_ValidationScriptsPartial.cshtml",
|
||||
|
|
@ -82,7 +81,6 @@
|
|||
"Pages/Privacy.cshtml.cs",
|
||||
"Pages/_ViewImports.cshtml",
|
||||
"Pages/_ViewStart.cshtml",
|
||||
"Pages/Shared/_CookieConsentPartial.cshtml",
|
||||
"Pages/Shared/_Layout.cshtml",
|
||||
"Pages/Shared/_ValidationScriptsPartial.cshtml",
|
||||
"Properties/launchSettings.json",
|
||||
|
|
@ -141,7 +139,6 @@
|
|||
"Pages/Privacy.cshtml.cs",
|
||||
"Pages/_ViewImports.cshtml",
|
||||
"Pages/_ViewStart.cshtml",
|
||||
"Pages/Shared/_CookieConsentPartial.cshtml",
|
||||
"Pages/Shared/_Layout.cshtml",
|
||||
"Pages/Shared/_LoginPartial.cshtml",
|
||||
"Pages/Shared/_ValidationScriptsPartial.cshtml",
|
||||
|
|
@ -201,7 +198,6 @@
|
|||
"Pages/Privacy.cshtml.cs",
|
||||
"Pages/_ViewImports.cshtml",
|
||||
"Pages/_ViewStart.cshtml",
|
||||
"Pages/Shared/_CookieConsentPartial.cshtml",
|
||||
"Pages/Shared/_Layout.cshtml",
|
||||
"Pages/Shared/_LoginPartial.cshtml",
|
||||
"Pages/Shared/_ValidationScriptsPartial.cshtml",
|
||||
|
|
@ -261,7 +257,6 @@
|
|||
"Pages/Privacy.cshtml.cs",
|
||||
"Pages/_ViewImports.cshtml",
|
||||
"Pages/_ViewStart.cshtml",
|
||||
"Pages/Shared/_CookieConsentPartial.cshtml",
|
||||
"Pages/Shared/_Layout.cshtml",
|
||||
"Pages/Shared/_ValidationScriptsPartial.cshtml",
|
||||
"Properties/launchSettings.json",
|
||||
|
|
@ -320,7 +315,6 @@
|
|||
"Pages/Privacy.cshtml.cs",
|
||||
"Pages/_ViewImports.cshtml",
|
||||
"Pages/_ViewStart.cshtml",
|
||||
"Pages/Shared/_CookieConsentPartial.cshtml",
|
||||
"Pages/Shared/_Layout.cshtml",
|
||||
"Pages/Shared/_LoginPartial.cshtml",
|
||||
"Pages/Shared/_ValidationScriptsPartial.cshtml",
|
||||
|
|
@ -484,7 +478,6 @@
|
|||
"Views/Home/Index.cshtml",
|
||||
"Views/Home/Privacy.cshtml",
|
||||
"Views/Shared/Error.cshtml",
|
||||
"Views/Shared/_CookieConsentPartial.cshtml",
|
||||
"Views/Shared/_Layout.cshtml",
|
||||
"Views/Shared/_LoginPartial.cshtml",
|
||||
"Views/Shared/_ValidationScriptsPartial.cshtml",
|
||||
|
|
@ -543,7 +536,6 @@
|
|||
"Views/Home/Index.cshtml",
|
||||
"Views/Home/Privacy.cshtml",
|
||||
"Views/Shared/Error.cshtml",
|
||||
"Views/Shared/_CookieConsentPartial.cshtml",
|
||||
"Views/Shared/_Layout.cshtml",
|
||||
"Views/Shared/_ValidationScriptsPartial.cshtml",
|
||||
"wwwroot/favicon.ico",
|
||||
|
|
@ -601,7 +593,6 @@
|
|||
"Views/Home/Index.cshtml",
|
||||
"Views/Home/Privacy.cshtml",
|
||||
"Views/Shared/Error.cshtml",
|
||||
"Views/Shared/_CookieConsentPartial.cshtml",
|
||||
"Views/Shared/_Layout.cshtml",
|
||||
"Views/Shared/_LoginPartial.cshtml",
|
||||
"Views/Shared/_ValidationScriptsPartial.cshtml",
|
||||
|
|
@ -660,7 +651,6 @@
|
|||
"Views/Home/Index.cshtml",
|
||||
"Views/Home/Privacy.cshtml",
|
||||
"Views/Shared/Error.cshtml",
|
||||
"Views/Shared/_CookieConsentPartial.cshtml",
|
||||
"Views/Shared/_Layout.cshtml",
|
||||
"Views/Shared/_LoginPartial.cshtml",
|
||||
"Views/Shared/_ValidationScriptsPartial.cshtml",
|
||||
|
|
@ -719,7 +709,6 @@
|
|||
"Views/Home/Index.cshtml",
|
||||
"Views/Home/Privacy.cshtml",
|
||||
"Views/Shared/Error.cshtml",
|
||||
"Views/Shared/_CookieConsentPartial.cshtml",
|
||||
"Views/Shared/_Layout.cshtml",
|
||||
"Views/Shared/_ValidationScriptsPartial.cshtml",
|
||||
"wwwroot/favicon.ico",
|
||||
|
|
@ -777,7 +766,6 @@
|
|||
"Views/Home/Index.cshtml",
|
||||
"Views/Home/Privacy.cshtml",
|
||||
"Views/Shared/Error.cshtml",
|
||||
"Views/Shared/_CookieConsentPartial.cshtml",
|
||||
"Views/Shared/_Layout.cshtml",
|
||||
"Views/Shared/_LoginPartial.cshtml",
|
||||
"Views/Shared/_ValidationScriptsPartial.cshtml",
|
||||
|
|
@ -836,7 +824,6 @@
|
|||
"Views/Home/Index.cshtml",
|
||||
"Views/Home/Privacy.cshtml",
|
||||
"Views/Shared/Error.cshtml",
|
||||
"Views/Shared/_CookieConsentPartial.cshtml",
|
||||
"Views/Shared/_Layout.cshtml",
|
||||
"Views/Shared/_ValidationScriptsPartial.cshtml",
|
||||
"wwwroot/favicon.ico",
|
||||
|
|
|
|||
|
|
@ -30,7 +30,6 @@ void HostFxrErrorRedirector::HostFxrErrorRedirectorCallback(const WCHAR* message
|
|||
m_writeFunction->Append(std::wstring(message) + L"\r\n");
|
||||
}
|
||||
|
||||
|
||||
void HostFxr::Load()
|
||||
{
|
||||
HMODULE hModule;
|
||||
|
|
@ -43,9 +42,12 @@ void HostFxr::Load(HMODULE moduleHandle)
|
|||
m_hHostFxrDll = moduleHandle;
|
||||
try
|
||||
{
|
||||
m_hostfxr_main_fn = ModuleHelpers::GetKnownProcAddress<hostfxr_main_fn>(moduleHandle, "hostfxr_main");
|
||||
m_hostfxr_get_native_search_directories_fn = ModuleHelpers::GetKnownProcAddress<hostfxr_get_native_search_directories_fn>(moduleHandle, "hostfxr_get_native_search_directories");
|
||||
m_corehost_set_error_writer_fn = ModuleHelpers::GetKnownProcAddress<corehost_set_error_writer_fn>(moduleHandle, "hostfxr_set_error_writer", /* optional */ true);
|
||||
m_hostfxr_initialize_for_dotnet_commandline_fn = ModuleHelpers::GetKnownProcAddress<hostfxr_initialize_for_dotnet_runtime_fn>(moduleHandle, "hostfxr_initialize_for_dotnet_command_line", /* optional */ true);
|
||||
m_hostfxr_set_runtime_property_value_fn = ModuleHelpers::GetKnownProcAddress<hostfxr_set_runtime_property_value_fn>(moduleHandle, "hostfxr_set_runtime_property_value", /* optional */ true);
|
||||
m_hostfxr_run_app_fn = ModuleHelpers::GetKnownProcAddress<hostfxr_run_app_fn>(moduleHandle, "hostfxr_run_app", /* optional */ true);
|
||||
m_hostfxr_close_fn = ModuleHelpers::GetKnownProcAddress<hostfxr_close_fn>(moduleHandle, "hostfxr_close", /* optional */ true);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
|
|
@ -59,7 +61,6 @@ void HostFxr::Load(HMODULE moduleHandle)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
void HostFxr::Load(const std::wstring& location)
|
||||
{
|
||||
try
|
||||
|
|
@ -87,7 +88,14 @@ void HostFxr::SetMain(hostfxr_main_fn hostfxr_main_fn)
|
|||
|
||||
int HostFxr::Main(DWORD argc, const PCWSTR* argv) const noexcept(false)
|
||||
{
|
||||
return m_hostfxr_main_fn(argc, argv);
|
||||
if (m_host_context_handle != nullptr && m_hostfxr_run_app_fn != nullptr)
|
||||
{
|
||||
return m_hostfxr_run_app_fn(m_host_context_handle);
|
||||
}
|
||||
else
|
||||
{
|
||||
return m_hostfxr_main_fn(argc, argv);
|
||||
}
|
||||
}
|
||||
|
||||
int HostFxr::GetNativeSearchDirectories(INT argc, const PCWSTR* argv, PWSTR buffer, DWORD buffer_size, DWORD* required_buffer_size) const noexcept
|
||||
|
|
@ -99,3 +107,62 @@ HostFxrErrorRedirector HostFxr::RedirectOutput(RedirectionOutput* writer) const
|
|||
{
|
||||
return HostFxrErrorRedirector(m_corehost_set_error_writer_fn, writer);
|
||||
}
|
||||
|
||||
int HostFxr::InitializeForApp(int argc, PCWSTR* argv, const std::wstring& dotnetExe) const noexcept
|
||||
{
|
||||
if (m_hostfxr_initialize_for_dotnet_commandline_fn == nullptr || m_hostfxr_main_fn != nullptr)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
hostfxr_initialize_parameters params;
|
||||
params.size = sizeof(hostfxr_initialize_parameters);
|
||||
params.host_path = L"";
|
||||
|
||||
// Transformation occurs here rather than hostfxr arguments as hostfxr_get_native_directories still needs
|
||||
// exe as the first argument.
|
||||
if (!dotnetExe.empty())
|
||||
{
|
||||
// Portable application
|
||||
// argv[0] = dotnet.exe
|
||||
// argv[1] = app.dll
|
||||
// argv[2] = rest of the args
|
||||
|
||||
std::filesystem::path dotnetExePath(dotnetExe);
|
||||
auto dotnetFolderPath = dotnetExePath.parent_path();
|
||||
params.dotnet_root = dotnetFolderPath.c_str();
|
||||
|
||||
RETURN_INT_IF_NOT_ZERO(m_hostfxr_initialize_for_dotnet_commandline_fn(argc - 1, &argv[1], ¶ms, &m_host_context_handle));
|
||||
}
|
||||
else
|
||||
{
|
||||
// Standalone application
|
||||
// argv[0] = app.exe
|
||||
// argv[1] = rest of the args
|
||||
params.dotnet_root = L"";
|
||||
std::filesystem::path applicationPath(argv[0]);
|
||||
applicationPath.replace_extension(".dll");
|
||||
argv[0] = applicationPath.c_str();
|
||||
|
||||
RETURN_INT_IF_NOT_ZERO(m_hostfxr_initialize_for_dotnet_commandline_fn(argc, argv, ¶ms, &m_host_context_handle));
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int HostFxr::SetRuntimePropertyValue(PCWSTR name, PCWSTR value) const noexcept
|
||||
{
|
||||
if (m_host_context_handle != nullptr && m_hostfxr_set_runtime_property_value_fn != nullptr)
|
||||
{
|
||||
return m_hostfxr_set_runtime_property_value_fn(m_host_context_handle, name, value);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void HostFxr::Close() const noexcept
|
||||
{
|
||||
if (m_host_context_handle != nullptr && m_hostfxr_close_fn != nullptr)
|
||||
{
|
||||
m_hostfxr_close_fn(m_host_context_handle);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,10 +7,26 @@
|
|||
#include "exceptions.h"
|
||||
#include "RedirectionOutput.h"
|
||||
|
||||
struct hostfxr_initialize_parameters
|
||||
{
|
||||
size_t size;
|
||||
PCWSTR host_path;
|
||||
PCWSTR dotnet_root;
|
||||
};
|
||||
|
||||
#define DOTNETCORE_STARTUP_HOOK L"STARTUP_HOOKS"
|
||||
#define DOTNETCORE_USE_ENTRYPOINT_FILTER L"USE_ENTRYPOINT_FILTER"
|
||||
#define DOTNETCORE_STACK_SIZE L"DEFAULT_STACK_SIZE"
|
||||
#define ASPNETCORE_STARTUP_ASSEMBLY L"Microsoft.AspNetCore.Server.IIS"
|
||||
|
||||
typedef INT(*hostfxr_get_native_search_directories_fn) (INT argc, CONST PCWSTR* argv, PWSTR buffer, DWORD buffer_size, DWORD* required_buffer_size);
|
||||
typedef INT(*hostfxr_main_fn) (DWORD argc, CONST PCWSTR argv[]);
|
||||
typedef void(*corehost_error_writer_fn) (const WCHAR* message);
|
||||
typedef corehost_error_writer_fn(*corehost_set_error_writer_fn) (corehost_error_writer_fn error_writer);
|
||||
typedef int(*hostfxr_initialize_for_dotnet_runtime_fn)(int argc, const PCWSTR* argv, hostfxr_initialize_parameters* parameters, void* const* host_context_handle);
|
||||
typedef int(*hostfxr_set_runtime_property_value_fn)(void* host_context_handle, PCWSTR name, PCWSTR value);
|
||||
typedef int(*hostfxr_run_app_fn)(void* host_context_handle);
|
||||
typedef int(*hostfxr_close_fn)(void* hostfxr_context_handle);
|
||||
|
||||
struct ErrorContext
|
||||
{
|
||||
|
|
@ -49,7 +65,8 @@ public:
|
|||
corehost_set_error_writer_fn corehost_set_error_writer_fn) noexcept
|
||||
: m_hostfxr_main_fn(hostfxr_main_fn),
|
||||
m_hostfxr_get_native_search_directories_fn(hostfxr_get_native_search_directories_fn),
|
||||
m_corehost_set_error_writer_fn(corehost_set_error_writer_fn)
|
||||
m_corehost_set_error_writer_fn(corehost_set_error_writer_fn),
|
||||
m_host_context_handle(nullptr)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -66,10 +83,18 @@ public:
|
|||
int GetNativeSearchDirectories(INT argc, CONST PCWSTR* argv, PWSTR buffer, DWORD buffer_size, DWORD* required_buffer_size) const noexcept;
|
||||
|
||||
HostFxrErrorRedirector RedirectOutput(RedirectionOutput* writer) const noexcept;
|
||||
int SetRuntimePropertyValue(PCWSTR name, PCWSTR value) const noexcept;
|
||||
int InitializeForApp(int argc, PCWSTR* argv, const std::wstring& m_dotnetExeKnownLocation) const noexcept;
|
||||
void Close() const noexcept;
|
||||
|
||||
private:
|
||||
HandleWrapper<ModuleHandleTraits> m_hHostFxrDll;
|
||||
hostfxr_main_fn m_hostfxr_main_fn;
|
||||
hostfxr_get_native_search_directories_fn m_hostfxr_get_native_search_directories_fn;
|
||||
hostfxr_initialize_for_dotnet_runtime_fn m_hostfxr_initialize_for_dotnet_commandline_fn;
|
||||
hostfxr_set_runtime_property_value_fn m_hostfxr_set_runtime_property_value_fn;
|
||||
hostfxr_run_app_fn m_hostfxr_run_app_fn;
|
||||
corehost_set_error_writer_fn m_corehost_set_error_writer_fn;
|
||||
hostfxr_close_fn m_hostfxr_close_fn;
|
||||
void* m_host_context_handle;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -89,6 +89,9 @@
|
|||
#define SUCCEEDED_LOG(hr) SUCCEEDED(LOG_IF_FAILED(hr))
|
||||
#define FAILED_LOG(hr) FAILED(LOG_IF_FAILED(hr))
|
||||
|
||||
#define RETURN_INT_IF_NOT_ZERO(val) do { if ((val) != 0) { return val; }} while (0, 0)
|
||||
#define RETURN_IF_NOT_ZERO(val) do { if ((val) != 0) { return; }} while (0, 0)
|
||||
|
||||
inline thread_local IHttpTraceContext* g_traceContext;
|
||||
|
||||
__declspec(noinline) inline VOID TraceHRESULT(LOCATION_ARGUMENTS HRESULT hr)
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ IN_PROCESS_APPLICATION::StopInternal(bool fServerInitiated)
|
|||
VOID
|
||||
IN_PROCESS_APPLICATION::StopClr()
|
||||
{
|
||||
// This has the state lock around it.
|
||||
// This has the state lock around it.
|
||||
LOG_INFO(L"Stopping CLR");
|
||||
|
||||
if (!m_blockManagedCallbacks)
|
||||
|
|
@ -241,25 +241,19 @@ IN_PROCESS_APPLICATION::ExecuteApplication()
|
|||
LOG_INFOF(L"Setting current directory to %s", this->QueryApplicationPhysicalPath().c_str());
|
||||
}
|
||||
|
||||
if (m_pConfig->QueryCallStartupHook())
|
||||
auto startupReturnCode = context->m_hostFxr.InitializeForApp(context->m_argc, context->m_argv.get(), m_dotnetExeKnownLocation);
|
||||
if (startupReturnCode != 0)
|
||||
{
|
||||
// Used to display developer exception page when there is an exception in main.
|
||||
auto currentStartupHookEnv = Environment::GetEnvironmentVariableValue(DOTNETCORE_STARTUP_HOOK);
|
||||
|
||||
if (currentStartupHookEnv.has_value())
|
||||
{
|
||||
currentStartupHookEnv = currentStartupHookEnv.value() + L";" + ASPNETCORE_STARTUP_ASSEMBLY;
|
||||
LOG_LAST_ERROR_IF(!SetEnvironmentVariable(DOTNETCORE_STARTUP_HOOK, currentStartupHookEnv.value().c_str()));
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_LAST_ERROR_IF(!SetEnvironmentVariable(DOTNETCORE_STARTUP_HOOK, ASPNETCORE_STARTUP_ASSEMBLY));
|
||||
}
|
||||
throw InvalidOperationException(format(L"Error occured when initializing inprocess application, Return code: 0x%x", startupReturnCode));
|
||||
}
|
||||
|
||||
// Used to make .NET Runtime always log to event log when there is an unhandled exception.
|
||||
LOG_LAST_ERROR_IF(!SetEnvironmentVariable(L"COMPlus_UseEntryPointFilter", L"1"));
|
||||
LOG_LAST_ERROR_IF(!SetEnvironmentVariable(L"COMPlus_DefaultStackSize", m_pConfig->QueryStackSize().c_str()));
|
||||
if (m_pConfig->QueryCallStartupHook())
|
||||
{
|
||||
RETURN_IF_NOT_ZERO(context->m_hostFxr.SetRuntimePropertyValue(DOTNETCORE_STARTUP_HOOK, ASPNETCORE_STARTUP_ASSEMBLY));
|
||||
}
|
||||
|
||||
RETURN_IF_NOT_ZERO(context->m_hostFxr.SetRuntimePropertyValue(DOTNETCORE_USE_ENTRYPOINT_FILTER, L"1"));
|
||||
RETURN_IF_NOT_ZERO(context->m_hostFxr.SetRuntimePropertyValue(DOTNETCORE_STACK_SIZE, m_pConfig->QueryStackSize().c_str()));
|
||||
|
||||
bool clrThreadExited;
|
||||
{
|
||||
|
|
@ -434,6 +428,7 @@ IN_PROCESS_APPLICATION::ExecuteClr(const std::shared_ptr<ExecuteClrContext>& con
|
|||
LOG_INFOF(L"Managed application exited with code %d", exitCode);
|
||||
|
||||
context->m_exitCode = exitCode;
|
||||
context->m_hostFxr.Close();
|
||||
}
|
||||
__except(GetExceptionCode() != 0)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -15,8 +15,6 @@ typedef BOOL(WINAPI * PFN_SHUTDOWN_HANDLER) (void* pvShutdownHandlerContext);
|
|||
typedef REQUEST_NOTIFICATION_STATUS(WINAPI * PFN_ASYNC_COMPLETION_HANDLER)(void *pvManagedHttpContext, HRESULT hrCompletionStatus, DWORD cbCompletion);
|
||||
typedef void(WINAPI * PFN_REQUESTS_DRAINED_HANDLER) (void* pvShutdownHandlerContext);
|
||||
|
||||
#define DOTNETCORE_STARTUP_HOOK L"DOTNET_STARTUP_HOOKS"
|
||||
#define ASPNETCORE_STARTUP_ASSEMBLY L"Microsoft.AspNetCore.Server.IIS"
|
||||
class IN_PROCESS_APPLICATION : public InProcessApplicationBase
|
||||
{
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -74,10 +74,7 @@ namespace Microsoft.Extensions.Internal
|
|||
}
|
||||
|
||||
// INotifyCompletion supplies a method matching "void OnCompleted(Action action)"
|
||||
var iNotifyCompletionMap = awaiterType
|
||||
.GetTypeInfo()
|
||||
.GetRuntimeInterfaceMap(typeof(INotifyCompletion));
|
||||
var onCompletedMethod = iNotifyCompletionMap.InterfaceMethods.Single(m =>
|
||||
var onCompletedMethod = typeof(INotifyCompletion).GetRuntimeMethods().Single(m =>
|
||||
m.Name.Equals("OnCompleted", StringComparison.OrdinalIgnoreCase)
|
||||
&& m.ReturnType == typeof(void)
|
||||
&& m.GetParameters().Length == 1
|
||||
|
|
@ -89,10 +86,7 @@ namespace Microsoft.Extensions.Internal
|
|||
if (implementsICriticalNotifyCompletion)
|
||||
{
|
||||
// ICriticalNotifyCompletion supplies a method matching "void UnsafeOnCompleted(Action action)"
|
||||
var iCriticalNotifyCompletionMap = awaiterType
|
||||
.GetTypeInfo()
|
||||
.GetRuntimeInterfaceMap(typeof(ICriticalNotifyCompletion));
|
||||
unsafeOnCompletedMethod = iCriticalNotifyCompletionMap.InterfaceMethods.Single(m =>
|
||||
unsafeOnCompletedMethod = typeof(ICriticalNotifyCompletion).GetRuntimeMethods().Single(m =>
|
||||
m.Name.Equals("UnsafeOnCompleted", StringComparison.OrdinalIgnoreCase)
|
||||
&& m.ReturnType == typeof(void)
|
||||
&& m.GetParameters().Length == 1
|
||||
|
|
|
|||
|
|
@ -457,7 +457,7 @@ describe("hubConnection", () => {
|
|||
|
||||
const complexObject = {
|
||||
ByteArray: protocol.name === "json"
|
||||
? new Array(0x68, 0x65, 0x6c, 0x6c, 0x6f)
|
||||
? "aGVsbG8="
|
||||
: new Uint8Array([0x68, 0x65, 0x6c, 0x6c, 0x6f]),
|
||||
DateTime: protocol.name === "json"
|
||||
? "2002-04-01T10:20:15Z"
|
||||
|
|
@ -499,7 +499,7 @@ describe("hubConnection", () => {
|
|||
|
||||
const complexObject = {
|
||||
ByteArray: protocol.name === "json"
|
||||
? new Array(0x1, 0x2, 0x3)
|
||||
? "AQID"
|
||||
: new Uint8Array([0x1, 0x2, 0x3]),
|
||||
DateTime: protocol.name === "json"
|
||||
? "2000-01-01T00:00:00Z"
|
||||
|
|
|
|||
|
|
@ -57,23 +57,6 @@ namespace Microsoft.AspNetCore.Internal
|
|||
}
|
||||
}
|
||||
|
||||
// Remove after https://github.com/dotnet/corefx/issues/33295 is done
|
||||
public static void Skip(this ref Utf8JsonReader reader)
|
||||
{
|
||||
if (reader.TokenType == JsonTokenType.PropertyName)
|
||||
{
|
||||
reader.Read();
|
||||
}
|
||||
|
||||
if (reader.TokenType == JsonTokenType.StartObject || reader.TokenType == JsonTokenType.StartArray)
|
||||
{
|
||||
int depth = reader.CurrentDepth;
|
||||
while (reader.Read() && depth < reader.CurrentDepth)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static string ReadAsString(this ref Utf8JsonReader reader, string propertyName)
|
||||
{
|
||||
reader.Read();
|
||||
|
|
|
|||
|
|
@ -105,32 +105,32 @@ namespace Microsoft.AspNetCore.SignalR.Common.Tests.Internal.Protocol
|
|||
{
|
||||
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_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\":[1,2,3]}]}"),
|
||||
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\":[1,2,3]}]}"),
|
||||
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\":[1,2,3]}]}"),
|
||||
new JsonProtocolTestData("InvocationMessage_HasCustomArgumentWithNullValueInclude", new InvocationMessage(null, "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), true, false, "{\"type\":1,\"target\":\"Target\",\"arguments\":[{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"nullProp\":null,\"byteArrProp\":[1,2,3]}]}"),
|
||||
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_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_HasCustomArgumentWithNullValueInclude", new InvocationMessage(null, "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), true, 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_HasHeaders", AddHeaders(TestHeaders, new InvocationMessage("123", "Target", new object[] { 1, "Foo", 2.0f })), true, true, "{\"type\":1," + SerializedHeaders + ",\"invocationId\":\"123\",\"target\":\"Target\",\"arguments\":[1,\"Foo\",2]}"),
|
||||
|
||||
new JsonProtocolTestData("StreamItemMessage_HasCustomItemWithNoCamelCase", new StreamItemMessage("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), false, true, "{\"type\":2,\"invocationId\":\"123\",\"item\":{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"ByteArrProp\":[1,2,3]}}"),
|
||||
new JsonProtocolTestData("StreamItemMessage_HasCustomItemWithNullValueIgnore", new StreamItemMessage("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), true, true, "{\"type\":2,\"invocationId\":\"123\",\"item\":{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"byteArrProp\":[1,2,3]}}"),
|
||||
new JsonProtocolTestData("StreamItemMessage_HasCustomItemWithNullValueIgnoreAndNoCamelCase", new StreamItemMessage("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), false, false, "{\"type\":2,\"invocationId\":\"123\",\"item\":{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"NullProp\":null,\"ByteArrProp\":[1,2,3]}}"),
|
||||
new JsonProtocolTestData("StreamItemMessage_HasCustomItemWithNullValueInclude", new StreamItemMessage("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), true, false, "{\"type\":2,\"invocationId\":\"123\",\"item\":{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"nullProp\":null,\"byteArrProp\":[1,2,3]}}"),
|
||||
new JsonProtocolTestData("StreamItemMessage_HasCustomItemWithNoCamelCase", new StreamItemMessage("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), false, true, "{\"type\":2,\"invocationId\":\"123\",\"item\":{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"ByteArrProp\":\"AQID\"}}"),
|
||||
new JsonProtocolTestData("StreamItemMessage_HasCustomItemWithNullValueIgnore", new StreamItemMessage("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), true, true, "{\"type\":2,\"invocationId\":\"123\",\"item\":{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"byteArrProp\":\"AQID\"}}"),
|
||||
new JsonProtocolTestData("StreamItemMessage_HasCustomItemWithNullValueIgnoreAndNoCamelCase", new StreamItemMessage("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), false, false, "{\"type\":2,\"invocationId\":\"123\",\"item\":{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"NullProp\":null,\"ByteArrProp\":\"AQID\"}}"),
|
||||
new JsonProtocolTestData("StreamItemMessage_HasCustomItemWithNullValueInclude", new StreamItemMessage("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), true, false, "{\"type\":2,\"invocationId\":\"123\",\"item\":{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"nullProp\":null,\"byteArrProp\":\"AQID\"}}"),
|
||||
new JsonProtocolTestData("StreamItemMessage_HasFloatItem", new StreamItemMessage("123", 2.0f), true, true, "{\"type\":2,\"invocationId\":\"123\",\"item\":2}"),
|
||||
new JsonProtocolTestData("StreamItemMessage_HasHeaders", AddHeaders(TestHeaders, new StreamItemMessage("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } })), true, false, "{\"type\":2," + SerializedHeaders + ",\"invocationId\":\"123\",\"item\":{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"nullProp\":null,\"byteArrProp\":[1,2,3]}}"),
|
||||
new JsonProtocolTestData("StreamItemMessage_HasHeaders", AddHeaders(TestHeaders, new StreamItemMessage("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } })), true, false, "{\"type\":2," + SerializedHeaders + ",\"invocationId\":\"123\",\"item\":{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"nullProp\":null,\"byteArrProp\":\"AQID\"}}"),
|
||||
|
||||
new JsonProtocolTestData("CompletionMessage_HasFloatResult", CompletionMessage.WithResult("123", 2.0f), true, true, "{\"type\":3,\"invocationId\":\"123\",\"result\":2}"),
|
||||
new JsonProtocolTestData("CompletionMessage_HasCustomResultWithNoCamelCase", CompletionMessage.WithResult("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), false, true, "{\"type\":3,\"invocationId\":\"123\",\"result\":{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"ByteArrProp\":[1,2,3]}}"),
|
||||
new JsonProtocolTestData("CompletionMessage_HasCustomResultWithNullValueIgnore", CompletionMessage.WithResult("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), true, true, "{\"type\":3,\"invocationId\":\"123\",\"result\":{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"byteArrProp\":[1,2,3]}}"),
|
||||
new JsonProtocolTestData("CompletionMessage_HasCustomResultWithNullValueIncludeAndNoCamelCase", CompletionMessage.WithResult("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), false, false, "{\"type\":3,\"invocationId\":\"123\",\"result\":{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"NullProp\":null,\"ByteArrProp\":[1,2,3]}}"),
|
||||
new JsonProtocolTestData("CompletionMessage_HasCustomResultWithNullValueInclude", CompletionMessage.WithResult("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), true, false, "{\"type\":3,\"invocationId\":\"123\",\"result\":{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"nullProp\":null,\"byteArrProp\":[1,2,3]}}"),
|
||||
new JsonProtocolTestData("CompletionMessage_HasCustomResultWithNoCamelCase", CompletionMessage.WithResult("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), false, true, "{\"type\":3,\"invocationId\":\"123\",\"result\":{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"ByteArrProp\":\"AQID\"}}"),
|
||||
new JsonProtocolTestData("CompletionMessage_HasCustomResultWithNullValueIgnore", CompletionMessage.WithResult("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), true, true, "{\"type\":3,\"invocationId\":\"123\",\"result\":{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"byteArrProp\":\"AQID\"}}"),
|
||||
new JsonProtocolTestData("CompletionMessage_HasCustomResultWithNullValueIncludeAndNoCamelCase", CompletionMessage.WithResult("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), false, false, "{\"type\":3,\"invocationId\":\"123\",\"result\":{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"NullProp\":null,\"ByteArrProp\":\"AQID\"}}"),
|
||||
new JsonProtocolTestData("CompletionMessage_HasCustomResultWithNullValueInclude", CompletionMessage.WithResult("123", new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } }), true, false, "{\"type\":3,\"invocationId\":\"123\",\"result\":{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"nullProp\":null,\"byteArrProp\":\"AQID\"}}"),
|
||||
new JsonProtocolTestData("CompletionMessage_HasErrorAndCamelCase", CompletionMessage.Empty("123"), true, true, "{\"type\":3,\"invocationId\":\"123\"}"),
|
||||
|
||||
new JsonProtocolTestData("StreamInvocationMessage_HasCustomArgumentWithNoCamelCase", new StreamInvocationMessage("123", "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), false, true, "{\"type\":4,\"invocationId\":\"123\",\"target\":\"Target\",\"arguments\":[{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"ByteArrProp\":[1,2,3]}]}"),
|
||||
new JsonProtocolTestData("StreamInvocationMessage_HasCustomArgumentWithNullValueIgnore", new StreamInvocationMessage("123", "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), true, true, "{\"type\":4,\"invocationId\":\"123\",\"target\":\"Target\",\"arguments\":[{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"byteArrProp\":[1,2,3]}]}"),
|
||||
new JsonProtocolTestData("StreamInvocationMessage_HasCustomArgumentWithNullValueIgnoreAndNoCamelCase", new StreamInvocationMessage("123", "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), false, false, "{\"type\":4,\"invocationId\":\"123\",\"target\":\"Target\",\"arguments\":[{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"NullProp\":null,\"ByteArrProp\":[1,2,3]}]}"),
|
||||
new JsonProtocolTestData("StreamInvocationMessage_HasCustomArgumentWithNullValueInclude", new StreamInvocationMessage("123", "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), true, false, "{\"type\":4,\"invocationId\":\"123\",\"target\":\"Target\",\"arguments\":[{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"nullProp\":null,\"byteArrProp\":[1,2,3]}]}"),
|
||||
new JsonProtocolTestData("StreamInvocationMessage_HasCustomArgumentWithNoCamelCase", new StreamInvocationMessage("123", "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), false, true, "{\"type\":4,\"invocationId\":\"123\",\"target\":\"Target\",\"arguments\":[{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"ByteArrProp\":\"AQID\"}]}"),
|
||||
new JsonProtocolTestData("StreamInvocationMessage_HasCustomArgumentWithNullValueIgnore", new StreamInvocationMessage("123", "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), true, true, "{\"type\":4,\"invocationId\":\"123\",\"target\":\"Target\",\"arguments\":[{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"byteArrProp\":\"AQID\"}]}"),
|
||||
new JsonProtocolTestData("StreamInvocationMessage_HasCustomArgumentWithNullValueIgnoreAndNoCamelCase", new StreamInvocationMessage("123", "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), false, false, "{\"type\":4,\"invocationId\":\"123\",\"target\":\"Target\",\"arguments\":[{\"StringProp\":\"SignalR!\",\"DoubleProp\":6.2831853071,\"IntProp\":42,\"DateTimeProp\":\"2017-04-11T00:00:00Z\",\"NullProp\":null,\"ByteArrProp\":\"AQID\"}]}"),
|
||||
new JsonProtocolTestData("StreamInvocationMessage_HasCustomArgumentWithNullValueInclude", new StreamInvocationMessage("123", "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } }), true, false, "{\"type\":4,\"invocationId\":\"123\",\"target\":\"Target\",\"arguments\":[{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"nullProp\":null,\"byteArrProp\":\"AQID\"}]}"),
|
||||
new JsonProtocolTestData("StreamInvocationMessage_HasFloatArgument", new StreamInvocationMessage("123", "Target", new object[] { 1, "Foo", 2.0f }), true, true, "{\"type\":4,\"invocationId\":\"123\",\"target\":\"Target\",\"arguments\":[1,\"Foo\",2]}"),
|
||||
new JsonProtocolTestData("StreamInvocationMessage_HasHeaders", AddHeaders(TestHeaders, new StreamInvocationMessage("123", "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } })), true, false, "{\"type\":4," + SerializedHeaders + ",\"invocationId\":\"123\",\"target\":\"Target\",\"arguments\":[{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"nullProp\":null,\"byteArrProp\":[1,2,3]}]}"),
|
||||
new JsonProtocolTestData("StreamInvocationMessage_HasHeaders", AddHeaders(TestHeaders, new StreamInvocationMessage("123", "Target", new object[] { new TemporaryCustomObject() { ByteArrProp = new byte[] { 1, 2, 3 } } })), true, false, "{\"type\":4," + SerializedHeaders + ",\"invocationId\":\"123\",\"target\":\"Target\",\"arguments\":[{\"stringProp\":\"SignalR!\",\"doubleProp\":6.2831853071,\"intProp\":42,\"dateTimeProp\":\"2017-04-11T00:00:00Z\",\"nullProp\":null,\"byteArrProp\":\"AQID\"}]}"),
|
||||
}.ToDictionary(t => t.Name);
|
||||
|
||||
public static IEnumerable<object[]> CustomProtocolTestDataNames => CustomProtocolTestData.Keys.Select(name => new object[] { name });
|
||||
|
|
|
|||
Loading…
Reference in New Issue