我有 ac# 程序集,我通过 COM 从 Delphi(win32 本机)应用程序中调用它。
这适用于我测试过的所有机器,除了一台。
问题是 Delphi 应用程序在尝试创建 COM 对象时得到“类未注册”。
现在,当我查看注册表时HKEY_CLASSES_ROOT\DelphiToCSharp\CLSID,那里列出的 GUID 与 AssemblyInfo.cs 中的程序集 Guid 不同。它应该是相同的 - 在安装它的所有其他计算机上都是相同的。
我试过regasm /unregister delphitocsharp.dll了,这会删除注册表项。然后,如果我这样做regasm delphitocsharp.dll,注册表项会返回,但 GUID 与以前相同(即错误),并且 Delphi 仍然得到“类未注册”。
工作机器上的 DelphiToCSharp.dll 与非工作机器上的版本相同(使用 md5 验证)。
我能想到的只是之前注册了旧版本的 dll,并且仍然存在该文件的一些残留物,这让 regasm 感到困惑。
我该如何解决或至少进一步诊断此问题?