NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
NuGet · #1367 most downloaded on NuGet
Castle Windsor logging facility lets you easily inject loggers into your components. It offers integration with most popular 3rd party logging frameworks like log4net, NLog and Serilog (see Castle Core docs).
Last release 3 years ago
no release in 18 months
Release timing varies
gaps range from 2 weeks to 1.4 years
Most releases are documented
notes for 13 of 16 stable releases
Nothing withdrawn
no release was ever pulled
15 years old
19 releases · first in 2011
Added net6.0 ( @Jevonius , #630 )
net6.0 (@Jevonius, #630)Castle.Windsor.Extensions.DependencyInjection: Change Microsoft.Extensions.Logging dependencies to their abstract counterparts (@ikkentim, #626, #624)Castle.Windsor.Extensions.DependencyInjection: support parallel containers (@rvdginste, @generik0, #563, #577)Castle.Windsor.Extensions.DependencyInjection package to the Castle.Windsor.Extensions.Hosting package (@ikkentim, #625, #628)Castle.Facilities.Logging have been removed. Extensions methods for built-in logging factories have been added, however LogUsing<T> is still ideal. (@Jevonius, #636)
Castle.Facilities.Logging.LoggerImplementationCastle.Facilities.Logging.LoggingFacility(LoggerImplementation loggingApi)Castle.Facilities.Logging.LoggingFacility(LoggerImplementation loggingApi, string configFile)Castle.Facilities.Logging.LoggingFacility(string customLoggerFactory, string configFile)Castle.Facilities.Logging.LoggingFacility.LogUsing(LoggerImplementation loggingApi)Castle.Facilities.Logging.LoggingFacility.UseLog4Net()Castle.Facilities.Logging.LoggingFacility.UseLog4Net(string configFile)Castle.Facilities.Logging.LoggingFacility.UseNLog()Castle.Facilities.Logging.LoggingFacility.UseNLog(string configFile)One column per quarter.
Restrict Castle.Core dependency to 4.4.1+ and less than 5.x to prevent NuGet using 5.x which has breaking changes ( @Jevonius , #610 )
Upgrade minimum Castle.Core version to 4.4.1 ( @generik0 , #576 )
.NET Extensions' DependencyInjection:
.NET Extensions' DependencyInjection support via new Castle.Windsor.Extensions.DependencyInjection package ( @ltines , #517 )
Castle.Windsor.Extensions.DependencyInjection package (@ltines, #517)System.Nullable<> dependencies (@jnm2, #521)Fix ProxyOptions equality with additional interfaces ( @DamirAinullin , #477 )
ProxyOptions equality with additional interfaces (@DamirAinullin, #477)FrameworkDependencyResolver must not throw NRE if dependency has no type (e.g. depending on a named component) (@dariuslf, #489)__Generated__ in their name (e.g. TagHelpers generated for ViewComponents) as framework classes (@dariuslf, #489)Fixed first-chance HandlerException for optional parameters ( @jnm2 , #450 )
Removed deprecated classes AllTypes and AllTypesOf ( @Fir3pho3nixx , #338 )
TypeUtil.ToCSharpString (and hence in diagnostic messages) resemble C# more closely (@stakx, #404, #406)AllTypes and AllTypesOf (@Fir3pho3nixx, #338)BasedOn methods that reset registrations when fluently chained (@Fir3pho3nixx, #338)LifestyleHandlerType on CustomLifestyleAttribute (@Fir3pho3nixx, #338)WindsorContainer.Resolve(object/IDictionary) overloads in favour of new WindsorContainer.Resolve(Arguments)Arguments class, including to no longer implement IDictionaryIArgumentsComparer[] constructors from ArgumentsWindsorContainer.Resolve(IEnumerable<KeyValuePair<string, object>>) extension methodsCreationContext.AdditionalArguments to use Arguments instead of IDictionaryComponentDependencyRegistrationExtensions(Insert, InsertAnonymous, InsertTyped, InsertTypedCollection) with Add, AddNamed and AddTyped Arguments instance methodsComponentRegistration.DependsOn and ComponentRegistration.DynamicParameters to use Arguments via DynamicParametersDelegateComponentRegistration.DependsOn(Arguments) overloadComponentModel CustomDependencies and ExtendedProperties to use Arguments instead of IDictionaryIComponentModelBuilder.BuildModel to use Arguments instead of IDictionaryILazyComponentLoader.Load to use Arguments instead of IDictionaryFixed components resolved from typed factories being disposed along with unrelated objects ( @jnm2 , #439 )
Logging Facility's LoggerImplementation enum, UseLog4Net and UseNLog methods are deprecated in favour of LogUsing<T> , this includes the loggingApi pr…
System.ComponentModel.TypeConverter NuGet package by updating minimum Castle Core version to 4.1.0 (#321)LoggerImplementation enum, UseLog4Net and UseNLog methods are deprecated in favour of LogUsing<T>, this includes the loggingApi property for XML configuration (@jonorossi, #327)Remove .NET 3.5, .NET 4.0 and .NET 4.0 Client Profile support (@fir3pho3nixx, #173, #180, #177, #185)
Breaking Changes:
Enhancements:
Bugfixes:
Ldarg_N from LOCAL 0 to LOCAL [0,1] in OpCodes so test FluentRegistrationTestCase.Can_publish_events_via_AllTypes could publish events again on Windows 10 Home (build 14393.693) VS 2015 Update 3 using .NET 4.x (@fir3pho3nixx, #168)Fix case sensitivity issue that can cause UsingFactoryMethod to fail (@dohansen, #116)
implemented #57 - build NuGet and Zip packages from TeamCity - contributed by Blair Conrad (@blairconrad)
implemented IOC-375 - List duplicate registrations that are registered through convention
Breaking Changes:
change - the following methods were removed: IHandler IHandlerFactory.Create(ComponentModel model, bool isMetaHandler) IHandler IKernelInternal.AddCustomComponent(ComponentModel model, bool isMetaHandler) void IKernelInternal.RegisterHandler(String key, IHandler handler, bool skipRegistration) IHandler DefaultKernel.AddCustomComponent(ComponentModel model, bool isMetaHandler) the following methods were added: IHandler IKernelInternal.CreateHandler(ComponentModel model) void IKernelInternal.RaiseEventsOnHandlerCreated(IHandler handler) reason - In order to avoid potential deadlocks that were possible when the container was starting and certain combination of open generic components was involved the API was modified to allow limiting the scope of locking when using open generic components. issue - IOC-370 (http://issues.castleproject.org/issue/IOC-370) fix - the changes occur in internal API and should not impact users. If you are impacted ask for help on the castle-users group on Google Groups.
change - .Properties() methods in registration API have changed behavior and are obsolete now. When calling .Properties() on a component multiple times, subsequent calls with now only be passed properties for which previuos calls returned false. reason - The API was not behaving the way most users expected and the way it was structured it was hard to use. issue - IOC-359 (http://issues.castleproject.org/issue/IOC-359) fix - use either overload taking PropertyFilter enum, or one of the two new methods: PropertiesIgnore() and PropertiesRequire().
change - AbstractComponentActivator constructor takes IKernelInternal instead of IKernel now reason - IKernelInternal exposes a logger which allows activators to log information about their behavior. issue - IOC-359 (http://issues.castleproject.org/issue/IOC-357) fix - update the signature of your custom activator to take IKernelInternal instead of IKernel.
fixed IOC-347 - WithServiceAllInterfaces throws exception (regression)
Breaking Changes:
change - Windsor will no longer allow components from parent container to have dependencies from child container when resolving via child container. Class ParentHandlerWithChildResolver was renamed to ParentHandlerWrapper impact - low fixability - medium description - Previously in some cases, when resolving from child container Windsor would allow component from the parent container to depend on components from a child container. This would lead to all sorts of problems (child coomponents leaking to parent scope, parent components being released prematurely when disposing of the child container etc. Overall this behavior was a mess, and was removed. See http://issues.castleproject.org/issue/IOC-345 for more details fix - If you were depending on the old behavior it is best to restructure your dependencies so you don't have to have those inverted dependencies. Since each scenario is different it's best to discuss any questions you may have on the user group.
change - IHandler.SupportsAssignable(Type) method has been added impact - low fixability - easy description - This was added to better support IGenericServiceStrategy on generic handlers when calling IKernel.GetAssignableHandlers(Type). Now the handler can decide whether it wants to consider itself assigmable to given service. fix - This change affects you only if you're implementing custom IHandler. Implementation is dependent on your usage and semantics you want to support for this scenario. When in doubt ask on castle-users-group on Google Groups.
change - System.String, and some other types can no longer be registered as a service in the container impact - low fixability - easy description - This is something that probably should never have made it into the codebase. Now if you try to register String, a collection of strings or collection of value types Windsor will throw an ArgumentException and not allow you to do that. fix - If you did register those types in the container change them from being components to being parameters on the components that were depending on them.
change - DependencyModel.IsValueType is renamed to DependencyModel.IsPrimitiveTypeDependency. impact - low fixability - easy description - This is part of unification of how types that can not be registered as valid services are found and treated in Windsor. Also the property now returns true if TargetItemType is null. Previously it returned false. fix - Change usages of IsValueType to IsPrimitiveTypeDependency if you depended on behavior when TargetItemType is null, you might also need to check its value to preserve the old behavior.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →