Пример #1
0
        void RegenerateEmbeddedResource(ModuleDef module)
        {
            TreeNode.EnsureChildrenLoaded();
            var outStream = new MemoryStream();
            var resources = new ResourceElementSet();

            foreach (ResourceElementNode child in TreeNode.DataChildren)
            {
                resources.Add(child.ResourceElement);
            }
            ResourceWriter.Write(module, outStream, resources);
            Resource = new EmbeddedResource(Resource.Name, outStream.ToArray(), Resource.Attributes);
        }
Пример #2
0
        void RegenerateEmbeddedResource(ModuleDef module)
        {
            EnsureChildrenFiltered();
            var outStream = new MemoryStream();
            var resources = new ResourceElementSet();

            foreach (ResourceElementTreeNode child in Children)
            {
                resources.Add(child.ResourceElement);
            }
            ResourceWriter.Write(module, outStream, resources);
            this.r = new EmbeddedResource(r.Name, outStream.ToArray(), r.Attributes);
        }
Пример #3
0
        public byte[] Convert()
        {
            var resources = new ResourceElementSet();

            foreach (var info in infos)
            {
                resources.Add(Convert(info));
            }

            var memStream = new MemoryStream();

            ResourceWriter.Write(module, memStream, resources);
            return(memStream.ToArray());
        }
        void RegenerateEmbeddedResource(ModuleDef module)
        {
            TreeNode.EnsureChildrenLoaded();
            var outStream = new MemoryStream();
            var resources = new ResourceElementSet();

            foreach (DocumentTreeNodeData child in TreeNode.DataChildren)
            {
                var resourceElement = ResourceElementNode.GetResourceElement(child);
                if (resourceElement is null)
                {
                    throw new InvalidOperationException();
                }
                resources.Add(resourceElement);
            }

            ResourceWriter.Write(module, outStream, resources);
            Resource = new EmbeddedResource(Resource.Name, outStream.ToArray(), Resource.Attributes);
        }
Пример #5
0
        public static void Build(string fullPath, string outputPath)
        {
            var mod = new ModuleDefUser(ModuleName, null, ModuleDefMD.Load(typeof(void).Module).Assembly.ToAssemblyRef())
            {
                Kind = ModuleKind.Dll
            };

            var ass = new AssemblyDefUser(AssemblyName, Version.Parse("1.0.0.0"));

            ass.Modules.Add(mod);

            //get resourceset
            var set = new ResourceElementSet();

            foreach (ResourceElement re in FileFormatHelper.GetResourceElements(fullPath))
            {
                set.Add(re);
            }

            //write set to byte[] and add to module resources
            using (var ms = new MemoryStream()) {
                ResourceWriter.Write(mod, ms, set);
                mod.Resources.Add(new EmbeddedResource(Resources, ms.ToArray(), ManifestResourceAttributes.Private));
            }

            //create store type
            TypeDef store = new TypeDefUser(Namespace, ResourceStore, mod.CorLibTypes.Object.TypeDefOrRef)
            {
                Attributes = TypeAttributes.Public | TypeAttributes.BeforeFieldInit
            };

            //add the type to the module
            mod.Types.Add(store);

            //add code
            BuildStore(mod, ref store);

            //write module
            mod.Write(Path.Combine(outputPath, "osu!ui-rebuilt.dll"));
        }