2010-06-07 33 views
5

Tôi đang cố thêm thư viện đối tượng ActiveX Microsoft Excel 11.0 vào dự án .NET của tôi. Nó hoạt động tốt trên máy tính của tôi, nhưng khi tôi kiểm tra mã của tôi, nó không hoạt động trên đồng nghiệp của tôi. Cố định nó trên của mình và nó đã phá vỡ của tôi. Khi được thêm vào, các không gian tên khác nhau giữa các máy của chúng ta.Excel COM Interop - tlbimp vs primary WrapperTool

Nó chỉ ra sự khác biệt là khi tôi thêm tham chiếu nó sử dụng tlbimp làm WrapperTool, nhưng đối với nó nó làm cho nó một tham chiếu primary.

Làm cách nào để nó hoạt động cho cả hai chúng tôi theo cùng một cách? Máy của anh ấy không giống như một interop được nhập khẩu tlbimp và tôi không thích chế độ tương tác primary.

Trả lời

4

chúng tôi gặp sự cố tương tự và tùy chọn "tlbimp" hoạt động trên tất cả các máy tính.

Sự hiểu biết của tôi (không hoàn hảo) là: .NET sử dụng các gói bao bọc để truy cập các thành phần COM. Nếu bạn chỉ định "chính", bạn sử dụng "hội đồng interop chính hiện có, được tạo trước". Theo http://msdn.microsoft.com/en-us/library/hfac4fky.aspx, "hội đồng interop chính được cung cấp bởi cùng một nhà xuất bản như thư viện kiểu họ mô tả". Nếu sử dụng "chính" không hoạt động cho bạn, hội đồng này không tồn tại trên máy tính của bạn.

Giá trị mặc định là "tlbimp" và (từ những gì tôi thu thập được) thường hoạt động. Nếu nó không hoạt động trên máy của đồng nghiệp, thông báo lỗi sẽ hữu ích. Lỗi đã được báo cáo cho VS2003 (tìm kiếm bài viết KB "Bạn nhận được thông báo lỗi khi bạn thêm tham chiếu đến đối tượng COM trong Visual Studio .NET sau khi bạn cài đặt Windows XP Gói Dịch vụ 2"), nhưng tôi không biết nếu điều này áp dụng cho các phiên bản hiện tại của VS.

Nếu bạn không thể thực hiện công việc này, tôi khuyên bạn có thể đọc thêm về "Hội đồng Interop chính" và cố gắng tìm nơi lắp ráp interop chính cho Excel nằm trên máy của đồng nghiệp, sau đó sao chép nó vào máy tất cả các nhà phát triển.

Hy vọng điều này sẽ hữu ích.

+0

Cảm ơn bạn. Điều này đã giúp tôi. –

+0

Tôi đã xóa tham chiếu COM rồi thêm lại. Khi tôi thêm nó, thuộc tính WrapperType thay đổi thành giá trị bạn đã đề cập. Sau đó, mọi thứ đã hoạt động. –

0

tôi đã có thể giải quyết việc này bằng cách chỉnh sửa registy:

HKEY_CLASSES_ROOT \ TypeLib {2DF8D04C-5BFA-101B-BDE5-00AA0044DE52} \ 2.4

này tồn tại, và tôi đã thêm các chuỗi giá trị sau:

Tên: PrimaryInteropAssemblyName
Value: văn phòng, Version = 12.0.0.0, văn hóa = trung tính, PublicKeyToken = 71e9bce111e9429c

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