diff --git a/Directory.Build.props b/Directory.Build.props
index 3ce5ec0b20..f33cdec798 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -58,15 +58,15 @@
15.7.179
2.8.2
- 2.0.0
- 2.0.0
- 2.0.0
- 2.0.0
- 2.0.0
+ 2.1.1
+ 2.1.1
+ 2.1.1
+ 2.1.1
+ 2.1.1
2.0.0
2.0.0
- 2.0.0
- 2.0.0
+ 2.1.1
+ 2.1.1
2.1.0
2.1.0
diff --git a/src/AWS/Orleans.Clustering.DynamoDB/AWSUtilsHostingExtensions.cs b/src/AWS/Orleans.Clustering.DynamoDB/AWSUtilsHostingExtensions.cs
index cce268b21e..58bed61d1d 100644
--- a/src/AWS/Orleans.Clustering.DynamoDB/AWSUtilsHostingExtensions.cs
+++ b/src/AWS/Orleans.Clustering.DynamoDB/AWSUtilsHostingExtensions.cs
@@ -3,6 +3,7 @@
using Orleans.Configuration;
using Orleans.Messaging;
using System;
+using Microsoft.Extensions.Options;
namespace Orleans.Hosting
{
diff --git a/src/AWS/Orleans.Streaming.SQS/Streams/SQSStreamBuilder.cs b/src/AWS/Orleans.Streaming.SQS/Streams/SQSStreamBuilder.cs
index 64f417286e..89fe7e3418 100644
--- a/src/AWS/Orleans.Streaming.SQS/Streams/SQSStreamBuilder.cs
+++ b/src/AWS/Orleans.Streaming.SQS/Streams/SQSStreamBuilder.cs
@@ -7,6 +7,7 @@
using Orleans.Providers.Streams.Common;
using Orleans.ApplicationParts;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Options;
namespace Orleans.Streams
{
diff --git a/src/AdoNet/Orleans.Clustering.AdoNet/AdoNetHostingExtensions.cs b/src/AdoNet/Orleans.Clustering.AdoNet/AdoNetHostingExtensions.cs
index ea8c8da37e..36847b3928 100644
--- a/src/AdoNet/Orleans.Clustering.AdoNet/AdoNetHostingExtensions.cs
+++ b/src/AdoNet/Orleans.Clustering.AdoNet/AdoNetHostingExtensions.cs
@@ -1,5 +1,6 @@
using System;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Options;
using Orleans.Messaging;
using Orleans.Runtime.Membership;
using Orleans.Runtime.MembershipService;
diff --git a/src/AdoNet/Orleans.Reminders.AdoNet/SiloHostBuilderReminderExtensions.cs b/src/AdoNet/Orleans.Reminders.AdoNet/SiloHostBuilderReminderExtensions.cs
index 555d11b99e..0baab1b1bc 100644
--- a/src/AdoNet/Orleans.Reminders.AdoNet/SiloHostBuilderReminderExtensions.cs
+++ b/src/AdoNet/Orleans.Reminders.AdoNet/SiloHostBuilderReminderExtensions.cs
@@ -1,6 +1,7 @@
using System;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Options;
using Orleans.Configuration;
using Orleans.Runtime.ReminderService;
diff --git a/src/Azure/Orleans.Clustering.AzureStorage/AzureTableClusteringExtensions.cs b/src/Azure/Orleans.Clustering.AzureStorage/AzureTableClusteringExtensions.cs
index 63e1936357..f4ca661030 100644
--- a/src/Azure/Orleans.Clustering.AzureStorage/AzureTableClusteringExtensions.cs
+++ b/src/Azure/Orleans.Clustering.AzureStorage/AzureTableClusteringExtensions.cs
@@ -1,5 +1,6 @@
using System;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Options;
using Orleans.AzureUtils;
using Orleans.Messaging;
using Orleans.Runtime.MembershipService;
diff --git a/src/Azure/Orleans.Hosting.AzureCloudServices/Orleans.Hosting.AzureCloudServices.csproj b/src/Azure/Orleans.Hosting.AzureCloudServices/Orleans.Hosting.AzureCloudServices.csproj
index b85c6702b8..3fa2d0d364 100644
--- a/src/Azure/Orleans.Hosting.AzureCloudServices/Orleans.Hosting.AzureCloudServices.csproj
+++ b/src/Azure/Orleans.Hosting.AzureCloudServices/Orleans.Hosting.AzureCloudServices.csproj
@@ -1,4 +1,4 @@
-
+
Microsoft.Orleans.Hosting.AzureCloudServices
Microsoft Orleans Hosting on Azure Cloud Services
@@ -12,7 +12,7 @@
true
$(DefineConstants);ORLEANS_HOSTING_CLOUDSERVICES
-
+
diff --git a/src/Azure/Orleans.Hosting.AzureCloudServices/QueueBalancers/AzureDeploymentQueueBalancer.cs b/src/Azure/Orleans.Hosting.AzureCloudServices/QueueBalancers/AzureDeploymentQueueBalancer.cs
index 0c82becb98..222a2c8888 100644
--- a/src/Azure/Orleans.Hosting.AzureCloudServices/QueueBalancers/AzureDeploymentQueueBalancer.cs
+++ b/src/Azure/Orleans.Hosting.AzureCloudServices/QueueBalancers/AzureDeploymentQueueBalancer.cs
@@ -4,6 +4,7 @@
using Microsoft.Extensions.Logging;
using Orleans.Configuration;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Options;
namespace Orleans.Streams
{
diff --git a/src/Azure/Orleans.Streaming.AzureStorage/Hosting/ClientBuilderExtensions.cs b/src/Azure/Orleans.Streaming.AzureStorage/Hosting/ClientBuilderExtensions.cs
index c2e3435722..b69927a43e 100644
--- a/src/Azure/Orleans.Streaming.AzureStorage/Hosting/ClientBuilderExtensions.cs
+++ b/src/Azure/Orleans.Streaming.AzureStorage/Hosting/ClientBuilderExtensions.cs
@@ -1,4 +1,5 @@
using System;
+using Microsoft.Extensions.Options;
using Orleans.Configuration;
using Orleans.Providers.Streams.AzureQueue;
using Orleans.Streaming;
diff --git a/src/Azure/Orleans.Streaming.AzureStorage/Hosting/SiloBuilderExtensions.cs b/src/Azure/Orleans.Streaming.AzureStorage/Hosting/SiloBuilderExtensions.cs
index bfdd39c62a..f679a688d7 100644
--- a/src/Azure/Orleans.Streaming.AzureStorage/Hosting/SiloBuilderExtensions.cs
+++ b/src/Azure/Orleans.Streaming.AzureStorage/Hosting/SiloBuilderExtensions.cs
@@ -1,4 +1,5 @@
using System;
+using Microsoft.Extensions.Options;
using Orleans.Configuration;
using Orleans.Providers.Streams.AzureQueue;
using Orleans.Streaming;
diff --git a/src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/EventHubStreamBuilder.cs b/src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/EventHubStreamBuilder.cs
index 961328dd2e..4ad7180b8a 100644
--- a/src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/EventHubStreamBuilder.cs
+++ b/src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/EventHubStreamBuilder.cs
@@ -6,6 +6,7 @@
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
+using Microsoft.Extensions.Options;
using Orleans.Providers.Streams.Common;
using Orleans.ApplicationParts;
diff --git a/src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/SiloEventHubStreamBuilderExtensions.cs b/src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/SiloEventHubStreamBuilderExtensions.cs
index ad57573a7a..2a13ff8e49 100644
--- a/src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/SiloEventHubStreamBuilderExtensions.cs
+++ b/src/Azure/Orleans.Streaming.EventHubs/Providers/Streams/EventHub/SiloEventHubStreamBuilderExtensions.cs
@@ -3,6 +3,7 @@
using System;
using System.Collections.Generic;
using System.Text;
+using Microsoft.Extensions.Options;
namespace Orleans.Streams
{
diff --git a/src/Azure/Orleans.Transactions.AzureStorage/Hosting/AzureTableTransactionsSiloBuilderExtensions.cs b/src/Azure/Orleans.Transactions.AzureStorage/Hosting/AzureTableTransactionsSiloBuilderExtensions.cs
index f096f950f8..4a70d2c83b 100644
--- a/src/Azure/Orleans.Transactions.AzureStorage/Hosting/AzureTableTransactionsSiloBuilderExtensions.cs
+++ b/src/Azure/Orleans.Transactions.AzureStorage/Hosting/AzureTableTransactionsSiloBuilderExtensions.cs
@@ -4,6 +4,7 @@
using Orleans.Configuration;
using Orleans.Transactions.Abstractions;
using Microsoft.Extensions.DependencyInjection.Extensions;
+using Microsoft.Extensions.Options;
using Orleans.Providers;
using Orleans.Transactions.AzureStorage;
diff --git a/src/Orleans.Clustering.Consul/ConsulUtilsHostingExtensions.cs b/src/Orleans.Clustering.Consul/ConsulUtilsHostingExtensions.cs
index 8b7d761cc7..1b410485cc 100644
--- a/src/Orleans.Clustering.Consul/ConsulUtilsHostingExtensions.cs
+++ b/src/Orleans.Clustering.Consul/ConsulUtilsHostingExtensions.cs
@@ -1,5 +1,6 @@
using System;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Options;
using Orleans.Messaging;
using Orleans.Runtime.Membership;
using Orleans.Configuration;
diff --git a/src/Orleans.Clustering.ZooKeeper/ZooKeeperHostingExtensions.cs b/src/Orleans.Clustering.ZooKeeper/ZooKeeperHostingExtensions.cs
index 2830173ec6..a6b06f0bcb 100644
--- a/src/Orleans.Clustering.ZooKeeper/ZooKeeperHostingExtensions.cs
+++ b/src/Orleans.Clustering.ZooKeeper/ZooKeeperHostingExtensions.cs
@@ -1,5 +1,6 @@
using System;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Options;
using Orleans.Messaging;
using Orleans.Runtime.Membership;
using Orleans.Configuration;
diff --git a/src/Orleans.Core/Core/ClientBuilderExtensions.cs b/src/Orleans.Core/Core/ClientBuilderExtensions.cs
index ba6f7d432d..3496bccac9 100644
--- a/src/Orleans.Core/Core/ClientBuilderExtensions.cs
+++ b/src/Orleans.Core/Core/ClientBuilderExtensions.cs
@@ -3,6 +3,7 @@
using System.Net;
using System.Collections.Generic;
using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Options;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Orleans.Configuration;
diff --git a/src/Orleans.Core/Hosting/Options/ConfigureNamedOptions.cs b/src/Orleans.Core/Hosting/Options/ConfigureNamedOptions.cs
deleted file mode 100644
index 87b768987d..0000000000
--- a/src/Orleans.Core/Hosting/Options/ConfigureNamedOptions.cs
+++ /dev/null
@@ -1,327 +0,0 @@
-// Code from https://github.com/aspnet/Options/blob/edc21af4166574ecd45d8f8dbd381dfec044f367/src/Microsoft.Extensions.Options/ConfigureNamedOptions.cs
-// This will be removed and superseded Mirosoft.Extensions.Options v2.1.0.0 once it ships.
-
-using System;
-using Microsoft.Extensions.Options;
-
-namespace Orleans.Configuration
-{
- ///
- /// Implementation of IConfigureNamedOptions.
- ///
- ///
- ///
- internal class ConfigureNamedOptions : IConfigureNamedOptions
- where TOptions : class
- where TDep : class
- {
- ///
- /// Constructor.
- ///
- /// The name of the options.
- /// A dependency.
- /// The action to register.
- public ConfigureNamedOptions(string name, TDep dependency, Action action)
- {
- Name = name;
- Action = action;
- Dependency = dependency;
- }
-
- ///
- /// The options name.
- ///
- public string Name { get; }
-
- ///
- /// The configuration action.
- ///
- public Action Action { get; }
-
- public TDep Dependency { get; }
-
- public virtual void Configure(string name, TOptions options)
- {
- if (options == null)
- {
- throw new ArgumentNullException(nameof(options));
- }
-
- // Null name is used to configure all named options.
- if (Name == null || name == Name)
- {
- Action?.Invoke(options, Dependency);
- }
- }
-
- public void Configure(TOptions options) => Configure(Options.DefaultName, options);
- }
-
- ///
- /// Implementation of IConfigureNamedOptions.
- ///
- ///
- ///
- ///
- internal class ConfigureNamedOptions : IConfigureNamedOptions
- where TOptions : class
- where TDep1 : class
- where TDep2 : class
- {
- ///
- /// Constructor.
- ///
- /// The name of the options.
- /// A dependency.
- /// A second dependency.
- /// The action to register.
- public ConfigureNamedOptions(string name, TDep1 dependency, TDep2 dependency2, Action action)
- {
- Name = name;
- Action = action;
- Dependency1 = dependency;
- Dependency2 = dependency2;
- }
-
- ///
- /// The options name.
- ///
- public string Name { get; }
-
- ///
- /// The configuration action.
- ///
- public Action Action { get; }
-
- public TDep1 Dependency1 { get; }
-
- public TDep2 Dependency2 { get; }
-
- public virtual void Configure(string name, TOptions options)
- {
- if (options == null)
- {
- throw new ArgumentNullException(nameof(options));
- }
-
- // Null name is used to configure all named options.
- if (Name == null || name == Name)
- {
- Action?.Invoke(options, Dependency1, Dependency2);
- }
- }
-
- public void Configure(TOptions options) => Configure(Options.DefaultName, options);
- }
-
- ///
- /// Implementation of IConfigureNamedOptions.
- ///
- ///
- ///
- ///
- ///
- internal class ConfigureNamedOptions : IConfigureNamedOptions
- where TOptions : class
- where TDep1 : class
- where TDep2 : class
- where TDep3 : class
- {
- ///
- /// Constructor.
- ///
- /// The name of the options.
- /// A dependency.
- /// A second dependency.
- /// A third dependency.
- /// The action to register.
- public ConfigureNamedOptions(string name, TDep1 dependency, TDep2 dependency2, TDep3 dependency3, Action action)
- {
- Name = name;
- Action = action;
- Dependency1 = dependency;
- Dependency2 = dependency2;
- Dependency3 = dependency3;
- }
-
- ///
- /// The options name.
- ///
- public string Name { get; }
-
- ///
- /// The configuration action.
- ///
- public Action Action { get; }
-
- public TDep1 Dependency1 { get; }
-
- public TDep2 Dependency2 { get; }
-
- public TDep3 Dependency3 { get; }
-
-
- public virtual void Configure(string name, TOptions options)
- {
- if (options == null)
- {
- throw new ArgumentNullException(nameof(options));
- }
-
- // Null name is used to configure all named options.
- if (Name == null || name == Name)
- {
- Action?.Invoke(options, Dependency1, Dependency2, Dependency3);
- }
- }
-
- public void Configure(TOptions options) => Configure(Options.DefaultName, options);
- }
-
- ///
- /// Implementation of IConfigureNamedOptions.
- ///
- ///
- ///
- ///
- ///
- ///
- internal class ConfigureNamedOptions : IConfigureNamedOptions
- where TOptions : class
- where TDep1 : class
- where TDep2 : class
- where TDep3 : class
- where TDep4 : class
- {
- ///
- /// Constructor.
- ///
- /// The name of the options.
- /// A dependency.
- /// A second dependency.
- /// A third dependency.
- /// A fourth dependency.
- /// The action to register.
- public ConfigureNamedOptions(string name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, Action action)
- {
- Name = name;
- Action = action;
- Dependency1 = dependency1;
- Dependency2 = dependency2;
- Dependency3 = dependency3;
- Dependency4 = dependency4;
- }
-
- ///
- /// The options name.
- ///
- public string Name { get; }
-
- ///
- /// The configuration action.
- ///
- public Action Action { get; }
-
- public TDep1 Dependency1 { get; }
-
- public TDep2 Dependency2 { get; }
-
- public TDep3 Dependency3 { get; }
-
- public TDep4 Dependency4 { get; }
-
-
- public virtual void Configure(string name, TOptions options)
- {
- if (options == null)
- {
- throw new ArgumentNullException(nameof(options));
- }
-
- // Null name is used to configure all named options.
- if (Name == null || name == Name)
- {
- Action?.Invoke(options, Dependency1, Dependency2, Dependency3, Dependency4);
- }
- }
-
- public void Configure(TOptions options) => Configure(Options.DefaultName, options);
- }
-
- ///
- /// Implementation of IConfigureNamedOptions.
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- internal class ConfigureNamedOptions : IConfigureNamedOptions
- where TOptions : class
- where TDep1 : class
- where TDep2 : class
- where TDep3 : class
- where TDep4 : class
- where TDep5 : class
- {
- ///
- /// Constructor.
- ///
- /// The name of the options.
- /// A dependency.
- /// A second dependency.
- /// A third dependency.
- /// A fourth dependency.
- /// A fifth dependency.
- /// The action to register.
- public ConfigureNamedOptions(string name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, TDep5 dependency5, Action action)
- {
- Name = name;
- Action = action;
- Dependency1 = dependency1;
- Dependency2 = dependency2;
- Dependency3 = dependency3;
- Dependency4 = dependency4;
- Dependency5 = dependency5;
- }
-
- ///
- /// The options name.
- ///
- public string Name { get; }
-
- ///
- /// The configuration action.
- ///
- public Action Action { get; }
-
- public TDep1 Dependency1 { get; }
-
- public TDep2 Dependency2 { get; }
-
- public TDep3 Dependency3 { get; }
-
- public TDep4 Dependency4 { get; }
-
- public TDep5 Dependency5 { get; }
-
-
- public virtual void Configure(string name, TOptions options)
- {
- if (options == null)
- {
- throw new ArgumentNullException(nameof(options));
- }
-
- // Null name is used to configure all named options.
- if (Name == null || name == Name)
- {
- Action?.Invoke(options, Dependency1, Dependency2, Dependency3, Dependency4, Dependency5);
- }
- }
-
- public void Configure(TOptions options) => Configure(Options.DefaultName, options);
- }
-
-}
\ No newline at end of file
diff --git a/src/Orleans.Core/Hosting/Options/OptionsBuilder.cs b/src/Orleans.Core/Hosting/Options/OptionsBuilder.cs
deleted file mode 100644
index ade3178252..0000000000
--- a/src/Orleans.Core/Hosting/Options/OptionsBuilder.cs
+++ /dev/null
@@ -1,260 +0,0 @@
-// Code from https://github.com/aspnet/Options/blob/edc21af4166574ecd45d8f8dbd381dfec044f367/src/Microsoft.Extensions.Options/OptionsBuilder.cs
-// This will be removed and superseded Mirosoft.Extensions.Options v2.1.0.0 once it ships.
-
-using System;
-using Microsoft.Extensions.DependencyInjection;
-using Microsoft.Extensions.Options;
-
-namespace Orleans.Configuration
-{
- ///
- /// Used to configure TOptions instances. This will be deprecated and superseded Mirosoft.Extensions.Options v2.1.0.0 once it ships.
- ///
- /// The type of options being requested.
- public class OptionsBuilder where TOptions : class
- {
- ///
- /// The default name of the TOptions instance.
- ///
- public string Name { get; }
-
- ///
- /// The for the options being configured.
- ///
- public IServiceCollection Services { get; }
-
- ///
- /// Constructor.
- ///
- /// The for the options being configured.
- /// The default name of the TOptions instance, if null Options.DefaultName is used.
- public OptionsBuilder(IServiceCollection services, string name)
- {
- if (services == null)
- {
- throw new ArgumentNullException(nameof(services));
- }
-
- Services = services;
- Name = name ?? Options.DefaultName;
- }
-
- ///
- /// Registers an action used to configure a particular type of options.
- /// Note: These are run before all .
- ///
- /// The action used to configure the options.
- public virtual OptionsBuilder Configure(Action configureOptions)
- {
- if (configureOptions == null)
- {
- throw new ArgumentNullException(nameof(configureOptions));
- }
-
- Services.AddSingleton>(new ConfigureNamedOptions(Name, configureOptions));
- return this;
- }
-
- public virtual OptionsBuilder Configure(Action configureOptions)
- where TDep : class
- {
- if (configureOptions == null)
- {
- throw new ArgumentNullException(nameof(configureOptions));
- }
-
- Services.AddTransient>(sp =>
- new ConfigureNamedOptions(Name, sp.GetRequiredService(), configureOptions));
- return this;
- }
-
- public virtual OptionsBuilder Configure(Action configureOptions)
- where TDep1 : class
- where TDep2 : class
- {
- if (configureOptions == null)
- {
- throw new ArgumentNullException(nameof(configureOptions));
- }
-
- Services.AddTransient>(sp =>
- new ConfigureNamedOptions(Name, sp.GetRequiredService(), sp.GetRequiredService(), configureOptions));
- return this;
- }
-
- public virtual OptionsBuilder Configure(Action configureOptions)
- where TDep1 : class
- where TDep2 : class
- where TDep3 : class
- {
- if (configureOptions == null)
- {
- throw new ArgumentNullException(nameof(configureOptions));
- }
-
- Services.AddTransient>(
- sp => new ConfigureNamedOptions(
- Name,
- sp.GetRequiredService(),
- sp.GetRequiredService(),
- sp.GetRequiredService(),
- configureOptions));
- return this;
- }
-
- public virtual OptionsBuilder Configure(Action configureOptions)
- where TDep1 : class
- where TDep2 : class
- where TDep3 : class
- where TDep4 : class
- {
- if (configureOptions == null)
- {
- throw new ArgumentNullException(nameof(configureOptions));
- }
-
- Services.AddTransient>(
- sp => new ConfigureNamedOptions(
- Name,
- sp.GetRequiredService(),
- sp.GetRequiredService(),
- sp.GetRequiredService(),
- sp.GetRequiredService(),
- configureOptions));
- return this;
- }
-
- public virtual OptionsBuilder Configure(Action configureOptions)
- where TDep1 : class
- where TDep2 : class
- where TDep3 : class
- where TDep4 : class
- where TDep5 : class
- {
- if (configureOptions == null)
- {
- throw new ArgumentNullException(nameof(configureOptions));
- }
-
- Services.AddTransient>(
- sp => new ConfigureNamedOptions(
- Name,
- sp.GetRequiredService(),
- sp.GetRequiredService(),
- sp.GetRequiredService(),
- sp.GetRequiredService(),
- sp.GetRequiredService(),
- configureOptions));
- return this;
- }
-
- ///
- /// Registers an action used to configure a particular type of options.
- /// Note: These are run after all .
- ///
- /// The action used to configure the options.
- public virtual OptionsBuilder PostConfigure(Action configureOptions)
- {
- if (configureOptions == null)
- {
- throw new ArgumentNullException(nameof(configureOptions));
- }
-
- Services.AddSingleton>(new PostConfigureOptions(Name, configureOptions));
- return this;
- }
-
- public virtual OptionsBuilder PostConfigure(Action configureOptions)
- where TDep : class
- {
- if (configureOptions == null)
- {
- throw new ArgumentNullException(nameof(configureOptions));
- }
-
- Services.AddTransient>(sp =>
- new PostConfigureOptions(Name, sp.GetRequiredService(), configureOptions));
- return this;
- }
-
- public virtual OptionsBuilder PostConfigure(Action configureOptions)
- where TDep1 : class
- where TDep2 : class
- {
- if (configureOptions == null)
- {
- throw new ArgumentNullException(nameof(configureOptions));
- }
-
- Services.AddTransient>(sp =>
- new PostConfigureOptions(Name, sp.GetRequiredService(), sp.GetRequiredService(), configureOptions));
- return this;
- }
-
- public virtual OptionsBuilder PostConfigure(Action configureOptions)
- where TDep1 : class
- where TDep2 : class
- where TDep3 : class
- {
- if (configureOptions == null)
- {
- throw new ArgumentNullException(nameof(configureOptions));
- }
-
- Services.AddTransient>(
- sp => new PostConfigureOptions(
- Name,
- sp.GetRequiredService(),
- sp.GetRequiredService(),
- sp.GetRequiredService(),
- configureOptions));
- return this;
- }
-
- public virtual OptionsBuilder PostConfigure(Action configureOptions)
- where TDep1 : class
- where TDep2 : class
- where TDep3 : class
- where TDep4 : class
- {
- if (configureOptions == null)
- {
- throw new ArgumentNullException(nameof(configureOptions));
- }
-
- Services.AddTransient>(
- sp => new PostConfigureOptions(
- Name,
- sp.GetRequiredService(),
- sp.GetRequiredService(),
- sp.GetRequiredService(),
- sp.GetRequiredService(),
- configureOptions));
- return this;
- }
-
- public virtual OptionsBuilder PostConfigure(Action configureOptions)
- where TDep1 : class
- where TDep2 : class
- where TDep3 : class
- where TDep4 : class
- where TDep5 : class
- {
- if (configureOptions == null)
- {
- throw new ArgumentNullException(nameof(configureOptions));
- }
-
- Services.AddTransient>(
- sp => new PostConfigureOptions(
- Name,
- sp.GetRequiredService(),
- sp.GetRequiredService(),
- sp.GetRequiredService(),
- sp.GetRequiredService(),
- sp.GetRequiredService(),
- configureOptions));
- return this;
- }
- }
-}
\ No newline at end of file
diff --git a/src/Orleans.Core/Hosting/Options/OptionsBuilderConfigurationExtensions.cs b/src/Orleans.Core/Hosting/Options/OptionsBuilderConfigurationExtensions.cs
deleted file mode 100644
index a57ca83ea1..0000000000
--- a/src/Orleans.Core/Hosting/Options/OptionsBuilderConfigurationExtensions.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-// Code from https://github.com/aspnet/Options/blob/fe3f1b15811958acfa0be7eb88656d4bd5943834/src/Microsoft.Extensions.Options.ConfigurationExtensions/OptionsBuilderConfigurationExtensions.cs
-// This will be removed and superseded Mirosoft.Extensions.Options v2.1.0.0 once it ships.
-
-using System;
-using Microsoft.Extensions.Configuration;
-using Microsoft.Extensions.DependencyInjection;
-
-namespace Orleans.Configuration
-{
- ///
- /// Extension methods for adding configuration related options services to the DI container via . This will be deprecated and superseded Mirosoft.Extensions.Options v2.1.0.0 once it ships.
- ///
- public static class OptionsBuilderConfigurationExtensions
- {
- ///
- /// Registers a configuration instance which TOptions will bind against.
- ///
- /// The options type to be configured.
- /// The options builder to add the services to.
- /// The configuration being bound.
- /// The so that additional calls can be chained.
- public static OptionsBuilder Bind(this OptionsBuilder optionsBuilder, IConfiguration config) where TOptions : class
- {
- if (optionsBuilder == null)
- {
- throw new ArgumentNullException(nameof(optionsBuilder));
- }
-
- optionsBuilder.Services.Configure(optionsBuilder.Name, config);
- return optionsBuilder;
- }
- }
-}
\ No newline at end of file
diff --git a/src/Orleans.Core/Hosting/Options/OptionsServiceCollectionExtensions.cs b/src/Orleans.Core/Hosting/Options/OptionsServiceCollectionExtensions.cs
deleted file mode 100644
index 0ddf64f029..0000000000
--- a/src/Orleans.Core/Hosting/Options/OptionsServiceCollectionExtensions.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-// Code from https://github.com/aspnet/Options/blob/fe3f1b15811958acfa0be7eb88656d4bd5943834/src/Microsoft.Extensions.Options/OptionsServiceCollectionExtensions.cs
-// This will be removed and superseded Mirosoft.Extensions.Options v2.1.0.0 once it ships.
-
-using System;
-using Microsoft.Extensions.DependencyInjection;
-using Microsoft.Extensions.Options;
-
-namespace Orleans.Configuration
-{
- ///
- /// Extension methods for adding options services to the DI container. This will be deprecated and superseded Mirosoft.Extensions.Options v2.1.0.0 once it ships.
- ///
- public static class OptionsServiceCollectionExtensions
- {
- ///
- /// Gets an options builder that forwards Configure calls for the same to the underlying service collection. This will be deprecated and superseded Mirosoft.Extensions.Options v2.1.0.0 once it ships.
- ///
- /// The options type to be configured.
- /// The to add the services to.
- /// The so that configure calls can be chained in it.
- public static OptionsBuilder AddOptions(this IServiceCollection services)
- where TOptions : class
- => services.AddOptions(Options.DefaultName);
-
- ///
- /// Gets an options builder that forwards Configure calls for the same named to the underlying service collection. This will be deprecated and superseded Mirosoft.Extensions.Options v2.1.0.0 once it ships.
- ///
- /// The options type to be configured.
- /// The to add the services to.
- /// The name of the options instance.
- /// The so that configure calls can be chained in it.
- public static OptionsBuilder AddOptions(this IServiceCollection services, string name)
- where TOptions : class
- {
- if (services == null)
- {
- throw new ArgumentNullException(nameof(services));
- }
-
- services.AddOptions();
-
- return new OptionsBuilder(services, name);
- }
- }
-}
\ No newline at end of file
diff --git a/src/Orleans.Core/Hosting/Options/PostConfigureOptions.cs b/src/Orleans.Core/Hosting/Options/PostConfigureOptions.cs
deleted file mode 100644
index 2fc8fa6ac9..0000000000
--- a/src/Orleans.Core/Hosting/Options/PostConfigureOptions.cs
+++ /dev/null
@@ -1,327 +0,0 @@
-// Code from https://github.com/aspnet/Options/blob/edc21af4166574ecd45d8f8dbd381dfec044f367/src/Microsoft.Extensions.Options/PostConfigureOptions.cs
-// This will be removed and superseded Mirosoft.Extensions.Options v2.1.0.0 once it ships.
-
-using System;
-using Microsoft.Extensions.Options;
-
-namespace Orleans.Configuration
-{
- ///
- /// Implementation of IPostConfigureOptions.
- ///
- ///
- ///
- internal class PostConfigureOptions : IPostConfigureOptions
- where TOptions : class
- where TDep : class
- {
- ///
- /// Constructor.
- ///
- /// The name of the options.
- /// A dependency.
- /// The action to register.
- public PostConfigureOptions(string name, TDep dependency, Action action)
- {
- Name = name;
- Action = action;
- Dependency = dependency;
- }
-
- ///
- /// The options name.
- ///
- public string Name { get; }
-
- ///
- /// The configuration action.
- ///
- public Action Action { get; }
-
- public TDep Dependency { get; }
-
- public virtual void PostConfigure(string name, TOptions options)
- {
- if (options == null)
- {
- throw new ArgumentNullException(nameof(options));
- }
-
- // Null name is used to configure all named options.
- if (Name == null || name == Name)
- {
- Action?.Invoke(options, Dependency);
- }
- }
-
- public void PostConfigure(TOptions options) => PostConfigure(Options.DefaultName, options);
- }
-
- ///
- /// Implementation of IPostConfigureOptions.
- ///
- ///
- ///
- ///
- internal class PostConfigureOptions : IPostConfigureOptions
- where TOptions : class
- where TDep1 : class
- where TDep2 : class
- {
- ///
- /// Constructor.
- ///
- /// The name of the options.
- /// A dependency.
- /// A second dependency.
- /// The action to register.
- public PostConfigureOptions(string name, TDep1 dependency, TDep2 dependency2, Action action)
- {
- Name = name;
- Action = action;
- Dependency1 = dependency;
- Dependency2 = dependency2;
- }
-
- ///
- /// The options name.
- ///
- public string Name { get; }
-
- ///
- /// The configuration action.
- ///
- public Action Action { get; }
-
- public TDep1 Dependency1 { get; }
-
- public TDep2 Dependency2 { get; }
-
- public virtual void PostConfigure(string name, TOptions options)
- {
- if (options == null)
- {
- throw new ArgumentNullException(nameof(options));
- }
-
- // Null name is used to configure all named options.
- if (Name == null || name == Name)
- {
- Action?.Invoke(options, Dependency1, Dependency2);
- }
- }
-
- public void PostConfigure(TOptions options) => PostConfigure(Options.DefaultName, options);
- }
-
- ///
- /// Implementation of IPostConfigureOptions.
- ///
- ///
- ///
- ///
- ///
- internal class PostConfigureOptions : IPostConfigureOptions
- where TOptions : class
- where TDep1 : class
- where TDep2 : class
- where TDep3 : class
- {
- ///
- /// Constructor.
- ///
- /// The name of the options.
- /// A dependency.
- /// A second dependency.
- /// A third dependency.
- /// The action to register.
- public PostConfigureOptions(string name, TDep1 dependency, TDep2 dependency2, TDep3 dependency3, Action action)
- {
- Name = name;
- Action = action;
- Dependency1 = dependency;
- Dependency2 = dependency2;
- Dependency3 = dependency3;
- }
-
- ///
- /// The options name.
- ///
- public string Name { get; }
-
- ///
- /// The configuration action.
- ///
- public Action Action { get; }
-
- public TDep1 Dependency1 { get; }
-
- public TDep2 Dependency2 { get; }
-
- public TDep3 Dependency3 { get; }
-
-
- public virtual void PostConfigure(string name, TOptions options)
- {
- if (options == null)
- {
- throw new ArgumentNullException(nameof(options));
- }
-
- // Null name is used to configure all named options.
- if (Name == null || name == Name)
- {
- Action?.Invoke(options, Dependency1, Dependency2, Dependency3);
- }
- }
-
- public void PostConfigure(TOptions options) => PostConfigure(Options.DefaultName, options);
- }
-
- ///
- /// Implementation of IPostConfigureOptions.
- ///
- ///
- ///
- ///
- ///
- ///
- internal class PostConfigureOptions : IPostConfigureOptions
- where TOptions : class
- where TDep1 : class
- where TDep2 : class
- where TDep3 : class
- where TDep4 : class
- {
- ///
- /// Constructor.
- ///
- /// The name of the options.
- /// A dependency.
- /// A second dependency.
- /// A third dependency.
- /// A fourth dependency.
- /// The action to register.
- public PostConfigureOptions(string name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, Action action)
- {
- Name = name;
- Action = action;
- Dependency1 = dependency1;
- Dependency2 = dependency2;
- Dependency3 = dependency3;
- Dependency4 = dependency4;
- }
-
- ///
- /// The options name.
- ///
- public string Name { get; }
-
- ///
- /// The configuration action.
- ///
- public Action Action { get; }
-
- public TDep1 Dependency1 { get; }
-
- public TDep2 Dependency2 { get; }
-
- public TDep3 Dependency3 { get; }
-
- public TDep4 Dependency4 { get; }
-
-
- public virtual void PostConfigure(string name, TOptions options)
- {
- if (options == null)
- {
- throw new ArgumentNullException(nameof(options));
- }
-
- // Null name is used to configure all named options.
- if (Name == null || name == Name)
- {
- Action?.Invoke(options, Dependency1, Dependency2, Dependency3, Dependency4);
- }
- }
-
- public void PostConfigure(TOptions options) => PostConfigure(Options.DefaultName, options);
- }
-
- ///
- /// Implementation of IPostConfigureOptions.
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- internal class PostConfigureOptions : IPostConfigureOptions
- where TOptions : class
- where TDep1 : class
- where TDep2 : class
- where TDep3 : class
- where TDep4 : class
- where TDep5 : class
- {
- ///
- /// Constructor.
- ///
- /// The name of the options.
- /// A dependency.
- /// A second dependency.
- /// A third dependency.
- /// A fourth dependency.
- /// A fifth dependency.
- /// The action to register.
- public PostConfigureOptions(string name, TDep1 dependency1, TDep2 dependency2, TDep3 dependency3, TDep4 dependency4, TDep5 dependency5, Action action)
- {
- Name = name;
- Action = action;
- Dependency1 = dependency1;
- Dependency2 = dependency2;
- Dependency3 = dependency3;
- Dependency4 = dependency4;
- Dependency5 = dependency5;
- }
-
- ///
- /// The options name.
- ///
- public string Name { get; }
-
- ///
- /// The configuration action.
- ///
- public Action Action { get; }
-
- public TDep1 Dependency1 { get; }
-
- public TDep2 Dependency2 { get; }
-
- public TDep3 Dependency3 { get; }
-
- public TDep4 Dependency4 { get; }
-
- public TDep5 Dependency5 { get; }
-
-
- public virtual void PostConfigure(string name, TOptions options)
- {
- if (options == null)
- {
- throw new ArgumentNullException(nameof(options));
- }
-
- // Null name is used to configure all named options.
- if (Name == null || name == Name)
- {
- Action?.Invoke(options, Dependency1, Dependency2, Dependency3, Dependency4, Dependency5);
- }
- }
-
- public void PostConfigure(TOptions options) => PostConfigure(Options.DefaultName, options);
- }
-
-}
\ No newline at end of file
diff --git a/src/Orleans.Core/Streams/ClientStreamExtensions.cs b/src/Orleans.Core/Streams/ClientStreamExtensions.cs
index 466066d6dc..5e21cc98c5 100644
--- a/src/Orleans.Core/Streams/ClientStreamExtensions.cs
+++ b/src/Orleans.Core/Streams/ClientStreamExtensions.cs
@@ -1,6 +1,7 @@
using System;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Options;
using Orleans.Configuration;
using Orleans.Providers.Streams.Common;
using Orleans.Providers.Streams.SimpleMessageStream;
diff --git a/src/Orleans.Core/Streams/ClusterClientPersistentStreamConfigurator.cs b/src/Orleans.Core/Streams/ClusterClientPersistentStreamConfigurator.cs
index 90ff2994bb..092cedfee8 100644
--- a/src/Orleans.Core/Streams/ClusterClientPersistentStreamConfigurator.cs
+++ b/src/Orleans.Core/Streams/ClusterClientPersistentStreamConfigurator.cs
@@ -6,6 +6,7 @@
using System;
using System.Collections.Generic;
using System.Text;
+using Microsoft.Extensions.Options;
namespace Orleans.Streams
{
diff --git a/src/Orleans.Runtime.Abstractions/Hosting/StreamHostingExtensions.cs b/src/Orleans.Runtime.Abstractions/Hosting/StreamHostingExtensions.cs
index 1ca48ce8bc..d0d90379b4 100644
--- a/src/Orleans.Runtime.Abstractions/Hosting/StreamHostingExtensions.cs
+++ b/src/Orleans.Runtime.Abstractions/Hosting/StreamHostingExtensions.cs
@@ -1,5 +1,6 @@
using System;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Options;
using Orleans.Runtime;
using Orleans.Hosting;
using Orleans.Streams;
diff --git a/src/Orleans.Runtime.Abstractions/Streams/ISiloPersistentStreamConfigurator.cs b/src/Orleans.Runtime.Abstractions/Streams/ISiloPersistentStreamConfigurator.cs
index a145c51aab..3dc30ca481 100644
--- a/src/Orleans.Runtime.Abstractions/Streams/ISiloPersistentStreamConfigurator.cs
+++ b/src/Orleans.Runtime.Abstractions/Streams/ISiloPersistentStreamConfigurator.cs
@@ -2,6 +2,7 @@
using System;
using System.Collections.Generic;
using System.Text;
+using Microsoft.Extensions.Options;
namespace Orleans.Streams
{
diff --git a/src/Orleans.Runtime/Hosting/CoreHostingExtensions.cs b/src/Orleans.Runtime/Hosting/CoreHostingExtensions.cs
index 337383fe99..f258918497 100644
--- a/src/Orleans.Runtime/Hosting/CoreHostingExtensions.cs
+++ b/src/Orleans.Runtime/Hosting/CoreHostingExtensions.cs
@@ -2,6 +2,7 @@
using System.Net;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
+using Microsoft.Extensions.Options;
using Orleans.Configuration;
using Orleans.Runtime;
using Orleans.Runtime.MembershipService;
diff --git a/src/Orleans.Runtime/Streams/QueueBalancer/PersistentStreamConfiguratorExtension.cs b/src/Orleans.Runtime/Streams/QueueBalancer/PersistentStreamConfiguratorExtension.cs
index 94d86e0b6a..24a2373d92 100644
--- a/src/Orleans.Runtime/Streams/QueueBalancer/PersistentStreamConfiguratorExtension.cs
+++ b/src/Orleans.Runtime/Streams/QueueBalancer/PersistentStreamConfiguratorExtension.cs
@@ -3,7 +3,6 @@
using Orleans.Streams;
using System;
using Microsoft.Extensions.DependencyInjection;
-using System.Collections.Generic;
using System.Text;
using Orleans.Hosting;
diff --git a/src/Orleans.Streaming.GCP/Providers/Streams/PubSub/PubSubStreamConfigurator.cs b/src/Orleans.Streaming.GCP/Providers/Streams/PubSub/PubSubStreamConfigurator.cs
index c96f0c0cf1..963eb85ce0 100644
--- a/src/Orleans.Streaming.GCP/Providers/Streams/PubSub/PubSubStreamConfigurator.cs
+++ b/src/Orleans.Streaming.GCP/Providers/Streams/PubSub/PubSubStreamConfigurator.cs
@@ -7,6 +7,7 @@
using Orleans.Providers.Streams.Common;
using Orleans.ApplicationParts;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Options;
namespace Orleans.Streams
{
diff --git a/src/Orleans.TestingHost/TestStorageProviders/FaultyMemoryStorage.cs b/src/Orleans.TestingHost/TestStorageProviders/FaultyMemoryStorage.cs
index 7f16eb0863..d662bbee27 100644
--- a/src/Orleans.TestingHost/TestStorageProviders/FaultyMemoryStorage.cs
+++ b/src/Orleans.TestingHost/TestStorageProviders/FaultyMemoryStorage.cs
@@ -2,6 +2,7 @@
using System;
using System.Collections.Generic;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Options;
using Orleans.Configuration;
using Orleans.Hosting;
using Orleans.Runtime;
diff --git a/src/Orleans.Transactions.TestkitBase/FaultInjection/ControlledInjection/HostingExtensions.cs b/src/Orleans.Transactions.TestkitBase/FaultInjection/ControlledInjection/HostingExtensions.cs
index e35461b8e6..80394c83ed 100644
--- a/src/Orleans.Transactions.TestkitBase/FaultInjection/ControlledInjection/HostingExtensions.cs
+++ b/src/Orleans.Transactions.TestkitBase/FaultInjection/ControlledInjection/HostingExtensions.cs
@@ -5,6 +5,7 @@
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
+using Microsoft.Extensions.Options;
using Orleans.Configuration;
using Orleans.Hosting;
using Orleans.Providers;
diff --git a/src/OrleansProviders/Hosting/MemoryGrainStorageSiloBuilderExtensions.cs b/src/OrleansProviders/Hosting/MemoryGrainStorageSiloBuilderExtensions.cs
index 3ed6ca42f6..34f4d6fcd9 100644
--- a/src/OrleansProviders/Hosting/MemoryGrainStorageSiloBuilderExtensions.cs
+++ b/src/OrleansProviders/Hosting/MemoryGrainStorageSiloBuilderExtensions.cs
@@ -1,5 +1,7 @@
using System;
+using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
+using Microsoft.Extensions.Options;
using Orleans.Configuration;
using Orleans.Providers;
using Orleans.Runtime;
diff --git a/src/OrleansProviders/Streams/Common/RecoverableStreamConfigurator.cs b/src/OrleansProviders/Streams/Common/RecoverableStreamConfigurator.cs
index aba8e25d59..c5cc191db7 100644
--- a/src/OrleansProviders/Streams/Common/RecoverableStreamConfigurator.cs
+++ b/src/OrleansProviders/Streams/Common/RecoverableStreamConfigurator.cs
@@ -7,6 +7,7 @@
using System;
using System.Collections.Generic;
using System.Text;
+using Microsoft.Extensions.Options;
namespace Orleans.Streams
{
diff --git a/test/Extensions/ServiceBus.Tests/StatisticMonitorTests/EHStatisticMonitorTests.cs b/test/Extensions/ServiceBus.Tests/StatisticMonitorTests/EHStatisticMonitorTests.cs
index 9d52dae277..2e4ad09d5b 100644
--- a/test/Extensions/ServiceBus.Tests/StatisticMonitorTests/EHStatisticMonitorTests.cs
+++ b/test/Extensions/ServiceBus.Tests/StatisticMonitorTests/EHStatisticMonitorTests.cs
@@ -2,7 +2,7 @@
using System.Threading.Tasks;
using Microsoft.Azure.EventHubs;
using Orleans.Runtime;
-using Orleans.Runtime.Configuration;
+using Microsoft.Extensions.Options;
using Orleans.Storage;
using Orleans.Streams;
using Orleans.TestingHost;
diff --git a/test/Extensions/TesterAzureUtils/Tester.AzureUtils.csproj b/test/Extensions/TesterAzureUtils/Tester.AzureUtils.csproj
index 76d129115c..bc901675a2 100644
--- a/test/Extensions/TesterAzureUtils/Tester.AzureUtils.csproj
+++ b/test/Extensions/TesterAzureUtils/Tester.AzureUtils.csproj
@@ -13,7 +13,6 @@
-