DryIoc.dll 3.0.2
DryIoc v3.0.0 Release Notes
From user perspective
OpenScope behavior changes
Now OpenScope is returning IResolverContext instead of full IContainer.
The consequence is that you won't be able to Register on returned object. But this is OK because even before, any registration done on scope was actually done on container. This was confusing, cause someone may think that registration in scope is separate.
Old code:
var container = new Container();
container.Register<A>();
using (var scope = container.OpenScope())
{
scope.Register<B>();
scope.Resolve<A>();
}
New code:
var container = new Container();
container.Register<A>();
container.Register<B>();
using (var scope = container.OpenScope())
{
scope.Resolve<A>();
}
Note: It is still valid to call UseInstance and InjectPropertiesAndFields on the scope,
cause IResolverContext defines both methods.
No more ImplicitOpenedRootScope
This rule was added to conform to Microsoft.Extensions.DependencyInjection specification to enable the resolution of scoped service both from scoped and the root container. The latter means that the resolved service will be a singleton despite the fact it is registered as scoped.
The rule instructed the DryIoc to open scope on container creation and most importantly, to dispose this scope together with container.
As of DryIoc v2.12 the new hybrid Reuse.ScopedOrSingleton was added, so you may not need to open the scope
to resolve such a service. This reuse means the Rules.WithImplicitOpenedRootScope is no longer neccessary.
Old code:
var container = new Container(rules => rules.WithImplicitOpenedRootScope());
container.Register<A>(Reuse.Scoped);
container.Resolve<A>(); // Works, even without an open scope due the rule
New code:
var container = new Container();
container.Register<A>(Reuse.ScopedOrSingleton);
container.Resolve<A>(); // Works, and much more clean given the service reuse
Reuse.InResolutionScope changes
Resolution scope is no longer automatically created on Resolve
Previosly for any registered service the call to Resolve may create the scope associated
with resolved service, as long the service had a dependency registered with Reuse.InResolutionScope.
Now it is no longer happen. The scope will be created only if resolved service is registered
with setup: Setup.With(openResolutionScope: true) option.
Old code:
var container = new Container();
container.Register<A>();
container.Register<DepOfA>(Reuse.InResolutionScopeOf<A>());
container.Resolve<A>(); // opens scope and DepOfA is successfully injected
New code:
var container = new Container();
container.Register<A>(setup: Setup.With(openResolutionScope: true));
container.Register<DepOfA>(Reuse.ScopedTo<A>()); // the new syntax, old is still valid
container.Resolve<A>(); // opens scope and DepOfA is successfully injected
InResolutionScope reuse now is just a Scoped reuse
Resolution scope reuse is the lifetime behavior accosiated with the node in service object graph.
Previously resolution scope reuse was separate from scope reuse. It means that scope created
via OpenScope did not have any link to scope created for resolved or injected service.
Now it is different and resolution scope is the part of nested open scopes. Therefore resolution scope reuse is just a scoped reuse with the special name, consisting of target resolved/injected service type and/or service key.
That also means Reuse.InResolutionScope which does not specify the type of bound service is
just a Reuse.Scoped.
Old code:
var container = new Container();
container.Register<A>(Reuse.InResolutionScopeOf(serviceKey: "X"));
container.Resolve<A>(); // Error! No service with service key "X" is found
New code:
var container = new Container();
container.Register<A>(Reuse.ScopedTo(serviceKey: "X"));
// resolution scope is just an open scope with the special name
using (var scope = container.OpenScope(ResolutionScopeName.Of(serviceKey: "X")))
{
container.Resolve<A>(); // Works
}
RegisterDelegate parameter changes
IResolver parameter in RegisterDelegate((IResolver resolver) => ...) was extended by IResolverContext.
I said 'extended' because IResolverContext implements the IResolver. Because of this, there is a high chance
that your code will compile as before.
Using IResolverContext in delegate will allow you to OpenScope, UseInstance, etc. without bringing the
correct container instance inside delegate.
Old code:
var container = new Container();
container.RegisterDelegate(r =>
{
using (var scope => r.Resolver<IContainer>().OpenScope()) { ... }
});
New code:
var container = new Container();
container.RegisterDelegate(r =>
{
using (var scope => r.OpenScope()) { ... }
});
CreateFacade changes and no more FallbackContainers
FallbackContainers were not working fully and have a different un-expected issues.
This feature was an orthogonal to the rest of DryIoc architecture, so I am happily removed it.
CreateFacade was implemented on top of FallbackContainer and allow to 'override' facaded container registrations.
This behavior for instance may be suitable in Tests to override prod service with test mock.
Now CreateFacade is just a sugar no top of Rules.WithFactorySelector(Rules.SelectKeyedOverDefaultFactory(FacadeKey)).
Old code:
var container = new Container();
container.Register<A>();
container.Register<IDepOfA, DepOfA>();
var facade = container.CreateFacade();
facade.Register<IDepOfA, TestDeoOfA>();
facade.Resolve<A>(); // will have TestDeoOfA
New code:
var container = new Container();
container.Register<A>();
container.Register<IDepOfA, DepOfA>();
var facade = container.CreateFacade();
facade.Register<IDepOfA, TestDeoOfA>(ContainerTools.FacadeKey);
// or with custom key
var facade = container.CreateFacade("test");
facade.Register<IDepOfA, TestDeoOfA>("test");
facade.Resolve<A>(); // will have TestDeoOfA
WeaklyReferenced changes
IDisposable services registered with setup: Setup.With(weaklyReferenced: true) are no longer disposed.
The disposal was not guarantied even before, because the weakly referenced service may be garbage collected at any time.
Full change list
- Using C# 6 through codebase.
IReusecontents is replaced withIReuseV3contents,IReuseV3is removed.- Removed unused
compositeParentKeyandcompositeRequiredTypeparameters fromIResolver.ResolveManyboth in DryIoc and DIZero - Removed
scopeparameter fromResolveandResolveMany - Removed
stateandscopeparameter from FactoryDelegate due #288 both in DryIoc and DryIocZero - Removed
Rules.FallbackContainers Container.CreateFacadeimplementation is changed from the use of fallback containers torules.WithFactorySelector(Rules.SelectKeyedOverDefaultFactory(FacadeKey))- Removed
IScopeAccessinterface, replaced withIResolverContext.OpenedScopeand extension methods. - Removed
ContainerWeakRefimplementation ofIResolverContext. NowIResolverContextis implemented byContaineritself. - Added
IReuse.Nameto support reuse name - Renamed
IContainer.ContainerWeakRefintoIContainer.ResolverContext - Removed
ContainerTools.GetCurrentScopeextension. It is replaced byIResolverContext.CurrentScope - Removed obsolete
IContainer.EmptyRequestandRequest.CreateEmpty - Removed obsolete
IContainer.ResolutionStateCacheandIContainer.GetOrAddStateItem - Removed obsolete
Request.ToRequestInfo - Removed feature
outemostparameter ofReuse.InResolutionScopeOf - Removed not necessary
trackTransientDisposableparameter fromIReuse.Applymethod - Removed
ResolutionScopeReuse, replaced byCurrentScopeReuse - Changed
Reuse.InResolutionScopeto be justReuse.Scopedunderneath - Changed obsolete
RegisterInstanceimplementation to just callUseInstance - Removed
InstanceFactorywhich was used by obsoleteRegisterInstance - Changed
IResolverContextto implement theIResolverinstead of holding it as property to simplifies the path toIResolverfrom the object graph. - Removed unused
Request.IsWrappedInFuncWithArgsmethod - Changed
IContainerto implementIResolverContextas it is already does this - Removed
IContainer.ResolverContextproperty - Removed no longer used
Request.WithFuncArgs - Changed parameter
bool ifUnresolvedReturnDefaulttoIfUnresolved ifUnresolvedinIResolver.Resolvemethods to allow to add moreIfUnresolvedoptions - renamed:
IfAlreadyRegisteredparameter toifAlreadyRegisteredinUseInstancemethods - Moving
OpenScope,UseInstance,InjectPropertiesAndFieldsfromIContainertoIResolverContext OpenScopeno longer accepts theAction<Rules>, but you can always usecontainer.With(Action<Rules>)before opening scopeInjectPropertiesAndFieldsmay define the names of members to inject instead of full blownPropertiesAndFieldsSelector, but there is still possibility to define the selector on container level- Added
object[] argsparameter intoResolveandResolveMany - Removed special SingletonScope, using one implementation for both scope and singletons
- Removed
IScope.GetScopedItemIdOrSelfas it was required only bySingletonScope - Added
IScope.TryGet - Moved
IContainer.ScopeContextintoIResolverContext.ScopeContext - Removed
IScopeContext.ScopeContextName, you may provide your name instead - Removed
Container.NonAmbientRootScopeName - Disposable services registered with
WeaklyReferencedsetup are no longer disposed. Because the disposal in this case is optional anyway and the instance may be collected in any given time. - Removed
ImplicitOpenedRootScope - Obsoleting
WithDefaultReuseInsteadOfTransientreplaced byWithDefaultReuse - Changed RegisterDelegate to accept Func{IResolverContext, object} instead of Func{IResolver, object}
- Obsoleting
WithAutoFallbackResolutionreplaced byWithAutoFallbackDynamicRegistration - Moved
IContainer.With..methods toContainerToolsextension methods - Obsoleting AutoFallback and ConcreteType resolution rules
- Changed
PropertiesAndFields.Allto includewithBaseparameter - Obsoleting the
Reuse.InResolutionScope
No packages depend on DryIoc.dll.
.NET Framework 3.5
- No dependencies.
.NET Framework 4.0
- No dependencies.
.NET Framework 4.5
- No dependencies.
.NETPortable 0.0
- No dependencies.
.NETPortable 0.0
- No dependencies.
Xamarin.Mac 2.0
- No dependencies.
.NET Standard 1.0
- NETStandard.Library (>= 1.6.1)
.NET Standard 1.3
- NETStandard.Library (>= 1.6.1)
.NET Standard 2.0
- No dependencies.
| Version | Downloads | Last updated |
|---|---|---|
| 6.0.0-preview-09 | 30 | 11/25/2024 |
| 6.0.0-preview-08 | 42 | 10/31/2024 |
| 6.0.0-preview-07 | 41 | 03/20/2024 |
| 6.0.0-preview-06 | 37 | 01/31/2024 |
| 5.4.3 | 50 | 11/14/2023 |
| 5.4.2 | 35 | 10/25/2023 |
| 5.4.1 | 46 | 06/23/2023 |
| 5.4.0 | 52 | 05/08/2023 |
| 5.4.0-preview-01 | 41 | 07/01/2023 |
| 5.3.4 | 46 | 04/19/2023 |
| 5.3.3 | 44 | 06/29/2023 |
| 5.3.2 | 36 | 06/27/2023 |
| 5.3.1 | 44 | 05/11/2023 |
| 5.3.0 | 43 | 06/30/2023 |
| 5.2.2 | 46 | 12/30/2022 |
| 5.2.1 | 56 | 08/17/2022 |
| 5.2.0 | 48 | 12/18/2022 |
| 5.1.0 | 51 | 05/18/2023 |
| 5.0.2 | 44 | 06/30/2023 |
| 5.0.1 | 43 | 06/27/2023 |
| 5.0.0 | 44 | 04/18/2022 |
| 5.0.0-preview-01 | 50 | 06/01/2023 |
| 4.8.8 | 59 | 03/21/2023 |
| 4.8.7 | 64 | 02/16/2023 |
| 4.8.6 | 41 | 02/16/2023 |
| 4.8.5 | 50 | 02/16/2023 |
| 4.8.4 | 49 | 02/16/2023 |
| 4.8.3 | 49 | 09/27/2022 |
| 4.8.2 | 56 | 05/08/2023 |
| 4.8.1 | 47 | 10/06/2022 |
| 4.8.0 | 42 | 05/28/2022 |
| 4.7.8 | 48 | 09/18/2022 |
| 4.7.7 | 59 | 05/24/2021 |
| 4.7.6 | 55 | 03/21/2023 |
| 4.7.5 | 46 | 05/07/2023 |
| 4.7.4 | 41 | 02/16/2023 |
| 4.7.3 | 62 | 09/03/2022 |
| 4.7.2 | 40 | 01/26/2021 |
| 4.7.1 | 51 | 05/12/2023 |
| 4.7.0 | 51 | 07/04/2022 |
| 4.7.0-preview-01 | 60 | 06/15/2023 |
| 4.6.0 | 49 | 09/06/2022 |
| 4.5.2 | 47 | 06/29/2023 |
| 4.5.1 | 55 | 10/15/2022 |
| 4.5.0 | 46 | 06/27/2023 |
| 4.4.1 | 49 | 06/30/2023 |
| 4.4.0 | 49 | 07/04/2023 |
| 4.3.4 | 46 | 05/03/2022 |
| 4.3.3 | 38 | 06/29/2023 |
| 4.3.2 | 41 | 06/27/2023 |
| 4.3.1 | 58 | 12/31/2022 |
| 4.3.0 | 44 | 07/16/2022 |
| 4.2.5 | 52 | 12/02/2022 |
| 4.2.4 | 49 | 10/30/2022 |
| 4.2.3 | 48 | 12/22/2022 |
| 4.2.2 | 48 | 12/21/2022 |
| 4.2.1 | 46 | 05/28/2022 |
| 4.2.0 | 55 | 09/14/2022 |
| 4.1.4 | 59 | 08/15/2022 |
| 4.1.3 | 49 | 06/29/2023 |
| 4.1.2 | 47 | 12/24/2022 |
| 4.1.1 | 45 | 09/18/2022 |
| 4.1.1-preview-01 | 71 | 12/25/2022 |
| 4.1.0 | 54 | 07/06/2022 |
| 4.1.0-preview-04 | 46 | 08/30/2022 |
| 4.1.0-preview-03 | 74 | 06/29/2023 |
| 4.1.0-preview-02 | 67 | 04/29/2023 |
| 4.1.0-preview-01 | 62 | 05/14/2023 |
| 4.0.7 | 60 | 07/15/2022 |
| 4.0.6 | 58 | 05/09/2023 |
| 4.0.5 | 47 | 10/16/2020 |
| 4.0.5-preview-01 | 50 | 07/24/2022 |
| 4.0.4 | 48 | 12/30/2022 |
| 4.0.3 | 52 | 05/07/2023 |
| 4.0.2 | 51 | 08/06/2022 |
| 4.0.1 | 45 | 02/03/2023 |
| 4.0.0 | 48 | 06/28/2023 |
| 4.0.0-preview-02 | 50 | 07/01/2023 |
| 4.0.0-preview-01 | 53 | 08/02/2022 |
| 3.1.0-preview-07 | 43 | 06/29/2023 |
| 3.1.0-preview-06 | 48 | 03/07/2023 |
| 3.1.0-preview-05 | 55 | 05/21/2023 |
| 3.1.0-preview-04 | 57 | 10/19/2022 |
| 3.1.0-preview-03 | 72 | 06/30/2023 |
| 3.1.0-preview-02 | 69 | 07/01/2023 |
| 3.1.0-preview-01 | 48 | 07/04/2022 |
| 3.0.2 | 73 | 10/16/2020 |
| 3.0.1 | 49 | 04/03/2023 |
| 3.0.0 | 47 | 05/14/2023 |
| 3.0.0-preview-12 | 46 | 07/01/2023 |
| 3.0.0-preview-11 | 42 | 07/02/2023 |
| 3.0.0-preview-10 | 61 | 09/13/2022 |
| 3.0.0-preview-09 | 54 | 10/18/2022 |
| 3.0.0-preview-08 | 47 | 07/02/2023 |
| 3.0.0-preview-07 | 42 | 06/30/2023 |
| 3.0.0-preview-06 | 44 | 05/19/2023 |
| 3.0.0-preview-05 | 58 | 06/30/2023 |
| 3.0.0-preview-04 | 46 | 05/19/2023 |
| 3.0.0-preview-03 | 46 | 06/29/2023 |
| 3.0.0-preview-02 | 50 | 05/09/2023 |
| 3.0.0-preview-01 | 71 | 05/21/2023 |
| 2.12.10 | 47 | 07/06/2023 |
| 2.12.8 | 43 | 07/26/2022 |
| 2.12.7 | 41 | 05/07/2023 |
| 2.12.6 | 43 | 10/02/2022 |
| 2.12.5 | 37 | 05/13/2023 |
| 2.12.4 | 48 | 12/15/2022 |
| 2.12.3 | 46 | 05/02/2023 |
| 2.12.2 | 42 | 12/16/2022 |
| 2.12.1 | 46 | 05/01/2023 |
| 2.12.0 | 57 | 12/26/2022 |
| 2.12.0-preview-01 | 38 | 06/27/2023 |
| 2.11.6 | 48 | 07/02/2022 |
| 2.11.5 | 44 | 11/08/2022 |
| 2.11.4 | 38 | 07/02/2023 |
| 2.11.3 | 44 | 05/10/2023 |
| 2.11.2 | 39 | 08/25/2022 |
| 2.11.1 | 43 | 06/27/2023 |
| 2.11.0 | 37 | 05/08/2023 |
| 2.11.0-preview-02 | 44 | 09/12/2022 |
| 2.11.0-preview-01 | 41 | 06/29/2023 |
| 2.10.7 | 49 | 07/02/2022 |
| 2.10.6 | 40 | 06/29/2023 |
| 2.10.4 | 42 | 06/29/2023 |
| 2.10.3 | 47 | 03/31/2023 |
| 2.10.2 | 43 | 05/08/2023 |
| 2.10.1 | 44 | 06/30/2023 |
| 2.10.0 | 48 | 07/02/2023 |
| 2.9.7 | 62 | 11/01/2022 |
| 2.9.6 | 49 | 11/28/2022 |
| 2.9.5 | 44 | 05/28/2022 |
| 2.9.4 | 49 | 07/20/2022 |
| 2.9.3 | 50 | 06/28/2023 |
| 2.9.2 | 48 | 08/22/2022 |
| 2.9.1 | 50 | 04/18/2023 |
| 2.9.0 | 45 | 07/17/2022 |
| 2.8.5 | 52 | 07/02/2023 |
| 2.8.4 | 48 | 05/28/2022 |
| 2.8.3 | 46 | 07/01/2023 |
| 2.8.2 | 52 | 03/28/2023 |
| 2.8.1 | 44 | 06/29/2023 |
| 2.8.0 | 44 | 05/08/2023 |
| 2.8.0-preview-01 | 71 | 07/01/2022 |
| 2.7.1 | 52 | 05/15/2023 |
| 2.7.0 | 48 | 03/31/2023 |
| 2.6.4 | 53 | 06/27/2023 |
| 2.6.3 | 43 | 12/05/2022 |
| 2.6.3-netcore-rc2 | 71 | 12/29/2022 |
| 2.6.2 | 47 | 07/02/2023 |
| 2.6.2-netcore-rc2 | 50 | 05/03/2022 |
| 2.6.1-netcore-rc2 | 41 | 05/22/2023 |
| 2.6.0 | 50 | 12/04/2022 |
| 2.5.1 | 43 | 06/28/2023 |
| 2.5.0 | 37 | 05/11/2023 |
| 2.4.3 | 65 | 09/10/2022 |
| 2.4.2 | 54 | 09/05/2022 |
| 2.4.1 | 46 | 04/23/2023 |
| 2.4.0 | 48 | 09/27/2022 |
| 2.3.0 | 46 | 02/15/2023 |
| 2.2.2 | 51 | 08/28/2022 |
| 2.2.1 | 45 | 07/24/2022 |
| 2.2.0 | 49 | 06/30/2023 |
| 2.1.3 | 46 | 06/29/2023 |
| 2.1.2 | 45 | 05/28/2022 |
| 2.1.1 | 48 | 07/19/2022 |
| 2.1.0 | 46 | 02/16/2023 |
| 2.0.2 | 51 | 06/30/2023 |
| 2.0.1 | 38 | 04/02/2023 |
| 2.0.0 | 47 | 05/10/2023 |
| 2.0.0-rc4build353 | 48 | 05/05/2023 |
| 2.0.0-rc4build352 | 47 | 04/08/2023 |
| 2.0.0-rc4build351 | 42 | 06/30/2023 |
| 2.0.0-rc4build350 | 46 | 05/21/2023 |
| 2.0.0-rc4build349 | 42 | 07/06/2023 |
| 2.0.0-rc4build348 | 50 | 07/20/2022 |
| 2.0.0-rc4build347 | 45 | 11/20/2022 |
| 2.0.0-rc4build346 | 47 | 09/29/2022 |
| 2.0.0-rc4build345 | 43 | 07/05/2023 |
| 2.0.0-rc4build344 | 45 | 05/28/2022 |
| 2.0.0-rc4build343 | 43 | 06/25/2023 |
| 2.0.0-rc4build342 | 45 | 07/03/2023 |
| 2.0.0-rc4build341 | 42 | 07/20/2022 |
| 2.0.0-rc4build340 | 49 | 05/12/2023 |
| 2.0.0-rc4build339 | 52 | 05/21/2023 |
| 2.0.0-rc4build338 | 41 | 09/09/2022 |
| 2.0.0-rc4build337 | 51 | 07/21/2022 |
| 2.0.0-rc4build336 | 55 | 07/02/2023 |
| 2.0.0-rc3build340 | 71 | 09/11/2022 |
| 2.0.0-rc3build339 | 48 | 07/01/2022 |
| 2.0.0-rc3build338 | 35 | 06/30/2023 |
| 2.0.0-rc3build337 | 48 | 07/02/2023 |
| 2.0.0-rc3build336 | 44 | 06/30/2023 |
| 2.0.0-rc3build335 | 64 | 06/29/2023 |
| 2.0.0-rc3build334 | 41 | 07/02/2023 |
| 2.0.0-rc3build333 | 59 | 07/01/2023 |
| 2.0.0-rc3build332 | 80 | 03/18/2023 |
| 2.0.0-rc3build331 | 45 | 05/28/2022 |
| 2.0.0-rc3build330 | 44 | 11/12/2022 |
| 2.0.0-rc3build329 | 51 | 05/27/2022 |
| 2.0.0-rc3build328 | 48 | 06/29/2023 |
| 2.0.0-rc3build327 | 76 | 09/06/2022 |
| 2.0.0-rc3build326 | 40 | 06/30/2023 |
| 2.0.0-rc3build325 | 41 | 06/29/2023 |
| 2.0.0-rc3build324 | 48 | 10/02/2022 |
| 2.0.0-rc3build323 | 41 | 07/01/2022 |
| 2.0.0-rc3build322 | 46 | 04/26/2023 |
| 2.0.0-rc3build321 | 43 | 09/13/2022 |
| 2.0.0-rc3build320 | 47 | 05/03/2023 |
| 2.0.0-rc3build319 | 36 | 06/28/2023 |
| 2.0.0-rc3build318 | 49 | 03/20/2023 |
| 2.0.0-rc3build317 | 46 | 06/29/2023 |
| 2.0.0-rc3build316 | 58 | 06/24/2023 |
| 2.0.0-rc3build315 | 66 | 06/30/2023 |
| 2.0.0-rc3build314 | 63 | 10/24/2022 |
| 2.0.0-rc3build313 | 47 | 06/29/2023 |
| 2.0.0-rc3build312 | 42 | 07/04/2023 |
| 2.0.0-rc3build311 | 44 | 08/09/2022 |
| 2.0.0-rc3build310 | 58 | 06/30/2023 |
| 2.0.0-rc3build309 | 55 | 10/05/2022 |
| 2.0.0-rc3build308 | 45 | 06/27/2023 |
| 2.0.0-rc3build307 | 51 | 06/29/2023 |
| 2.0.0-rc3build306 | 65 | 12/03/2022 |
| 2.0.0-rc3build304 | 57 | 05/06/2023 |
| 2.0.0-rc3build303 | 42 | 07/02/2023 |
| 2.0.0-rc3build302 | 44 | 02/03/2023 |
| 2.0.0-rc3build301 | 50 | 06/29/2023 |
| 2.0.0-rc3build300 | 64 | 04/26/2023 |
| 2.0.0-rc3build299 | 47 | 03/08/2023 |
| 2.0.0-rc3build298 | 46 | 06/27/2023 |
| 2.0.0-rc3build297 | 40 | 06/30/2023 |
| 2.0.0-rc2build297 | 46 | 03/26/2023 |
| 2.0.0-rc2build295 | 45 | 08/17/2022 |
| 2.0.0-rc2build294 | 48 | 09/05/2022 |
| 2.0.0-rc2build293 | 42 | 07/01/2023 |
| 2.0.0-rc2build292 | 43 | 07/04/2023 |
| 2.0.0-rc2build291 | 56 | 08/24/2023 |
| 2.0.0-rc2build289 | 66 | 05/22/2023 |
| 2.0.0-rc1build371 | 46 | 06/29/2023 |
| 2.0.0-rc1build366 | 45 | 07/01/2023 |
| 2.0.0-rc1build288 | 49 | 05/28/2022 |
| 2.0.0-rc1build287 | 49 | 07/04/2023 |
| 2.0.0-rc1build286 | 52 | 05/06/2023 |
| 2.0.0-rc1build285 | 46 | 09/17/2022 |
| 2.0.0-rc1build284 | 46 | 06/29/2023 |
| 2.0.0-rc1build283 | 61 | 06/30/2023 |
| 2.0.0-rc1build282 | 54 | 07/17/2022 |
| 2.0.0-rc1build281 | 51 | 06/29/2023 |
| 2.0.0-rc1build280 | 39 | 07/02/2023 |
| 2.0.0-rc1build279 | 46 | 07/03/2023 |
| 2.0.0-rc1build278 | 48 | 10/28/2022 |
| 2.0.0-rc1build277 | 51 | 07/22/2022 |
| 2.0.0-rc1build276 | 55 | 06/27/2023 |
| 2.0.0-rc1build275 | 51 | 09/05/2022 |
| 2.0.0-rc1build274 | 51 | 09/08/2022 |
| 2.0.0-rc1build273 | 47 | 05/28/2022 |
| 2.0.0-rc1build272 | 49 | 05/21/2023 |
| 2.0.0-rc1build271 | 47 | 07/03/2023 |
| 2.0.0-rc1build270 | 47 | 06/27/2023 |
| 2.0.0-rc1build269 | 43 | 07/19/2022 |
| 2.0.0-rc1build268 | 50 | 08/27/2022 |
| 2.0.0-rc1build267 | 55 | 05/14/2023 |
| 2.0.0-rc1build266 | 48 | 07/04/2023 |
| 2.0.0-rc1build265 | 43 | 07/01/2023 |
| 2.0.0-rc1build264 | 42 | 07/02/2023 |
| 2.0.0-rc1build263 | 48 | 11/21/2022 |
| 2.0.0-rc1build262 | 43 | 11/12/2022 |
| 2.0.0-rc1build261 | 44 | 06/30/2023 |
| 2.0.0-rc1build260 | 57 | 07/23/2022 |
| 2.0.0-rc1build259 | 44 | 05/21/2023 |
| 2.0.0-rc1build258 | 48 | 10/16/2022 |
| 2.0.0-rc1build255 | 54 | 05/20/2023 |
| 2.0.0-preview256 | 44 | 07/02/2023 |
| 2.0.0-preview255 | 50 | 05/03/2022 |
| 2.0.0-preview254 | 58 | 07/26/2022 |
| 2.0.0-preview253 | 47 | 07/01/2023 |
| 2.0.0-preview252 | 47 | 07/02/2023 |
| 2.0.0-preview251 | 46 | 05/15/2023 |
| 2.0.0-preview250 | 46 | 06/28/2023 |
| 2.0.0-preview249 | 53 | 06/24/2023 |
| 2.0.0-preview248 | 44 | 09/09/2022 |
| 2.0.0-preview247 | 53 | 05/11/2023 |
| 2.0.0-preview246 | 60 | 05/14/2023 |
| 2.0.0-preview245 | 57 | 05/17/2023 |
| 2.0.0-preview244 | 41 | 07/20/2022 |
| 2.0.0-preview243 | 58 | 06/29/2023 |
| 2.0.0-preview242 | 50 | 07/17/2022 |
| 2.0.0-preview241 | 60 | 07/16/2022 |
| 2.0.0-preview240 | 36 | 06/29/2023 |
| 2.0.0-preview239 | 49 | 12/31/2022 |
| 2.0.0-preview238 | 41 | 06/29/2023 |
| 2.0.0-preview237 | 41 | 07/02/2023 |
| 2.0.0-preview236 | 51 | 07/07/2022 |
| 2.0.0-preview235 | 53 | 10/21/2022 |
| 2.0.0-preview234 | 47 | 06/27/2023 |
| 2.0.0-preview233 | 54 | 05/10/2023 |
| 2.0.0-preview232 | 60 | 09/18/2022 |
| 2.0.0-preview231 | 49 | 05/19/2023 |
| 2.0.0-preview230 | 37 | 06/29/2023 |
| 2.0.0-preview229 | 45 | 05/12/2023 |
| 2.0.0-preview228 | 50 | 07/02/2023 |
| 2.0.0-preview227 | 63 | 11/22/2022 |
| 2.0.0-preview226 | 51 | 09/02/2022 |
| 2.0.0-preview225 | 51 | 05/24/2023 |
| 2.0.0-preview224 | 53 | 05/28/2022 |
| 2.0.0-preview223 | 54 | 05/28/2022 |
| 2.0.0-preview222 | 67 | 07/02/2023 |
| 2.0.0-preview221 | 75 | 03/18/2023 |
| 2.0.0-preview220 | 48 | 08/21/2022 |
| 2.0.0-preview219 | 51 | 07/06/2022 |
| 2.0.0-preview218 | 49 | 03/17/2023 |
| 2.0.0-preview217 | 46 | 07/01/2023 |
| 2.0.0-preview216 | 54 | 03/03/2023 |
| 2.0.0-preview215 | 46 | 07/01/2023 |
| 2.0.0-preview214 | 59 | 05/07/2023 |
| 2.0.0-preview213 | 48 | 06/26/2023 |
| 2.0.0-preview212 | 48 | 11/04/2022 |
| 2.0.0-preview211 | 40 | 07/02/2023 |
| 2.0.0-preview210 | 63 | 05/24/2023 |
| 2.0.0-preview209 | 41 | 06/30/2023 |
| 2.0.0-preview208 | 43 | 06/28/2023 |
| 2.0.0-preview207 | 67 | 05/12/2023 |
| 2.0.0-preview206 | 47 | 07/02/2023 |
| 2.0.0-preview205 | 64 | 10/05/2022 |
| 2.0.0-preview204 | 40 | 07/01/2023 |
| 2.0.0-preview203 | 50 | 06/28/2023 |
| 2.0.0-preview202 | 44 | 06/27/2023 |
| 2.0.0-preview201 | 56 | 05/11/2023 |
| 2.0.0-preview200 | 71 | 06/24/2023 |
| 2.0.0-preview199 | 47 | 07/16/2022 |
| 2.0.0-preview198 | 51 | 07/01/2023 |
| 2.0.0-preview197 | 44 | 07/02/2023 |
| 2.0.0-preview196 | 46 | 07/02/2023 |
| 2.0.0-preview195 | 41 | 08/23/2022 |
| 2.0.0-preview194 | 47 | 06/30/2023 |
| 2.0.0-preview193 | 55 | 06/28/2023 |
| 2.0.0-preview192 | 50 | 09/23/2022 |
| 2.0.0-preview191 | 47 | 06/30/2023 |
| 2.0.0-preview190 | 58 | 07/02/2023 |
| 2.0.0-preview189 | 47 | 05/19/2023 |
| 2.0.0-preview188 | 49 | 06/30/2023 |
| 2.0.0-preview187 | 57 | 05/16/2023 |
| 2.0.0-preview186 | 49 | 06/28/2023 |
| 2.0.0-preview185 | 50 | 07/04/2023 |
| 2.0.0-preview184 | 64 | 05/27/2022 |
| 2.0.0-preview183 | 73 | 06/30/2023 |
| 2.0.0-preview182 | 65 | 12/04/2022 |
| 2.0.0-preview181 | 50 | 09/16/2022 |
| 2.0.0-preview180 | 46 | 09/16/2022 |
| 2.0.0-preview179 | 45 | 03/17/2023 |
| 2.0.0-preview178 | 57 | 06/30/2023 |
| 2.0.0-preview177 | 41 | 06/30/2023 |
| 2.0.0-preview176 | 64 | 07/16/2022 |
| 2.0.0-preview175 | 56 | 07/02/2023 |
| 2.0.0-preview174 | 47 | 07/02/2023 |
| 2.0.0-preview173 | 55 | 08/13/2022 |
| 2.0.0-preview172 | 43 | 07/02/2023 |
| 2.0.0-preview171 | 42 | 07/02/2023 |
| 2.0.0-preview170 | 52 | 12/07/2022 |
| 2.0.0-preview169 | 49 | 06/29/2023 |
| 2.0.0-preview168 | 50 | 06/27/2023 |
| 2.0.0-preview167 | 55 | 05/03/2022 |
| 2.0.0-preview166 | 57 | 06/28/2023 |
| 2.0.0-preview165 | 55 | 06/29/2023 |
| 2.0.0-preview164 | 51 | 03/20/2023 |
| 2.0.0-preview163 | 48 | 05/28/2022 |
| 2.0.0-preview162 | 54 | 03/27/2023 |
| 2.0.0-preview161 | 45 | 03/01/2023 |
| 2.0.0-preview160 | 59 | 06/30/2023 |
| 2.0.0-preview159 | 49 | 07/02/2023 |
| 2.0.0-preview158 | 43 | 07/26/2022 |
| 2.0.0-preview157 | 46 | 06/30/2023 |
| 2.0.0-preview156 | 61 | 11/28/2022 |
| 2.0.0-preview155 | 39 | 07/06/2023 |
| 2.0.0-preview154 | 68 | 07/02/2023 |
| 2.0.0-preview153 | 47 | 07/02/2023 |
| 2.0.0-preview152 | 55 | 05/09/2023 |
| 2.0.0-preview151 | 66 | 06/30/2023 |
| 2.0.0-preview150 | 70 | 09/23/2022 |
| 2.0.0-preview148 | 58 | 05/28/2022 |
| 2.0.0-preview147 | 56 | 07/02/2023 |
| 2.0.0-preview146 | 75 | 07/04/2023 |
| 2.0.0-preview145 | 54 | 07/02/2023 |
| 2.0.0-preview144 | 49 | 07/16/2022 |
| 2.0.0-preview143 | 53 | 06/27/2023 |
| 2.0.0-preview142 | 48 | 06/28/2023 |
| 2.0.0-preview141 | 51 | 10/27/2022 |
| 2.0.0-preview140 | 50 | 05/09/2023 |
| 2.0.0-preview139 | 49 | 06/28/2023 |
| 2.0.0-preview138 | 45 | 05/04/2023 |
| 2.0.0-preview137 | 51 | 06/30/2023 |
| 2.0.0-preview136 | 63 | 08/24/2023 |
| 2.0.0-preview135 | 47 | 04/26/2023 |
| 2.0.0-preview133 | 46 | 06/27/2023 |
| 2.0.0-preview132 | 54 | 04/26/2023 |
| 2.0.0-preview131 | 48 | 03/27/2023 |
| 2.0.0-preview130 | 56 | 11/05/2022 |
| 2.0.0-preview129 | 44 | 06/29/2023 |
| 2.0.0-preview128 | 71 | 06/30/2023 |
| 2.0.0-preview127 | 42 | 05/17/2022 |
| 2.0.0-preview126 | 70 | 03/30/2023 |
| 2.0.0-preview125 | 50 | 06/24/2023 |
| 2.0.0-preview124 | 64 | 07/03/2023 |
| 2.0.0-preview123 | 54 | 05/27/2022 |
| 2.0.0-preview119 | 52 | 04/01/2023 |
| 2.0.0-preview118 | 59 | 05/04/2023 |
| 2.0.0-preview116 | 53 | 05/07/2023 |
| 2.0.0-preview115 | 63 | 06/29/2023 |
| 2.0.0-preview114 | 59 | 05/24/2023 |
| 2.0.0-preview113 | 60 | 07/12/2022 |
| 2.0.0-preview112 | 44 | 07/03/2023 |
| 2.0.0-preview110 | 55 | 04/02/2023 |
| 2.0.0-preview109 | 69 | 05/12/2023 |
| 2.0.0-preview108 | 52 | 05/23/2023 |
| 2.0.0-preview107 | 58 | 07/02/2023 |
| 2.0.0-preview105 | 44 | 07/02/2023 |
| 2.0.0-preview104 | 71 | 06/27/2023 |
| 2.0.0-preview103 | 54 | 05/20/2023 |
| 2.0.0-preview102 | 52 | 05/04/2022 |
| 2.0.0-preview101 | 45 | 11/04/2022 |
| 2.0.0-beta258 | 47 | 05/16/2023 |
| 2.0.0-beta254 | 51 | 06/29/2023 |
| 1.4.1 | 45 | 06/27/2023 |
| 1.4.0 | 51 | 05/08/2023 |
| 1.3.1 | 46 | 06/27/2023 |
| 1.3.0 | 49 | 09/10/2022 |
| 1.2.2 | 50 | 07/13/2022 |
| 1.2.1 | 42 | 06/28/2023 |
| 1.2.0 | 61 | 09/03/2022 |
| 1.1.1 | 52 | 08/28/2022 |
| 1.1.0 | 46 | 08/16/2022 |
| 1.0.11 | 46 | 07/02/2023 |