public override void Load()
{
log.Info("Visual C++ plugin loaded");
Bind<ISlnProject>().To<CppSlnProject>();
Bind<IVcxprojBuilderFactory>().ToFactory();
Bind<ICleanExtension>().To<VcxprojCleaner>();
Bind<IYamlProjectParametersLoader>().To<VCppCompilerParametersLoader>();
Bind<IYamlProjectParametersLoader>().To<VCppLinkerParametersLoader>();
Bind<IYamlProjectParametersLoader>().To<VCppATLParametersLoader>();
Bind<IYamlProjectParametersLoader>().To<VCppMIDLParametersLoader>();
Bind<IYamlProjectParametersLoader>().To<VCppManifestParametersLoader>();
Bind<IYamlProjectParametersLoader>().To<VCppCLIParametersLoader>();
Bind<IYamlProjectParametersLoader>().To<VCppToolchainParametersLoader>();
Bind<IMSBuildProjectSection>().To<SourceItemsSection>().WhenInjectedInto<VcxprojGenerator>();
Bind<IMSBuildProjectSection>().To<PropertiesSection>().WhenInjectedInto<VcxprojGenerator>();
Bind<IMSBuildProjectSection>().To<ReferencesSection>().WhenInjectedInto<VcxprojGenerator>().WithConstructorArgument("sourceSetName", "cpp");
Bind<IMSBuildProjectSection>().To<StaticLibraryReferencesSection>().WhenInjectedInto<VcxprojGenerator>();
var oldPlatformManagement = Kernel.Get<IProjectPlatformManagement>();
Rebind<IProjectPlatformManagement>().ToConstant(new CppProjectPlatformManagement(oldPlatformManagement)).InSingletonScope();
var protocolRegistry = Kernel.Get<IDependencyFingerprintProtocolRegistry>();
protocolRegistry.RegisterEnum(i => (AssemblerOutputType)i);
protocolRegistry.RegisterEnum(i => (CharType)i);
protocolRegistry.RegisterEnum(i => (CLanguage)i);
protocolRegistry.RegisterEnum(i => (CLRImageType)i);
protocolRegistry.RegisterEnum(i => (CLRSupportLastError)i);
protocolRegistry.RegisterEnum(i => (CppCliMode)i);
protocolRegistry.RegisterEnum(i => (CppWarningLevel)i);
protocolRegistry.RegisterEnum(i => (DebugInformationFormat)i);
protocolRegistry.RegisterEnum(i => (EnhancedInstructionSet)i);
protocolRegistry.RegisterEnum(i => (ExceptionHandlingType)i);
protocolRegistry.RegisterEnum(i => (FloatingPointModel)i);
protocolRegistry.RegisterEnum(i => (InlineExpansion)i);
protocolRegistry.RegisterEnum(i => (LinkerDriverOption)i);
protocolRegistry.RegisterEnum(i => (LinkerForceOption)i);
protocolRegistry.RegisterEnum(i => (LinkerHotPatchingOption)i);
protocolRegistry.RegisterEnum(i => (LinkerSubSystemOption)i);
protocolRegistry.RegisterEnum(i => (LinkerTargetMachine)i);
protocolRegistry.RegisterEnum(i => (ManagedCppType)i);
protocolRegistry.RegisterEnum(i => (MidlErrorChecks)i);
protocolRegistry.RegisterEnum(i => (MidlTargetEnvironment)i);
protocolRegistry.RegisterEnum(i => (OptimizationFavor)i);
protocolRegistry.RegisterEnum(i => (OptimizationLevel)i);
protocolRegistry.RegisterEnum(i => (PlatformToolSet)i);
protocolRegistry.RegisterEnum(i => (RuntimeCheckType)i);
protocolRegistry.RegisterEnum(i => (RuntimeLibraryType)i);
protocolRegistry.RegisterEnum(i => (UACExecutionLevel)i);
protocolRegistry.RegisterEnum(i => (UseOfATL)i);
var store = Kernel.Get<IBuilderStore>();
var vxprojBuilderFactory = Kernel.Get<IVcxprojBuilderFactory>();
Rebind<IVcxprojBuilderFactory>().ToConstant(
new StoredVcxprojBuilderFactory(vxprojBuilderFactory, store));
}