Skip to content

Releases: simpleinjector/SimpleInjector

Simple Injector v3.1

Choose a tag to compare

@dotnetjunkie dotnetjunkie released this 12 Oct 15:15

Release Notes

If you're upgrading from v2.x, please make sure you upgrade your application to the latest 2.8.x version of Simple Injector first. please read the v3.0 release notes before upgrading to v3.x.

Simple Injector v3.1 adds new convenient overloads that give more control when making batch or conditional registrations and improved some exception messages.

New features and improvements for the SimpleInjector.dll

  • Lifestyle.CreateProducer<TService>(Type, Container) overload added. (fixes #100)
  • Container.RegisterConditional overload added that accepts a Registration instance. This adds extra flexibility and allows using conditional registrations using delegates. (fixes #102)
  • Container.GetTypesToRegister overload added that accepts an TypesToRegisterOptions to allow excluding composites and including decorators and generic type definitions. (fixes #122)
  • RegisterCollection overloads that accept a list of assemblies, now suppress composite types. (fixes #119)
  • Improved performance of GetTypesToRegister method and the Register and RegisterCollection overloads that accept a list of collections.
  • Check added to InstanceProducer constructor to prevent incompatible Registration objects from being supplied. (fixes #52)
  • Exception message improved in case batch-registration skipped decorator. (fixes #13)
  • Lifestyle.CreateRegistration and Container.AddRegistration methods now throws a clear exception explaining that open generic types can't be supplied. (fixes #126)
  • Expection message improved for types with multiple constructors. The exception message now references the documentation about this subject.

Simple Injector v3.0.7

Choose a tag to compare

@dotnetjunkie dotnetjunkie released this 10 Oct 18:39

Release Notes

If you're upgrading from v2.x, please make sure you upgrade your application to the latest 2.8.x version of Simple Injector first. please read the v3.0 release notes before upgrading to v3.x.

Simple Injector v.3.0.7 is a patch release that fixes one bug in the core library related to the diagnostic system. The bug (#131) caused a false positive Torn Lifestyle diagnostic errors in case multiple proxy decorators (i.e. a decorator that depends on a Func<{DecorateeType}> were applied to a single registration.

Simple Injector v3.0.6

Choose a tag to compare

@dotnetjunkie dotnetjunkie released this 04 Oct 18:11

Release Notes

If you're upgrading from v2.x, please make sure you upgrade your application to the latest 2.8.x version of Simple Injector first. please read the v3.0 release notes before upgrading to v3.x.

Simple Injector v.3.0.6 is a patch release that fixes two bugs in the core library related to the diagnostic system. The bugs caused diagnostic errors to be ignored in case decorators where used.

Bug fixes:

  • Use of proxy decorator (with Func dependency for resolving decoratee) caused any possible diagnostic warnings of the decoratee (and dependencies) to be ignored. (fixes #128)
  • Registrations that where wrapped with three or more decorators didn't get diagnosed. (fixes #129)

Simple Injector v3.0.5

Choose a tag to compare

@dotnetjunkie dotnetjunkie released this 03 Sep 18:33

Release Notes

If you're upgrading from v2.x, please make sure you upgrade your application to the latest 2.8.x version of Simple Injector first. please read the v3.0 release notes first

Simple Injector v.3.0.5 is a patch release that fixes two bugs in the core library and fixes the assembly version number of the SimpleInjector.Extensions.ExecutionContextScoping.dll.

Bug fixes / improvements:

  • Unconditional generic registration with type constraint could not be made when Container.Options.AllowOverridingRegistrations was set to true. (fixes #116)
  • Improved exception message that communicates that registrations of collections are separated from other registrations. (fixes #115)
  • AssemblyVersion and AssemblyFileVersion of SimpleInjector.Extensions.ExecutionContextScoping library was set to 2.4.0. (fixes #118)

Simple Injector v3.0.4

Choose a tag to compare

@dotnetjunkie dotnetjunkie released this 31 Aug 19:47

Release Notes

If you're upgrading from v2.x, please make sure you upgrade your application to the latest 2.8.x version of Simple Injector first. please read the v3.0 release notes first

Simple Injector v.3.0.4 is a patch release that fixes 3 bugs in the core library.

Bug fixes:

  • Overriding a registration failed when done with same implementation, and registration of conditional non-generic registrations was accidentally allowed. (fixes #114)
  • ResolveUnregisteredType registrations didn't get cached. (fixes #113)

Simple Injector v3.0.3

Choose a tag to compare

@dotnetjunkie dotnetjunkie released this 27 Aug 20:20

Release Notes

If you're upgrading from v2.x, please make sure you upgrade your application to the latest 2.8.x version of Simple Injector first. please read the v3.0 release notes first

Simple Injector v.3.0.3 is a patch release that fixes 3 bugs in the core library.

Bug fixes:

  • Container.Verify() did not dispose instances registered using WebRequestLifestyle lifestyle. (fixes #95)
  • RegisterConditional with type factory always resolved the first resolved type due to incorrect caching. (fixes #104)
  • Suppression of Lifestyle mismatch worked on wrong registration making it unintuitive and cumbersome to use and could cause accidental suppression of other mismatches. (fixes #108)

Simple Injector v3.0

Choose a tag to compare

@dotnetjunkie dotnetjunkie released this 18 Aug 19:06

Release Notes

Simple Injector v3 is available through Nuget, or you can download the .zip file here. For more background information about this release and migration guidance, please read the blog post. Also see the blog post for a cheat sheet with the most prominent breaking changes.

In Simple Injector v3.0 we are breaking with the past. We removed legacy methods, considerably simplified parts of the API, and added new compelling features.

What this means is that we expect that almost every developer will have to make changes to his composition root.

Before you upgrade to v3.0, please make sure you upgrade your application to the latest 2.8 version of Simple Injector first..

Most compelling new features for this release are the addition of the RegisterConditional method to make conditional and contextual registrations, and the addition of the Lifestyle.Scope Container.Options.DefaultScopedLifestyle pair to considerably simplify working with scoped lifestyles. The most prominent breaking changes are the replacement of the complete SimpleInjector.Extensions namespace and the rename of the methods RegisterSingle and RegisterAll to RegisterSingleton and RegisterCollection.

New features and improvements for the SimpleInjector.dll

  • Container class now implements IDisposable to allow disposing singletons. (fixes #5)
  • Added RegisterDecorator<TService, TDecorator>() methods to simplify registration of non-generic decorators (fixes #7)
  • Added RegisterDecorator() as instance methods on the Container class. (fixes #7)
  • Register(Type, Type) overloads now accept open-generic types as well. (fixes #7)
  • Added Container.GetTypesToRegister method for batch registration. This method was previously hidden deep in the SimpleInjector.Extensions namespace. (fixes #7)
  • Added Container.RegisterSingleton methods as replacement for RegisterSingle methods. The new method name is more intuitive. (fixes #44)
  • Added Container.RegisterCollection methods as replacement for RegisterAll. The new method name is more intuitive. (fixes #42)
  • InstanceProducer<TService> class added that inherits from InstanceProducer and adds a TService GetInstance() method. The generic Lifestyle.CreateProducer methods return an InstanceProducer<TService>. This simplifies the use of externally created instance producers. (fixes #39)
  • DiagnosticResult.Severity property added to allow differentiating between warnings and information messages. (fixes #9)
  • RegisterCollection(Type, IEnumerable<Registration>) now accepts open generic types as well. (fixes #22)
  • Added Container.Register(Type, IEnumerable<Assembly>) and Container.RegisterCollection(Type, IEnumerable<Assembly>) overloads for batch registration. (fixes #7)
  • Resolving variant collections is now supported for container-uncontrolled collections as well. (fixes #25)
  • RegisterConditional methods added to make conditional and contextual registrations for both non-generic and
    closed-generic and open-generic types. (fixes #4)
  • Improved the message of the Lifestyle Mismatch diagnostic warning to include the concrete type in the message. (fixes #63)
  • When overriding property injection behavior, property injection can be intercepted the using the IDependencyInjectionBehavior in the same way as constructor parameters can. (fixes #59)
  • Lifestyle.Scoped property added to simplify registration of scoped lifestyles. (fixes #38)
  • In case of a cyclic dependency graph, the thrown exception now includes information about the graph. (fixes #68)
  • ScopedLifestyle derivatives don't have to override Length anymore and all scoped lifestyles will have the same length. This will make the diagnostic services to treat them as the same lifestyle.
  • Improved support for huge object graphs. (fixes #91)

Breaking changes for the SimpleInjector.dll

  • Unregistered collections are not resolved as empty collections by default anymore. Collections need to be registered explicitly. You can fallback to the old v1/v2 behavior by calling container.Options.ResolveUnregisteredCollections = true;. (fixes #98)
  • IConstructorVerificationBehavior and IConstructorVerificationBehavior made obsolete and replaced with a new IDependencyInjectionBehavior abstraction that combines the two. (fixes #2)
  • Constructor overload Container(ContainerOptions) removed from Container. (fixes #40)
  • Made ScopedLifestyle.WhenScopeEnds method non-virtual. (fixes #11)
  • Made ScopedLifestyle.RegisterForDisposal method non-virtual. (fixes #11)
  • Made ScopedLifestyle.CreateCurrentScopeProvider method abstract. (fixes #11)
  • Removed ScopedLifestyle.DisposeInstances method. (fixes #11)
  • Removed Container.InjectProperties method. (fixes #12)
  • Removed the Container.RegisterSingle method overloads. (fixes #44)
  • Removed the Container.RegisterAll method overloads. (fixes #42)
  • Moved DecoratorPredicateContext class to the SimpleInjector root namespace. (fixes #7)
  • Moved DecoratorContext to the SimpleInjector root namespace. (fixes #7)
  • Removed RegisterSingleDecorator extension methods. RegisterDecorator can be used instead. (fixed #7)
  • Removed RegisterAllOpenGeneric extension methods. RegisterCollection can now be used instead. (fixes #7)
  • Removed RegisterOpenGeneric and RegisterSingleOpenGeneric extension methods. Register can now be used instead. (fixes #7)
  • Renamed OpenGenericPredicateContext to PredicateContext and moved it to the SimpleInjector root namespace. (fixes #7)
  • Second argument of Container.Register(Type, Type) renamed from implementation to implementationType.
  • Removed RegisterManyForOpenGeneric extension methods. Either Register or RegisterCollection can be used instead. (fixes #7)
  • Removed OpenGenericBatchRegistrationExtensions.GetTypesToRegister extension methods. Container.GetTypesToRegister can be used instead. (fixes #7)
  • Calling Verify() or GetInstance will always cause the container to check for lifestyle mismatches unless Container.Options.SuppressLifestyleMismatchVerification is set. (fixes #46)
  • Calling Verify() will now standard do diagnostic analysis. Diagnostic analysis can be suppressed by calling the Verify(VerificationOption) overload (but this is highly discouraged). (fixes #10)
  • Class constraint where TService : class added to GetAllInstances<TService>() method.
  • Renamed PotentialLifestyleMismatchDiagnosticResult class to LifestyleMismatchDiagnosticResult. There's nothing 'potential' about that mismatch. We're actually sure that this is a mismatch. (fixes #84)
  • Made UnregisteredTypeEventArgs constructor internal.

Breaking changes for the SimpleInjector.Extensions.LifetimeScoping.dll

  • Removed the LifetimeScope class. Scope can be used instead. (fixes #12)
  • Removed the SimpleInjectorLifetimeScopeExtensions.EnableLifetimeScoping method. The method has been marked obsolete since Simple Injector 2.6. (fixes #12)

Breaking changes for the SimpleInjector.Integration.Wcf.dll

  • Removed the WcfOperationScope class. Scope can be used instead. (fixes #12)
  • Removed the SimpleInjectorWcfExtensions.EnablePerWcfOperationLifestyle method. The method has been marked obsolete since Simple Injector 2.6. (fixes #12)

Breaking changes for the SimpleInjector.Integration.Web.dll

  • Removed the SimpleInjectorWebExtensions.RegisterForDisposal method. WebRequestLifestyle.RegisterForDisposal can be used instead. (fixes #12)

Breaking changes for the SimpleInjector.Integration.Web.Mvc.dll

  • Removed the SimpleInjectorMvcExtensions.RegisterMvcAttributeFilterProvider method. RegisterMvcIntegratedFilterProvider can be used instead. (fixes #12)

Breaking changes for the SimpleInjector.Integration.WebApi.dll

  • Removed the SimpleInjectorWebApiExtensions.RegisterWebApiFilterProvider method. Please consult the Web API integration guide on how to inject dependencies into Web API filter attributes. (fixes #12)

Bug fixes:

  • Registering a Func<object> using UnregisteredTypeEventArgs.Register(Func<object>) caused the Diagnostic system to throw a NullReferenceException. (fixes #49)
  • Prevented incorrectly mixing registrations for several types of collections. (fixes #8)
  • Cyclic dependency in type registered using RegisterOpenGeneric caused a stackoverflow.
  • Huge transient object graphs failed to be compiled and caused the CLR to throw a stackoverflow exception. (fixes #91)