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); }
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); }
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); }
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")); }