Có thể sử dụng COM đăng ký miễn phí với Dotnet interop và C# không? Nếu vậy làm thế nào để thêm một tham chiếu đến đối tượng COM trong dự án C#?Reg miễn phí COM interop với C#, có thể?
Tôi có một tệp dll máy chủ ATL COM miễn phí với một tệp kê khai được nhúng và hai trình kiểm tra, một cpp khác C#. Các khách hàng cpp tham chiếu một cách chính xác các đối tượng COM sử dụng một tuyên bố nhập khẩu và một trong hai
#pragma comment(linker, "\"/manifestdependency:type='win32' name='TestComSvr2' version='1.0.0.0'\"")
hoặc thiết lập để 'bổ sung Manifest Dependencies "type = 'win32' name = 'TestComSvr1' phiên bản = '1.0.0.0'" dưới Linker -> Tùy chọn Tệp kê khai, sau đó trình khách cpp sẽ chạy chính xác miễn là thành phần COM nằm trong cùng một thư mục.
Máy khách C# dù không chịu chơi.
Cố gắng thêm một tài liệu tham khảo tập tin vào một trong hai dll thành phần COM không đăng ký hoặc kết quả TLB không đăng ký trong các lỗi:
"A reference to 'blah blah' could not be added. Please make sure that the file is accessible, and that it is a valid assembly or COM component".
Đăng ký chỉ là thư viện kiểu với 'regtlib TestComSvr' và sau đó tạo ra một tập tin hoặc COM tài liệu tham khảo để có kết quả trong C# dự án thất bại trong việc xây dựng với:
"Error loading type library/Dll. (Exception from HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY))".
Đăng ký thành phần COM và tạo ra một tài liệu tham khảo bình thường trong C# dự án, thiết lập các tham chiếu đến Isolated, xây dựng các dự án # c sau đó unregistering thành phần và chạy C# dự án dẫn đến ngoại lệ này:
Retrieving the COM class factory for component with CLSID {B1D0A80F-0050-4856-BACD-87D664E58CBE} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
Lưu ý: Ngay cả nếu điều này làm việc nó sẽ không phải là một trường hợp rất hữu ích dù sao, kể từ cuối cùng nó vẫn yêu cầu đăng ký của các thành phần, tôi chỉ thử nghiệm nó cho triệt để.
Cho đến nay, cách duy nhất tôi có thể tham chiếu đối tượng COM từ C# là bằng cách đăng ký đối tượng COM, tất nhiên hoàn toàn đánh bại điểm kể từ đó không hoàn toàn miễn phí.
Bất kỳ ai có ý tưởng nào?
(Đây là trên WinXP với VS2010 sp1).
Tự hỏi liệu bạn có cần tạo tệp kê khai cho exe studio trực quan không? tìm thấy liên kết này, nhưng không chắc chắn nếu đó là tất cả những hữu ích http://msdn.microsoft.com/en-us/library/ms973913.aspx – PeskyGnat
Ngoài ra, những gì nếu bạn tạo một dll interop với tlbimp và tham khảo đó? tức là với 'tlbimp'? –
PeskyGnat