2016-04-29 9 views
2

Ich habe ein Webprojekt, das DLL geladen wird mit Assembly.ReflectionOnlyLoadFrom(filename). Ich rufe dann assembly.GetReferencedAssemblies(); an.Referenzierte Baugruppen gibt None zurück als ProcessorArchitecture

Die zurückgegebenen AssemblyName s alle haben die ProcessorArchitecture auf None festgelegt.

Die ProcessorArchitecture der primären DLL ist x64, während die Referenzen zwischen AnyCPU und x64 variieren.

Irgendeine Idee, warum ich nicht in der Lage bin, die ProcessorArchitecture für diese Referenzen Assemblies abzuholen?

UPDATE: Ich sah nur diese link besagt:

mit dem .NET Framework 4 Beginning, diese Eigenschaft immer wieder ProcessorArchitecture.None Referenz Baugruppen.

Gibt es einen anderen Weg, um zu diesen Informationen zu gelangen?

+1

Haben Sie versucht, [Module.GetPEKind()] (https://msdn.microsoft.com/en-us/library/system.reflection. module.getpekind (v = vs.110) .aspx)? – elchido

Antwort

1

Ich hatte dieses Problem; der Code, den ich war so etwas wie das folgende am Ende mit:

static void Main() { 
    // Load assembly. This can either be by name, or by calling GetReferencedAssemblies(). 
    Assembly referencedAssembly = Assembly.Load("AssemblyName"); 

    // Get the PEKind for the assembly, and handle appropriately 
    PortableExecutableKinds referenceKind = GetPEKinds(referencedAssembly); 
    if((referenceKind & PortableExecutableKinds.Required32Bit) > 0) { 
     // is 32 bit assembly 
    } 
    else if((referenceKind & PortableExecutableKinds.PE32Plus) > 0) { 
     // is 64 bit assembly 
    } 
    else if((referenceKind & PortableExecutableKinds.ILOnly) > 0) { 
     // is AnyCpu 
    } 
} 

static PortableExecutableKinds GetPEKinds(Assembly assembly) { 
    PortableExecutableKinds peKinds; 
    ImageFileMachine imageFileMachine; 
    assembly.GetModules()[0].GetPEKind(out peKinds, out imageFileMachine); 
    return peKinds; 
} 
Verwandte Themen