private void _buildEvents_OnBuildDone_Internal(vsBuildScope scope, vsBuildAction action) { Solution solution = _workspace.CurrentSolution; if (action == vsBuildAction.vsBuildActionClean) { DefaultHtmlClientProxyCleaner cleaner = new DefaultHtmlClientProxyCleaner(new DefaultBitCodeGeneratorMappingsProvider(new DefaultBitConfigProvider())); cleaner.GetType().GetTypeInfo().GetMethod(nameof(DefaultHtmlClientProxyCleaner.DeleteCodes)) .Invoke(cleaner, new object[] { _workspace, solution, _isBeingBuiltProjects }); Log("Generated codes were deleted"); } else { Stopwatch watch = Stopwatch.StartNew(); IProjectDtoControllersProvider controllersProvider = new DefaultProjectDtoControllersProvider(); IProjectDtosProvider dtosProvider = new DefaultProjectDtosProvider(controllersProvider); DefaultHtmlClientProxyGenerator generator = new DefaultHtmlClientProxyGenerator(new DefaultBitCodeGeneratorOrderedProjectsProvider(), new DefaultBitCodeGeneratorMappingsProvider(new DefaultBitConfigProvider()), dtosProvider , new DefaultHtmlClientProxyDtoGenerator(), new DefaultHtmlClientContextGenerator(), controllersProvider, new DefaultProjectEnumTypesProvider(controllersProvider, dtosProvider)); generator.GetType().GetTypeInfo().GetMethod(nameof(DefaultHtmlClientProxyGenerator.GenerateCodes)) .Invoke(generator, new object[] { _workspace, solution, _isBeingBuiltProjects }); watch.Stop(); Log($"Code Generation Completed in {watch.ElapsedMilliseconds} milli seconds"); } }