The Diagnostic Services are now shipped as separate DLL within the same NuGet package as the core library. The idea to separate this from the main package is to reduce the memory footprint at runtime, since applications don't need the diagnostic services,
since you typically use it during debugging and as part of your test suite.
In practice however, the amount of extra memory is really limited and as long as the functionality of the SimpleInjector.Diagnostics.dll is not used, those classes and code are not jitted and the amount of KB that SimpleInjector.dll will increase is fairly
limited (probably somewhere between 30 and 50 KB).
Moving those back together however has some interesting advantages:
- SimpleInjector.Diagnostics.dll doesn't need to have access to the internals of a different assembly and SimpleInjector.dll doesn't need to be 'internals visible to' diagnostics.
- SimpleInjector.dll doesn't have to dynamically load SimpleInjector.Diagnostics.dll to prevent a cyclic dependency.
- It makes it easier to add new features, such as allowing to suppress some diagnostic warnings on a per-registration basis.