/// <summary> /// Сохранить информацию о пакете. /// </summary> /// <param name="packageInfoModel">Модель информации о пакете.</param> private void SavePackageInfoModel(PackageInfoModel packageInfoModel) { Log.Info(" Сохранение информации о пакете: запущено"); var packageInfoSerializer = new XmlSerializer(typeof(PackageInfoModel)); using (var packageInfoStream = new FileStream(this.GetPackageInfoFileName(), FileMode.Create)) using (var writer = XmlWriter.Create(packageInfoStream, GetXmlWriterSettings())) packageInfoSerializer.Serialize(writer, packageInfoModel, GetXmlSerializerNamespaces()); Log.Info(" Сохранение информации о пакете: завершено"); }
/// <summary> /// Выполнить экспорт из пакета разработки в структуру папок. /// </summary> private void HandleExportPackage(XmlReaderSettings packageReaderSettings) { using (var fileStream = File.OpenRead(this.PackageFileName)) { var packageSerializer = new XmlSerializer(typeof(ComponentsModel)); using (var reader = XmlReader.Create(fileStream, packageReaderSettings)) { ComponentsModel packageModel = null; try { Log.Info(" Чтение пакета разработки: запущено."); packageModel = (ComponentsModel)packageSerializer.Deserialize(reader); Log.Info(" Чтение пакета разработки: завершено."); } catch (Exception ex) { Log.Error(" Чтение пакета разработки: ошибка.", ex); throw; } var settings = GetXmlWriterSettings(); var namespaces = GetXmlSerializerNamespaces(); Parallel.ForEach <IPackageHandler>(this.packageHandlers, (handler) => handler.HandleExport(packageModel, settings, namespaces)); var packageInfoModel = PackageInfoModel.CreateFromComponentsModel(packageModel); this.SavePackageInfoModel(packageInfoModel); if (this.CommandLineOptions.AuthType == AuthenticationType.Windows) { Log.Warn(" Обработка удаления элементов разработки не будет выполнена, так как используется Windows-аутентификация."); return; } if (string.IsNullOrEmpty(this.CommandLineOptions.Server) || string.IsNullOrEmpty(this.CommandLineOptions.Database) || string.IsNullOrEmpty(this.CommandLineOptions.UserName)) { Log.Warn(" Обработка удаления элементов разработки не будет выполнена, так как не заданы параметры подключения к БД."); return; } var connectionParams = new ConnectionParams( this.CommandLineOptions.Server, this.CommandLineOptions.Database, this.CommandLineOptions.UserName, this.CommandLineOptions.Password); Parallel.ForEach <IPackageHandler>(this.packageHandlers, (handler) => handler.HandleDelete(connectionParams, settings, namespaces)); } } }
/// <summary> /// Загрузить информацию о пакете. /// </summary> /// <returns>Инфорация о пакете.</returns> private PackageInfoModel LoadPackageInfoModel() { Log.Info(" Загрузка информации о пакете: запущена"); PackageInfoModel result = null; var packageInfoSerializer = new XmlSerializer(typeof(PackageInfoModel)); using (var packageInfoStream = new FileStream(this.GetPackageInfoFileName(), FileMode.Open)) using (var reader = XmlReader.Create(packageInfoStream)) result = (PackageInfoModel)packageInfoSerializer.Deserialize(reader); Log.Info(" Загрузка информации о пакете: завершена"); return(result); }