Tôi đã có một hội đồng C# mà tôi gọi qua COM từ một ứng dụng Delphi (win32 bản địa).Tại sao regasm.exe đăng ký tổ hợp C# của tôi với GUID sai?
Tính năng này hoạt động trên tất cả các máy tôi đã thử nghiệm, ngoại trừ một máy.
Vấn đề là ứng dụng Delphi nhận được "Lớp không được đăng ký" khi cố gắng tạo đối tượng COM.
Bây giờ, khi tôi tìm trong sổ đăng ký theo HKEY_CLASSES_ROOT\DelphiToCSharp\CLSID
, GUID được liệt kê không giống với hướng dẫn lắp ráp trong AssemblyInfo.cs. Nó sẽ giống nhau - nó giống nhau trên tất cả các máy tính khác mà nó được cài đặt.
Tôi đã thử regasm /unregister delphitocsharp.dll
và điều đó sẽ xóa khóa đăng ký. Sau đó, nếu tôi làm regasm delphitocsharp.dll
, khóa đăng ký trả về, nhưng GUID giống như trước (ví dụ: sai) và Delphi vẫn nhận được "Lớp không được đăng ký".
DelphiToCSharp.dll trên máy đang hoạt động giống hệt nhau (được xác minh bằng md5) với phiên bản trên máy không hoạt động.
Tất cả những gì tôi có thể nghĩ là một phiên bản cũ của dll đã được đăng ký trước đó và vẫn tồn tại một số phần còn lại của tệp đó đang làm cho sự bối rối bối rối.
Làm cách nào để khắc phục hoặc ít nhất chẩn đoán thêm vấn đề này?
Không thể ở trong GAC, vì hội đồng của tôi chưa được ký. Mặc dù vậy, tôi sẽ tìm kiếm các bản sao khác của tệp. – Blorgbeard
Tải lắp ráp của .Net không tìm thấy dll trong nhiều thư mục như win32, do đó khó có thể xảy ra. –