引用程序集 returns None 作为 ProcessorArchitecture

Referenced assemblies returns None as ProcessorArchitecture

我有一个 Web 项目,它是我使用 Assembly.ReflectionOnlyLoadFrom(filename) 加载的 DLL。然后我打电话给 assembly.GetReferencedAssemblies();.

返回的 AssemblyName 都将 ProcessorArchitecture 设置为 None

主要 DLL 的 ProcessorArchitecture 是 x64,而 AnyCPU 和 x64 之间的引用不同。

知道为什么我无法为这些引用程序集获取 ProcessorArchitecture 吗?

更新: 我刚看到这个 link 声明:

Beginning with the .NET Framework 4, this property always returns ProcessorArchitecture.None for reference assemblies.

是否有其他方式获取此信息?

我遇到了这个问题;我最终使用的代码如下所示:

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;
}