예제 #1
0
        void PatchResources()
        {
            ManifestResourceTable resourceTable = (ManifestResourceTable)stripped_tables [ManifestResourceTable.RId];

            if (resourceTable == null)
            {
                return;
            }

            for (int i = 0; i < resourceTable.Rows.Count; i++)
            {
                ManifestResourceRow resourceRow = resourceTable [i];

                if (resourceRow.Implementation.RID != 0)
                {
                    continue;
                }

                foreach (Resource resource in assembly.MainModule.Resources)
                {
                    EmbeddedResource er = resource as EmbeddedResource;
                    if (er == null)
                    {
                        continue;
                    }

                    if (resource.Name != original.MetadataRoot.Streams.StringsHeap [resourceRow.Name])
                    {
                        continue;
                    }

                    resourceRow.Offset = metadata_writer.AddResource(er.Data);
                }
            }
        }
예제 #2
0
 public override void VisitEmbeddedResource(EmbeddedResource res)
 {
     AddManifestResource(
         m_mdWriter.AddResource(res.Data),
         res.Name, res.Flags,
         new MetadataToken(TokenType.ManifestResource, 0));
 }