Estoy tratando de escribir IL que llama métodos en mscorlib, pero no puedo encontrar cómo obtener un ModuleDefinition
a mscorlib para realmente hacer referencia a los métodos &, y la documentación & google falta.Mono-Cecil: ¿Cómo puedo obtener un ModuleDefinition para mscorlib?
8
A
Respuesta
8
Obtención de un ModuleDefinition para mscorlib es bastante fácil. Aquí está una manera simple:
ModuleDefinition corlib = ModuleDefinition.ReadModule (typeof (object).Module.FullyQualifiedName);
Pero si se inyecta código que está llamando a métodos en el mscorlib, que no necesariamente tiene que cargar el módulo mismo. Por ejemplo:
MethodDefinition method = ...;
ILProcessor il = method.Body.GetILProcessor();
Instruction call_writeline = il.Create (
OpCodes.Call,
method.Module.Import (typeof (Console).GetMethod ("WriteLine", Type.EmptyTypes)));
Crea una instrucción para llamar a Console.WriteLine();
En cuanto a la documentación, lea la página importing en la wiki.
Cuestiones relacionadas
- 1. Obtener tipos en mscorlib 2.0.5.0 (también conocido como Silverlight mscorlib) a través de la reflexión?
- 2. Curiose a la referencia de mscorlib
- 3. Visual Studio mscorlib clases código fuente
- 4. ¿Puedo obtener un identificador para - fuente?
- 5. ¿Cómo puedo obtener registros DNS para un dominio en Python?
- 6. ¿Cómo puedo dividir dos enteros para obtener un doble?
- 7. ¿Cómo puedo obtener NSTextFinder para mostrar
- 8. ¿Cómo puedo obtener pg_dump para autenticarse correctamente?
- 9. ¿Cómo puedo obtener un accumArray estricto?
- 10. ¿Cómo puedo obtener corto [] de un ByteBuffer
- 11. ¿Cómo puedo obtener un método textDidChange (como para un UISearchBar) para un UITextField?
- 12. ¿Cómo puedo obtener un rastreo en Perl?
- 13. ¿Cómo puedo obtener un botón redondo?
- 14. ¿Cómo puedo obtener la definición de texto correcta de un tipo genérico utilizando la reflexión?
- 15. MSBUILD/csc: Manera más limpia de x64 mscorlib warning 1607
- 16. ¿Cómo puedo obtener un java.io.InputStream desde un java.lang.String?
- 17. Cómo obtener CodeMirror para seguir un TextArea
- 18. ¿Cómo puedo obtener un CGImageRef de un archivo?
- 19. ¿Cómo puedo obtener un directorio de un Uri
- 20. ¿Cómo puedo obtener un objeto HDC de un objeto CDC?
- 21. ¿Cómo puedo obtener fácilmente un TextReader desde un XDocument?
- 22. ¿Cómo puedo obtener el delegado?
- 23. ¿Cómo puedo obtener atributos personalizados?
- 24. Dónde puedo obtener un Ruby 1.8.6 para Centos OS
- 25. ¿Puedo obtener vbscript para mostrar un mensaje de error amistoso?
- 26. ¿Puedo obtener un TIMESTAMP único para cada registro en MySQL
- 27. ¿Cómo puedo obtener FxCop para suprimir advertencias para todo un tipo?
- 28. ¿Cómo puedo obtener Maven para generar un jnlp para mi proyecto?
- 29. ¿Cómo puedo obtener PHP mail() para que funcione? Necesita ayuda para configurar un MTA
- 30. ¿Cómo puedo obtener emacs para insertar llaves de cierre automáticamente?
¡Excelente, gracias! No me di cuenta de que también podías usar objetos de reflexión .NET. La documentación de Cecil es bastante difícil de conseguir:/ – thecoop
Tenga en cuenta que este código importará el método de la mscorlib para la versión .NET del ensamblaje en ejecución. Por lo tanto, si abre un ensamblado .NET 2.0 y lo modifica ejecutando el código anterior bajo .NET 4.0, el ensamblado modificado tendrá referencias tanto al 2.0 como al 4.0 mscorlib, que probablemente no es lo que se pretendía. –