Ninject.MVC5 not generating NinjectWebCommon.Cs

Install Ninject.MVC5 from Nuget package and keep version 3.2.1 In latest 3.3.0 version it was not adding NinjectWebCommon.cs file so I downgraded version and it has worked for me.

Happy Coding!


Install all the below packages it will work automatically.

package id=Ninject version=3.3.4 targetFramework=net451 package id=Ninject.Extensions.Conventions version=3.3.0 targetFramework=net451 package id=Ninject.Extensions.Factory version=3.3.2 targetFramework=net451 package id=Ninject.MVC5 version=3.3.0 targetFramework=net451 package id=Ninject.Web.Commonenter code here version=3.3.1 targetFramework=net451 package id=Ninject.Web.Common.W


It looks like the most recent Ninject.Web.Common.WebHost 3.3.0 NuGet package no longer includes the NinjectWebCommon.cs. Older versions, such as 3.2.0 do include this file.

Ninject.Web.Common.WebHost 3.3.0 provides a NinjectHttpApplication class you can derive from and use instead of the NinjectWebCommon.cs. The wiki documentation for Ninject does not seem to have been updated but it looks like using the NinjectHttpApplication is one documented approach

see mat's comment - Web API2 NinjectWebCommon.cs do not appear


After lot of search and tests, I've got the exact solution, where I faced error while system was trying to create multiple instances at a time with the previous answer. Here I needed to create NinjectWebCommon class only without inheriting NinjectHttpApplication.

public static class NinjectWebCommon
{
    private static readonly Bootstrapper bootstrapper = new Bootstrapper();

    /// <summary>
    /// Starts the application
    /// </summary>
    public static void Start()
    {
        DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
        DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
        bootstrapper.Initialize(CreateKernel);
    }

    /// <summary>
    /// Stops the application.
    /// </summary>
    public static void Stop()
    {
        bootstrapper.ShutDown();
    }

    /// <summary>
    /// Creates the kernel that will manage your application.
    /// </summary>
    /// <returns>The created kernel.</returns>
    /// <summary>
    /// Creates the kernel that will manage your application.
    /// </summary>
    /// <returns>The created kernel.</returns>
    private static IKernel CreateKernel()
    {
        var kernel = new StandardKernel();
        RegisterServices(kernel);
        return kernel;
    }

    /// <summary>
    /// Load your modules or register your services here!
    /// </summary>
    /// <param name="kernel">The kernel.</param>
    private static void RegisterServices(IKernel kernel)
    {
        kernel.Load(new INinjectModule[]
        {
            new Module()
        });
    }
}

But here is a problem with parameterized constructor. To avoid this issue I added a method to create Concrete Instance. So here is the updated code..

public static class NinjectWebCommon
{
    private static readonly Bootstrapper bootstrapper = new Bootstrapper();

    /// <summary>
    /// Starts the application
    /// </summary>
    public static void Start()
    {
        DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
        DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
        bootstrapper.Initialize(CreateKernel);
    }

    /// <summary>
    /// Stops the application.
    /// </summary>
    public static void Stop()
    {
        bootstrapper.ShutDown();
    }

    /// <summary>
    /// Creates the kernel that will manage your application.
    /// </summary>
    /// <returns>The created kernel.</returns>
    /// <summary>
    /// Creates the kernel that will manage your application.
    /// </summary>
    /// <returns>The created kernel.</returns>
    private static IKernel CreateKernel()
    {
        return Container;
    }

    public static T GetConcreteInstance<T>()
    {
        object instance = Container.TryGet<T>();
        if (instance != null)
            return (T)instance;
        throw new InvalidOperationException(string.Format("Unable to create an instance of {0}", typeof(T).FullName));
    }

    public static IKernel _container;
    private static IKernel Container
    {
        get
        {
            if (_container == null)
            {
                _container = new StandardKernel();
                _container.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
                _container.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();

                RegisterServices(_container);
            }
            return _container;
        }
    }

    /// <summary>
    /// Load your modules or register your services here!
    /// </summary>
    /// <param name="kernel">The kernel.</param>
    private static void RegisterServices(IKernel kernel)
    {
        kernel.Load(new INinjectModule[]
        {
            new Module()
        });
    }
}