![]() |
VOOZH | about |
dotnet add package KickStart.SimpleInjector --version 9.4.0
NuGet\Install-Package KickStart.SimpleInjector -Version 9.4.0
<PackageReference Include="KickStart.SimpleInjector" Version="9.4.0" />
<PackageVersion Include="KickStart.SimpleInjector" Version="9.4.0" />Directory.Packages.props
<PackageReference Include="KickStart.SimpleInjector" />Project file
paket add KickStart.SimpleInjector --version 9.4.0
#r "nuget: KickStart.SimpleInjector, 9.4.0"
#:package KickStart.SimpleInjector@9.4.0
#addin nuget:?package=KickStart.SimpleInjector&version=9.4.0Install as a Cake Addin
#tool nuget:?package=KickStart.SimpleInjector&version=9.4.0Install as a Cake Tool
Application start-up helper to initialize things like an IoC container, register mapping information or run a task.
The KickStart library is available on nuget.org via package name KickStart.
To install KickStart, run the following command in the Package Manager Console
PM> Install-Package KickStart
More information about NuGet package available at https://nuget.org/packages/KickStart
Development builds are available on the feedz.io feed. A development build is promoted to the main NuGet feed when it's determined to be stable.
In your Package Manager settings add the following package source for development builds: https://f.feedz.io/loresoft/open/nuget/index.json
IServiceProviderKick.ServiceProviderThis example will scan the assembly containing UserModule. Then it will find all Autofac modules and register them with Autofac. Then, all AutoMapper profiles will be registered with Automapper. Finally, it will find all classes that implement IStartupTask and run it.
Kick.Start(config => config
.IncludeAssemblyFor<UserModule>()
.UseAutofac()
.UseAutoMapper()
.UseStartupTask()
);
Pass data to the startup modules
Kick.Start(config => config
.Data("environment", "debug")
.Data(d =>
{
d["key"] = 123;
d["server"] = "master";
})
);
IStartupTaskModule classes and creates the containerProfile classesIDependencyInjectionRegistration instances for Microsoft.Extensions.DependencyInjectionBsonClassMap classes with MongoDB serializationNinjectModule classes and creates an IKernalISimpleInjectorRegistration instances allowing container registrationIUnityRegistration instances allowing container registrationThe StartupTask extension allows running code on application start-up. To use this extension, implement the IStartupTask interface. Use the Priority property to control the order of execution.
Basic usage
Kick.Start(config => config
.IncludeAssemblyFor<UserModule>() // where to look for tasks
.UseStartupTask() // include startup tasks in the Kick Start
);
Run a delegate on startup
Kick.Start(config => config
.IncludeAssemblyFor<UserModule>()
.UseAutofac() // init Autofac or any other IoC as container
.UseStartupTask(c => c =>
{
c.Run((services, data) =>
{
//do work here
});
})
);
The Autofac extension allows registration of types to be resolved. The extension also creates a default container and sets it to the Kick.Container singleton for access later.
Basic usage
Kick.Start(config => config
.IncludeAssemblyFor<UserRepository>() // where to look for tasks
.UseAutofac() // initialize Autofac
);
Use with ASP.NET MVC
Kick.Start(c => c
.IncludeAssemblyFor<UserModule>()
.UseAutofac(a => a
.Initialize(b => b.RegisterControllers(typeof(MvcApplication).Assembly)) // register all controllers
.Container(r => DependencyResolver.SetResolver(new AutofacDependencyResolver(r))) // set asp.net resolver
)
.UseAutoMapper()
.UseMongoDB()
.UseStartupTask()
);
To install Autofac extension, run the following command in the Package Manager Console
PM> Install-Package KickStart.Autofac
The DependencyInjection extension allows using Microsoft.Extensions.DependencyInjection for depenancy injection.
Basic Usage
Kick.Start(config => config
.LogTo(_output.WriteLine)
.IncludeAssemblyFor<UserRepository>() // where to look
.UseDependencyInjection() // initialize DependencyInjection
);
Integrate with asp.net core 2.0
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// this will auto register logging and run the DependencyInjection startup
services.KickStart(c => c
.IncludeAssemblyFor<UserRepository>() // where to look
.Data("configuration", Configuration) // pass configuration to all startup modules
.Data("hostProcess", "web") // used for conditional registration
.UseStartupTask() // run startup task
);
}
}
To install DependencyInjection extension, run the following command in the Package Manager Console
PM> Install-Package KickStart.DependencyInjection
The SimpleInjector extension allows registration of types to be resolved by running all instances of ISimpleInjectorRegistration. The extension also creates a default container and sets it to the Kick.Container singleton for access later.
Basic usage
Kick.Start(config => config
.IncludeAssemblyFor<UserRepository>() // where to look
.UseSimpleInjector () // initialize SimpleInjector
);
Using SimpleInjector with ASP.NET WebAPI
Kick.Start(c => c
.LogTo(_logger.Debug)
.IncludeAssemblyFor<UserModule>()
.Data("hostProcess", "web")
.UseSimpleInjector(s => s
.Verify(VerificationOption.VerifyOnly)
.Initialize(container =>
{
container.Options.DefaultScopedLifestyle = new WebApiRequestLifestyle();
container.RegisterWebApiControllers(httpConfiguration); // register all controllers
})
.Container(container =>
{
httpConfiguration.DependencyResolver = new SimpleInjectorWebApiDependencyResolver(container); // set asp.net resolver
})
)
.UseStartupTask()
);
To install SimpleInjector extension, run the following command in the Package Manager Console
PM> Install-Package KickStart.SimpleInjector
The Unity extension allows registration of types to be resolved by running all instances of IUnityRegistration. The extension also creates a default container and sets it to the Kick.Container singleton for access later.
Basic usage
Kick.Start(config => config
.IncludeAssemblyFor<UserRepository>() // where to look
.UseUnity () // initialize Unity
);
To install Unity extension, run the following command in the Package Manager Console
PM> Install-Package KickStart.Unity
Example of bootstraping and logging with xUnit tests.
public class StartupTaskStarterTest
{
private readonly ITestOutputHelper _output;
public StartupTaskStarterTest(ITestOutputHelper output)
{
_output = output;
// bootstrap project
Kick.Start(config => config
.LogTo(_output.WriteLine)
.Data("environment", "test") // pass data for conditional registration
.IncludeAssemblyFor<UserRepository>()
.UseSimpleInjector () // initialize SimpleInjector
.UseStartupTask()
);
}
[Fact]
public void RunTest()
{
var userRepository = Kick.ServiceProvider.GetService<IUserRepository>();
Assert.NotNull(userRepository);
// more tests
}
}
KickStart has a generic service registration abstraction. This allows for the creation of a generic class module that registers services for dependency injection that is container agnostic.
Example module to register services
public class UserServiceModule : IServiceModule
{
public void Register(IServiceRegistration services, IDictionary<string, object> data)
{
services.RegisterSingleton<IConnection, SampleConnection>();
services.RegisterTransient<IUserService, UserService>(c => new UserService(c.GetService<IConnection>()));
// register all types that are assignable to IService
services.RegisterSingleton(r => r
.Types(t => t.AssignableTo<IService>())
.As(s => s.Self().ImplementedInterfaces())
);
// register all types that are assignable to IVehicle
services.RegisterSingleton(r => r
.Types(t => t.AssignableTo<IVehicle>())
.As(s => s.Self().ImplementedInterfaces())
);
}
}
Context. Property Assemblies changed to Types.IContainerAdaptor and changed to use IServiceProvider insteadKick.Container to Kick.ServiceProviderAction<string> delegateIStartupTask.Run to IStartupTask.RunAsyncIServiceModule and IServiceRegistration to abstract service/container registration| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 net5.0 was computed. net5.0-windows net5.0-windows was computed. net6.0 net6.0 was computed. net6.0-android net6.0-android was computed. net6.0-ios net6.0-ios was computed. net6.0-maccatalyst net6.0-maccatalyst was computed. net6.0-macos net6.0-macos was computed. net6.0-tvos net6.0-tvos was computed. net6.0-windows net6.0-windows was computed. net7.0 net7.0 was computed. net7.0-android net7.0-android was computed. net7.0-ios net7.0-ios was computed. net7.0-maccatalyst net7.0-maccatalyst was computed. net7.0-macos net7.0-macos was computed. net7.0-tvos net7.0-tvos was computed. net7.0-windows net7.0-windows was computed. net8.0 net8.0 was computed. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 was computed. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 was computed. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 netcoreapp2.0 was computed. netcoreapp2.1 netcoreapp2.1 was computed. netcoreapp2.2 netcoreapp2.2 was computed. netcoreapp3.0 netcoreapp3.0 was computed. netcoreapp3.1 netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 netstandard2.0 is compatible. netstandard2.1 netstandard2.1 is compatible. |
| .NET Framework | net461 net461 was computed. net462 net462 was computed. net463 net463 was computed. net47 net47 was computed. net471 net471 was computed. net472 net472 is compatible. net48 net48 was computed. net481 net481 was computed. |
| MonoAndroid | monoandroid monoandroid was computed. |
| MonoMac | monomac monomac was computed. |
| MonoTouch | monotouch monotouch was computed. |
| Tizen | tizen40 tizen40 was computed. tizen60 tizen60 was computed. |
| Xamarin.iOS | xamarinios xamarinios was computed. |
| Xamarin.Mac | xamarinmac xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos xamarinwatchos was computed. |
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 9.4.0 | 340 | 9/7/2025 |
| 9.3.0 | 342 | 9/10/2024 |
| 9.2.0 | 289 | 6/6/2024 |
| 9.1.0 | 366 | 7/28/2023 |
| 9.0.548 | 645 | 8/20/2022 |
| 9.0.511 | 726 | 4/23/2022 |
| 9.0.484 | 722 | 1/18/2022 |
| 9.0.476 | 558 | 12/22/2021 |
| 9.0.467 | 607 | 11/10/2021 |
| 8.1.457 | 615 | 11/4/2021 |
| 8.0.0.448 | 644 | 10/17/2021 |
| 8.0.0.433 | 672 | 7/28/2021 |
| 8.0.0.426 | 658 | 7/9/2021 |
| 8.0.0.379 | 676 | 2/15/2021 |
| 8.0.0.369 | 736 | 1/19/2021 |
| 8.0.0.360 | 795 | 12/9/2020 |
| 8.0.0.345 | 723 | 11/13/2020 |
| 8.0.0.334 | 759 | 10/26/2020 |
| 8.0.0.328 | 745 | 10/17/2020 |
| 8.0.0.317 | 765 | 10/2/2020 |