У меня есть сборка c #, которую я вызываю через COM из приложения Delphi (родной win32).
Это работает на всех машинах, на которых я его тестировал, кроме одной.
Проблема в том, что приложение Delphi получает «Класс не зарегистрирован» при попытке создать COM-объект.
Теперь, когда я смотрю в реестре под HKEY_CLASSES_ROOT\DelphiToCSharp\CLSID
, указанный там GUID не совпадает с Guid сборки в AssemblyInfo.cs. Оно должно быть таким же - оно одинаково на всех других компьютерах, на которых оно установлено.
Я попытался regasm /unregister delphitocsharp.dll
, и это удаляет раздел реестра. Затем, если я сделаю regasm delphitocsharp.dll
, ключ реестра вернется, но GUID будет таким же, как и раньше (т.е. неправильно), и Delphi все равно получит «Класс не зарегистрирован».
DelphiToCSharp.dll на рабочей машине идентична (проверено с помощью md5) версии на нерабочей машине.
Все, о чем я могу думать, - это то, что старая версия библиотеки dll была зарегистрирована ранее, и до сих пор существует некоторый остаток этого файла, что приводит в замешательство регазм.
Как я могу исправить или, по крайней мере, дополнительно диагностировать эту проблему?