Example #1
0
        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);
        }
Example #3
0
        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;
            }
        }