是否必须为每个位版本编译和注册一个 COM DLL?

Does a COM DLL have to be compiled and registered for each bit edition?

是否可以将 COM DLL 编译为 AnyCPU 并与 32 位和 64 位应用程序一起使用?

昨天我开始编写C# COM DLL,以便我的MFC 项目可以使用该DLL。 DLL 本身用于使用 GMail API.

最初我将 DLL 编译为 x86x64 并且我的两个可执行文件都 运行 没问题。

然后我决定将 DLL 更改为编译为 AnyCPU 现在当我的程序运行时它说 Class 未注册.

那么每个Bit版本都要编译DLL吗?

不,你可以保留.DLL编译为"Any CPU"(事实上我当然会尽可能推荐它),但你必须在每个版本的注册表中注册它,例如使用regasm:

64 位:

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe ClassLibrary1.dll /codebase /tlb

32 位:

c:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe ClassLibrary1.dll /codebase /tlb