private string OnGenerateCode(IProgressReporter pGenerateProgress) { try { pGenerateProgress.Progress(10); var command = PathProvider.GetAutoRestPath(); pGenerateProgress.Progress(30); dependencyInstaller.InstallAutoRest(); pGenerateProgress.Progress(50); var document = documentFactory.GetDocumentAsync(SwaggerFile).GetAwaiter().GetResult(); if (!string.IsNullOrEmpty(document.OpenApi) && Version.TryParse(document.OpenApi, out var openApiVersion) && openApiVersion > Version.Parse("3.0.0")) { var outputFolder = Path.Combine( Path.GetDirectoryName(SwaggerFile) ?? throw new InvalidOperationException(), Guid.NewGuid().ToString("N"), "TempApiClient"); if (!Directory.Exists(outputFolder)) { Directory.CreateDirectory(outputFolder); } processLauncher.Start( command, argumentProvider.GetArguments( outputFolder, SwaggerFile, DefaultNamespace), Path.GetDirectoryName(SwaggerFile)); pGenerateProgress.Progress(80); return(CSharpFileMerger.MergeFilesAndDeleteSource(outputFolder)); } else { var outputFile = FileHelper.CreateRandomFile(); var arguments = argumentProvider.GetLegacyArguments( outputFile, SwaggerFile, DefaultNamespace); try { processLauncher.Start( command, arguments, Path.GetDirectoryName(SwaggerFile)); } catch (ProcessLaunchException) { processLauncher.Start( command, arguments.Replace("--version=", "--version "), Path.GetDirectoryName(SwaggerFile)); } finally { pGenerateProgress.Progress(80); } return(FileHelper.ReadThenDelete(outputFile)); } } finally { pGenerateProgress.Progress(90); } }