private MSBuildProjectBuilder GetProjectBuilder(AssemblyDefinition assembly, GeneratorProjectInfo projectInfo, ProjectGenerationSettings settings, ILanguage language, string projFilePath, DecompilationPreferences preferences, IFrameworkResolver frameworkResolver) { TargetPlatform targetPlatform = assembly.MainModule.AssemblyResolver.GetTargetPlatform(assembly.MainModule.FilePath); if (targetPlatform == TargetPlatform.WinRT) { return new WinRTProjectBuilder(projectInfo.Target, projFilePath, language, preferences, null, NoCacheAssemblyInfoService.Instance, projectInfo.VisualStudioVersion, settings); } else { return new MSBuildProjectBuilder(projectInfo.Target, projFilePath, language, frameworkResolver, preferences, null, NoCacheAssemblyInfoService.Instance, projectInfo.VisualStudioVersion, settings); } }
protected TimeSpan RunInternal(AssemblyDefinition assembly, GeneratorProjectInfo projectInfo, ProjectGenerationSettings settings) { string projFilePath = Path.Combine(projectInfo.Out, Path.GetFileNameWithoutExtension(projectInfo.Target) + projectInfo.Language.VSProjectFileExtension + (settings.JustDecompileSupportedProjectType ? string.Empty : MSBuildProjectBuilder.ErrorFileExtension)); DecompilationPreferences preferences = new DecompilationPreferences(); preferences.WriteFullNames = false; preferences.WriteDocumentation = projectInfo.AddDocumentation; preferences.RenameInvalidMembers = projectInfo.RenameInvalidMembers; IFrameworkResolver frameworkResolver = new ConsoleFrameworkResolver(projectInfo.FrameworkVersion); MSBuildProjectBuilder projectBuilder = GetProjectBuilder(assembly, projectInfo, settings, projectInfo.Language, projFilePath, preferences, frameworkResolver); ConfigurateProjectBuilder(projectBuilder); //As per https://github.com/telerik/JustDecompileEngine/pull/2 DateTime startTime = DateTime.UtcNow; projectBuilder.BuildProject(); TimeSpan projectGenerationTime = DateTime.UtcNow - startTime; return projectGenerationTime; }