运行时C#知道是否正在使用32位或64位版本的COM接口

Jas*_*son 3 c# 64-bit x86 interop regsvr32

我想构建一个DLL类库使用COM Interop,使用C#,目标ANY CPU,并将其注册为32位和64位接口.

我希望能够在运行时显示使用的接口 - 如果我使用的是32位版本或64位版本.

有任何想法吗?

Dan*_*ker 8

为了使进程加载32位DLL,进程必须是32位.对于64位也一样.因此,要找出已加载的内容,假设它已经有效,您只需要找出CLR的位数:

if (System.IntPtr.Size == 8)
{
    // 64-bit
}
else
{
    // 32-bit
}
Run Code Online (Sandbox Code Playgroud)

PS.讨论是否需要检查16的大小,请参阅我对这个问题的回答.