diff --git a/extensions/schema-compare/src/schemaCompareMainWindow.ts b/extensions/schema-compare/src/schemaCompareMainWindow.ts index 018e3f7333..f5e72ebe65 100644 --- a/extensions/schema-compare/src/schemaCompareMainWindow.ts +++ b/extensions/schema-compare/src/schemaCompareMainWindow.ts @@ -898,8 +898,7 @@ export class SchemaCompareMainWindow { throw new Error(`Unsupported SchemaCompareEndpointType: ${getSchemaCompareEndpointString(this.targetEndpointInfo.endpointType)}`); } - if (!result || !result.success) { - + if (!result || !result.success || result.errorMessage !== '') { TelemetryReporter.createErrorEvent(TelemetryViews.SchemaCompareMainWindow, 'SchemaCompareApplyFailed', undefined, getTelemetryErrorType(result?.errorMessage)) .withAdditionalProperties({ 'operationId': this.comparisonResult.operationId, @@ -912,6 +911,11 @@ export class SchemaCompareMainWindow { this.generateScriptButton.title = loc.generateScriptEnabledMessage; this.applyButton.enabled = true; this.applyButton.title = loc.applyEnabledMessage; + } else if (this.targetEndpointInfo.endpointType === mssql.SchemaCompareEndpointType.Project) { + const workspaceApi = getDataWorkspaceExtensionApi(); + workspaceApi.showProjectsView(); + + void vscode.window.showInformationMessage(loc.applySuccess); } TelemetryReporter.createActionEvent(TelemetryViews.SchemaCompareMainWindow, 'SchemaCompareApplyEnded') @@ -920,13 +924,6 @@ export class SchemaCompareMainWindow { 'operationId': this.comparisonResult.operationId, 'targetType': getSchemaCompareEndpointString(this.targetEndpointInfo.endpointType) }).send(); - - if (this.targetEndpointInfo.endpointType === mssql.SchemaCompareEndpointType.Project) { - const workspaceApi = getDataWorkspaceExtensionApi(); - workspaceApi.showProjectsView(); - - void vscode.window.showInformationMessage(loc.applySuccess); - } } }); } diff --git a/extensions/sql-database-projects/src/controllers/projectController.ts b/extensions/sql-database-projects/src/controllers/projectController.ts index 93fea7ea86..ce6ab96f5e 100644 --- a/extensions/sql-database-projects/src/controllers/projectController.ts +++ b/extensions/sql-database-projects/src/controllers/projectController.ts @@ -534,21 +534,23 @@ export class ProjectsController { const result: mssql.SchemaComparePublishProjectResult = await service.schemaComparePublishProjectChanges(operationId, projectPath, fs, utils.getAzdataApi()!.TaskExecutionMode.execute); - const project = await Project.openProject(projectFilePath); + if (result.errorMessage === '') { + const project = await Project.openProject(projectFilePath); - let toAdd: vscode.Uri[] = []; - result.addedFiles.forEach((f: any) => toAdd.push(vscode.Uri.file(f))); - await project.addToProject(toAdd); + let toAdd: vscode.Uri[] = []; + result.addedFiles.forEach((f: any) => toAdd.push(vscode.Uri.file(f))); + await project.addToProject(toAdd); - let toRemove: vscode.Uri[] = []; - result.deletedFiles.forEach((f: any) => toRemove.push(vscode.Uri.file(f))); + let toRemove: vscode.Uri[] = []; + result.deletedFiles.forEach((f: any) => toRemove.push(vscode.Uri.file(f))); - let toRemoveEntries: FileProjectEntry[] = []; - toRemove.forEach(f => toRemoveEntries.push(new FileProjectEntry(f, f.path.replace(projectPath + '\\', ''), EntryType.File))); + let toRemoveEntries: FileProjectEntry[] = []; + toRemove.forEach(f => toRemoveEntries.push(new FileProjectEntry(f, f.path.replace(projectPath + '\\', ''), EntryType.File))); - toRemoveEntries.forEach(async f => await project.exclude(f)); + toRemoveEntries.forEach(async f => await project.exclude(f)); - await this.buildProject(project); + await this.buildProject(project); + } return result; }