2011-07-11 25 views
8

Tôi đã tạo đối tượng COM với C# ngày hôm qua, dẫn đến ba tệp trong thư mục bin/release của dự án VS 2010 của tôi (comclass.dll, comclass.pdb và comclass.tlb). Bây giờ, khi tôi xây dựng giải pháp trong dự án, VS đăng ký lớp cho tôi tự động trên PC phát triển và tôi không gặp vấn đề gì khi truy cập đối tượng COM và các phương thức của nó từ, hãy nói, Powershell. Tuy nhiên, khi tôi sao chép ba tệp vào một máy khác và cố gắng đăng ký dll bằng regsvr32, nó cho tôi biết rằngĐăng ký một đối tượng COM được tạo với VS C# 2010

mô-đun "comclass.dll" đã được tải nhưng không tìm thấy máy chủ DllRegisterServer nhập.

Đảm bảo rằng "comclass.dll" là tệp DLL hoặc OCX hợp lệ và sau đó thử lại.

Sử dụng regasm với thông số /tlb trên tệp .tlb cho tôi một thông báo tương tự. Vì vậy, tôi hơi bối rối. Bất cứ ai cũng biết làm thế nào tôi nên tiến hành từ đây?

Trả lời

11

Chỉ cần sao chép dll (và tùy chọn pdb nếu bạn muốn đường dẫn tệp và số dòng trong ngăn xếp ngăn xếp của bạn). Đây là cách bạn đăng ký nó, và TLB được tạo ra:

"%WINDIR%\Microsoft.NET\Framework\v2.0.50727\regasm.exe" comclass.dll /tlb /nologo /codebase 

Kể từ Visual Studio đăng ký thành công nó, mà chỉ có thể làm việc. Nếu không, bạn cũng có thể mở bảng Output trong khi thực hiện Rebuild và xem cách Visual Studio gọi regasm.

+0

Cảm ơn Joe. C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727> regasm c: \ comtest \ comclass.dll/tlb/nologo/codebase Các loại đăng ký thành công Assembly được xuất sang 'c: \ comtest \ comclass.tlb', và thư viện loại đã được đăng ký thành công. Chính xác những gì tôi muốn. Sẽ đưa điều này vào blog của tôi. Cảm ơn một lần nữa. – deutschZuid

Các vấn đề liên quan