private void MenuItemCallback(object sender, EventArgs e) { var logger = DbHistoryScriptsPackage.Logger; try { DbProjectManager manager = new DbProjectManager(DbHistoryScriptsPackage._dte, new DefaultConsoleLogger()); var configuration = this.LoadConfiguration(manager, logger); if (configuration != null) { var dacFilePath = manager.BuildDacFile(); if (!string.IsNullOrEmpty(dacFilePath)) { DacDbHistorySchemaControllerBuilder builder = new DacDbHistorySchemaControllerBuilder(configuration.Common, logger); DbHistorySchemaController controller = null; using (FileStream dacFileStream = new FileStream(dacFilePath, FileMode.Open)) { DacSchemaReader reader = new DacSchemaReader(dacFileStream, true, logger); controller = builder.Build(reader, new ProjectScriptDestinationWriter(new DbProjectManager(DbHistoryScriptsPackage._dte, logger), configuration, logger)); if (controller != null) { controller.GenerateHistorySchemaObjects(); } } } } } catch (Exception exc) { logger.LogError("There was an error while generating history scripts.", exc); } }
private async Task GenerateScriptsInternalAsync(string commandValue) { LogLines.Clear(); DacDbHistorySchemaControllerBuilder builder = new DacDbHistorySchemaControllerBuilder(this.Configuration, this.LogLines); DbHistorySchemaController controller = null; DacSchemaReader reader = null; FileStream sourceStream = null; switch (_sourceType) { case EndPointType.FilePath: sourceStream = new FileStream(_source, FileMode.Open, FileAccess.Read); reader = new DacSchemaReader(sourceStream, true, this.LogLines); break; case EndPointType.ConnectionString: reader = new DacSchemaReader(_source, this.LogLines); break; case EndPointType.FolderPath: throw new InvalidOperationException("Source cannot be of type folder"); } try { switch (_destinationType) { case EndPointType.FilePath: controller = builder.Build(reader, new FileScriptDestinationWriter(Destination, this.Configuration, this.LogLines)); break; case EndPointType.ConnectionString: controller = builder.Build(reader, new DbScriptDestinationWriter(Destination, this.LogLines)); break; case EndPointType.FolderPath: controller = builder.Build(reader, new FolderScriptDestinationWriter(new DestinationConfiguration() { Common = this.Configuration, Destination = Destination }, this.LogLines)); break; } if (controller != null) { controller.GenerateHistorySchemaObjects(); } } finally { if (sourceStream != null) { sourceStream.Dispose(); } } }