2011-03-03 11 views
7

¿Cómo recuperar el identificador de versión del módulo (MVID) de un ensamblado .NET utilizando la reflexión en C#?Recuperar MVID de un conjunto de C#?

+0

ver si esto ayuda - http://stackoverflow.com/questions/2940857/determine-whether-net-assemblies-were-build- de la misma fuente – Kumar

Respuesta

9

debe ser:

var myAssembly = Assembly.GetExecutingAssembly(); //or whatever 
var mvid = myAssembly.ManifestModule.ModuleVersionID; 

Puede haber otros módulos en una asamblea, pero el ManifestModule sería el que "identifica" la asamblea misma.

0

He aquí una muestra que no utiliza la reflexión para cargar el ensamblado, sino que utiliza System.Reflection.Metadata:

using (var stream = File.OpenRead(filePath)) 
{ 
    PEReader reader = new PEReader(stream); 
    var metadataReader = reader.GetMetadataReader(); 
    var mvidHandle = metadataReader.GetModuleDefinition().Mvid; 
    var mvid = metadataReader.GetGuid(mvidHandle); 
} 

Y aquí es una muestra de la utilización de Mono.Cecil:

var module = Mono.Cecil.ModuleDefinition.ReadModule(filePath); 
var mvid = module.Mvid; 

Y aquí es un ejemplo de una código independiente para leer el MVID sin ninguna dependencia. Es una versión reducida de Mono.Cecil en un solo archivo: https://github.com/KirillOsenkov/MetadataTools/blob/master/PEFile/ImageReader.cs

Cuestiones relacionadas