private static void AssertDocumentsAreEquivalent(BamlDocument actualDocument, BamlDocument expectedBamlDocument) { Assert.That(actualDocument, new BamlDocumentMatcher(expectedBamlDocument)); // Verify that we can parse the generated document byte[] actualDocumentBytes = BamlUtils.ToResourceBytes(actualDocument); BamlDocument newDocument = BamlUtils.FromResourceBytes(actualDocumentBytes); Assert.That(newDocument, new BamlDocumentMatcher(expectedBamlDocument)); }
public static void RenameWpfResource(BuildAssembly assembly) { if (!assembly.NameChanged) { return; } var resource = assembly.GetWpfResource(); foreach (var satelliteResource in resource.SatelliteResources) { satelliteResource.Name = BamlUtils.GetWpfResourceName(assembly.NewName, satelliteResource.Assembly.Culture); } resource.Name = BamlUtils.GetWpfResourceName(assembly.NewName); }
private void Analyze() { bool hasWpfResource = false; string resourceName = BamlUtils.GetWpfResourceName(_assembly.Name); foreach (BuildResource resource in _assembly.Resources) { if (resource.Name != resourceName) { continue; } resource.IsWpf = true; hasWpfResource = true; bool hasBaml = false; var data = resource.GetData(); if (!ResourceUtils.IsResource(data)) { continue; } using (var reader = new ResourceReaderEx(data)) { while (reader.Read()) { if (reader.TypeCode != ResourceTypeCode.Stream && reader.TypeCode != ResourceTypeCode.ByteArray) { continue; } if (0 != string.Compare(Path.GetExtension(reader.Name), BamlImage.FileExtension, true)) { continue; } byte[] resourceData = reader.Data; var resourceDataStream = new MemoryStream(resourceData); resourceDataStream.Position += 4; var bamlImage = BamlImage.Load(resourceDataStream); if (bamlImage == null) { continue; } Process(bamlImage); hasBaml = true; } } if (hasBaml) { resource.HasWpfBaml = true; } } if (hasWpfResource) { _assembly.HasWpfResource = true; } }