public void FixChecksum(string filename = "model.xml") { using (var dac = new DacHacXml(_path)) { var originXml = dac.GetXml("Origin.xml"); var sourceXml = dac.GetStream(filename); var calculatedChecksum = BitConverter.ToString( (HashAlgorithm.Create(_checksumProvider) .ComputeHash(sourceXml))).Replace("-", ""); ; var reader = XmlReader.Create(new StringReader(originXml)); reader.MoveToContent(); while (reader.Read()) { if (reader.Name == "Checksum" && reader.GetAttribute("Uri") == string.Format("/{0}", filename)) { var oldChecksum = reader.ReadInnerXml(); if (oldChecksum == calculatedChecksum) return; originXml = originXml.Replace(oldChecksum, calculatedChecksum); dac.SetXml("Origin.xml", originXml); return; } } } }
public HeaderWriter(string dacpacPath, DacHacFactory factory, bool autoCommitEveryOperation = true) { _dacpacPath = dacpacPath; _autoCommitEveryOperation = autoCommitEveryOperation; _dac = factory.Build(_dacpacPath); _xml = _dac.GetXml("Model.xml"); }
public void Can_Write_Correct_Checksum() { var dacpac = new DacHacXml(".\\Test.dacpac"); var stream = dacpac.GetStream("Model.xml"); var checksum = HashAlgorithm.Create("System.Security.Cryptography.SHA256CryptoServiceProvider").ComputeHash(stream); dacpac.Close(); var writer = new ModelChecksumWriter(".\\Test.dacpac"); writer.FixChecksum(); //assert wtf?? }
public List <CustomData> GetCustomData() { var dac = new DacHacXml(_dacPacPath); var xml = dac.GetXml("Model.xml"); var reader = XmlReader.Create(new StringReader(xml)); reader.MoveToContent(); var data = new List <CustomData>(); CustomData currentCustomData = null; while (reader.Read()) { if (reader.Name == "CustomData" && reader.NodeType == XmlNodeType.Element) { var cat = reader.GetAttribute("Category"); var type = reader.GetAttribute("Type"); currentCustomData = new CustomData(cat, type); data.Add(currentCustomData); } if (reader.Name == "Metadata" && reader.NodeType == XmlNodeType.Element) { var name = reader.GetAttribute("Name"); var value = reader.GetAttribute("Value"); currentCustomData.AddMetadata(name, value); } if (reader.Name == "Header" && reader.NodeType == XmlNodeType.EndElement) { break; //gone too far } } dac.Close(); return(data); }
public void FixChecksum(string filename = "model.xml") { using (var dac = new DacHacXml(_path)) { var originXml = dac.GetXml("Origin.xml"); var sourceXml = dac.GetStream(filename); var calculatedChecksum = BitConverter.ToString( (HashAlgorithm.Create(_checksumProvider) .ComputeHash(sourceXml))).Replace("-", ""); ; var reader = XmlReader.Create(new StringReader(originXml)); reader.MoveToContent(); while (reader.Read()) { if (reader.Name == "Checksum" && reader.GetAttribute("Uri") == string.Format("/{0}", filename)) { var oldChecksum = reader.ReadInnerXml(); if (oldChecksum == calculatedChecksum) { return; } originXml = originXml.Replace(oldChecksum, calculatedChecksum); dac.SetXml("Origin.xml", originXml); return; } } } }
public List<CustomData> GetCustomData() { var dac = new DacHacXml(_dacPacPath); var xml = dac.GetXml("Model.xml"); var reader = XmlReader.Create(new StringReader(xml)); reader.MoveToContent(); var data = new List<CustomData>(); CustomData currentCustomData = null; while (reader.Read()) { if (reader.Name == "CustomData" && reader.NodeType == XmlNodeType.Element) { var cat = reader.GetAttribute("Category"); var type = reader.GetAttribute("Type"); currentCustomData = new CustomData(cat, type); data.Add(currentCustomData); } if (reader.Name == "Metadata" && reader.NodeType == XmlNodeType.Element) { var name = reader.GetAttribute("Name"); var value = reader.GetAttribute("Value"); currentCustomData.AddMetadata(name, value); } if (reader.Name == "Header" && reader.NodeType == XmlNodeType.EndElement) { break; //gone too far } } dac.Close(); return data; }