Có thể bắt buộc lắp ráp interop để tham khảo bản sao cục bộ của DLL COM liên kết của nó không?Lực lượng .NET interop sử dụng COM DLL cục bộ
Đây là kịch bản:
Tôi có một ứng dụng .NET tham chiếu đến một Interop Assembly (Interop.OTAClient.dll), đó là interop cho một COM DLL (OTAClient.dll, đó là API tự động hóa cho Trung tâm Chất lượng HP). Tôi không phải là rất am hiểu về COM, nhưng như tôi hiểu nó lắp ráp interop nhìn lên các lớp học COM thông qua tài liệu tham khảo GUID trong registry, thay vì trỏ đến một tập tin cụ thể.
Vấn đề tôi có là bản sao OTAClient.dll mà các khóa đăng ký trỏ đến bị ghi đè bởi các phiên bản khác nhau tùy thuộc vào phiên bản QC nào tôi vừa đăng nhập vào trình duyệt và các phiên bản khác nhau của các tệp DLL này không tương thích với nhau. Ứng dụng .NET sẽ chỉ kết nối với một phiên bản QC cụ thể, vì vậy tôi không thể có COM DLL thay đổi theo cách này.
Bất kỳ đề xuất nào sẽ được đánh giá cao, vì hành vi này thực sự gây khó chịu. Tôi đã nhìn thấy câu hỏi khác về các vấn đề interop COM, nhưng tất cả họ dường như về buộc một phiên bản địa phương của interop DLL được sử dụng thay vì một trong GAC, chứ không phải là kịch bản này liên quan đến COM DLL thực tế.
Xin chào Pavel. Cảm ơn bạn đã liên kết - Tôi đã làm theo ví dụ và VS đã tạo mục kê khai cho OTAClient như mong đợi.Tuy nhiên, tôi vẫn thấy các triệu chứng tương tự nếu phiên bản mới hơn của DLL đã được sử dụng cuối cùng bởi ứng dụng trình duyệt cũng sử dụng DLL đó. Bạn có nghĩ rằng OTAClient có các phụ thuộc riêng của nó cũng bị ghi đè bằng các phiên bản mới hơn không? Nếu có, có đề xuất nào về cách tôi có thể đối phó với điều đó không? – Xiaofu
Có thể nếu các phụ thuộc đó là các thành phần COM. Nếu vậy, bạn nên xử lý chúng theo cách tương tự (để bạn kết thúc với một bộ thư viện tự cung tự cấp). –