/// <summary> /// Inject a resource to a module definition /// </summary> /// <param name="mdef">Module definition</param> /// <param name="name">Resource name</param> /// <param name="resourceType">Resource type</param> /// <returns>resource</returns> public static Resource InjectResource(ModuleDefinition mdef, string name, ResourceType resourceType) { Resource result; switch (resourceType) { case ResourceType.AssemblyLinked: var anref = new AssemblyNameReference(name, new Version()); mdef.AssemblyReferences.Add(anref); result = new AssemblyLinkedResource(name, ManifestResourceAttributes.Public, anref); break; case ResourceType.Embedded: result = new EmbeddedResource(name, ManifestResourceAttributes.Public, new byte[] {}); break; case ResourceType.Linked: result = new LinkedResource(name, ManifestResourceAttributes.Public); break; default: throw new ArgumentException(); } mdef.Resources.Add(result); return(result); }
private void HandleItem(AssemblyLinkedResource alres) { _alres = alres; Attributes.Bind(alres); NameReference.Bind(alres == null ? null : alres.Assembly); }
public virtual void VisitAssemblyLinkedResource(AssemblyLinkedResource res) { }
public override void VisitAssemblyLinkedResource(AssemblyLinkedResource res) { // TODO. }
public override void VisitAssemblyLinkedResource(AssemblyLinkedResource alr) { m_writer.Write(".assembly extern "); m_writer.BaseWriter.WriteLine(Formater.Escape(alr.Assembly.Name)); }
private void FixAssemblyNameReference(AssemblyDefinition ad, StrongNameKeyPair sn) { Options.AppendTextInfo(String.Format("Fixing assembly reference: {0}\r\n", ad.Name.FullName)); foreach (string name in _changedAssemblies.Keys) { if (name == ad.Name.Name) { continue; } byte[] token = null; byte[] pubKey = null; if (sn != null) { pubKey = sn.PublicKey; token = TokenUtils.GetPublicKeyToken(pubKey, AssemblyHashAlgorithm.SHA1); } FixCustomAttributeReference(ad.CustomAttributes, name, token, pubKey); foreach (ModuleDefinition module in ad.Modules) { foreach (AssemblyNameReference anr in module.AssemblyReferences) { if (anr.Name == name) { SetAssemblyNamePublicKey(anr, sn); break; } } foreach (TypeDefinition td in module.AllTypes) { FixCustomAttributeReference(td.CustomAttributes, name, token, pubKey); foreach (PropertyDefinition pd in td.Properties) { FixCustomAttributeReference(pd.CustomAttributes, name, token, pubKey); } foreach (MethodDefinition method in td.Methods) { FixCustomAttributeReference(method.CustomAttributes, name, token, pubKey); } foreach (FieldDefinition fd in td.Fields) { FixCustomAttributeReference(fd.CustomAttributes, name, token, pubKey); } foreach (EventDefinition ed in td.Events) { FixCustomAttributeReference(ed.CustomAttributes, name, token, pubKey); } } foreach (Resource r in module.Resources) { if (r is EmbeddedResource) { EmbeddedResource er = (EmbeddedResource)r; FixByteReference(er.GetResourceData(), name, token); } else if (r is AssemblyLinkedResource) { AssemblyLinkedResource alr = (AssemblyLinkedResource)r; if (alr.Assembly.Name == name) { SetAssemblyNamePublicKey(alr.Assembly, sn); } } //else if (r is LinkedResource) //{ // LinkedResource lr = (LinkedResource)r; //} } }//end of each module } Application.DoEvents(); }
public override void VisitAssemblyLinkedResource(AssemblyLinkedResource res) { target.MainModule.Resources.Add(res); }