Tôi có một ứng dụng được phát triển trong Visual Studio 2005 mà tôi đang triển khai bằng cách sử dụng ClickOnce. Giải pháp của tôi chứa hai dự án - một lớp giao diện người dùng được mã hóa bằng VB và một thư viện lớp được mã hóa bằng C#. Thư viện lớp C# của tôi có một số mã sử dụng các hội đồng Interop của Outlook và Excel (Microsoft.Office.Interop.Outlook và Microsoft.Office.Interop.Excel, cả hai phiên bản 11). Đây là câu hỏi của tôi.Microsoft Office Interop Tham chiếu lắp ráp
- Mặc dù tôi không tìm thấy điều này được cho là tuyệt đối, hiểu biết của tôi là bạn PHẢI có phiên bản thích hợp của ứng dụng Office (Outlook/Excel) để cài đặt ứng dụng sử dụng hội đồng Interop . Điều này có đúng không?
Nếu (1. = Yes) Sau đó
Làm thế nào bạn sẽ xử lý các tình huống trong đó ứng dụng của bạn sử dụng các hội đồng Interop cho chỉ có một vài tính năng sẽ được sử dụng bởi chỉ có một vài lựa chọn của tổng số cơ sở người dùng? Tại sao tôi phải yêu cầu mọi người dùng ứng dụng của tôi cài đặt Microsoft Office nếu chỉ một số người dùng sẽ cần phải sử dụng các tính năng đó? Các hội đồng Interop này chỉ là các tệp .dll, vì vậy điều gì làm cho chúng khác biệt với những người khác mà bạn không thể xuất bản tệp với dự án của mình và thỏa mãn tham chiếu bất kể phần mềm nào được cài đặt tại máy khách? (Rõ ràng tôi có một sự hiểu biết kém về GAC và nó ảnh hưởng đến hành vi của Visual Studio.) Tôi sẽ vui lòng viết mã của riêng tôi để kiểm tra sự tồn tại của phần mềm Office cần thiết cho một số tính năng sử dụng chúng. Không văn phòng, không có quyền truy cập vào tính năng ...
khác
Nếu hiểu biết của tôi về vấn đề này là không chính xác, sau đó làm thế nào để tôi thiết lập tài liệu tham khảo của tôi và các thiết lập ClickOnce để người dùng không gặp phải các lỗi sau khi cố gắng cài đặt?
"Không thể cài đặt hoặc chạy các ứng dụng. Ứng dụng này yêu cầu văn phòng lắp ráp Version 11.0.0.0 được cài đặt trong Global Assembly Cache (GAC) đầu tiên.
Hãy liên hệ với quản trị hệ thống của bạn."
- Tôi đã thử đặt tham chiếu Interop Thuộc tính CopyLocal thành True và False.
- Trong danh sách Tệp ứng dụng ClickOnce của tôi, tôi đã thử đặt các cụm này thành Bao gồm, Loại trừ và Điều kiện tiên quyết.
- Trong nghiên cứu của tôi, tôi đã thấy một số người có các tham chiếu này trỏ tới * C: \ WINDOWS \ assembly \ GAC *, điểm của tôi tới * C: \ Program Files \ Microsoft Visual Studio 9.0 \ Công cụ Visual Studio cho Office \ PIA \ Office11 * nhưng tôi không tìm thấy cách thay đổi đường dẫn tham chiếu. Theo số http://msdn.microsoft.com/en-us/library/ez524kew(VS.80).aspx, bạn KHÔNG thể thêm tài liệu tham khảo từ GAC, vậy người khác quản lý tài liệu như thế nào?
- Tôi đã thử sao chép các tham chiếu từ * C: \ Program Files \ Microsoft Visual Studio 9.0 \ Visual Studio Công cụ cho Office \ PIA \ Office11 * vào thư mục dự án của tôi và tham chiếu chúng ở đó.
End Nếu
Tôi cho rằng điều chính tôi cần phải biết là làm thế nào/nếu tôi có thể bao gồm các hội đồng trong tài liệu của tôi và đáp ứng hoặc vượt qua các yêu cầu GAC.
Nếu có thể, hãy cố gắng trả lời các câu hỏi cụ thể của tôi càng trực tiếp càng tốt. Trong khi các bài báo hữu ích, tôi đã đọc rất nhiều bài báo và đã thử A LOT các giải pháp được đề xuất và không tìm thấy thành công nào. Hãy nhớ rằng sự thiếu hiểu biết của tôi về hậu cần của việc này hoạt động như thế nào để bắt đầu.
Tha thứ cho tôi vì sự thiếu hiểu biết của tôi và cảm ơn bạn vì bất kỳ trợ giúp nào bạn có thể cung cấp. Nó được nhiều đánh giá cao!
Cảm ơn bạn đã phản hồi. Cho đến nay tôi chưa có vấn đề xung đột phiên bản - người dùng có cả năm 2003 và 2007 đã có thể sử dụng các tính năng này tốt. Tôi đoán một câu hỏi đơn giản hơn để thực sự nhắm đến những gì tôi đang tự hỏi, tôi có thể cài đặt ứng dụng của mình cho người dùng KHÔNG CÓ BẤT CỨ phiên bản Office, cho phép họ sử dụng các tính năng không tương thích của ứng dụng của tôi không? Tôi hiểu rằng họ phải có Outlook/Excel để sử dụng các tính năng dựa trên Interop của tôi, nhưng hầu hết ứng dụng của tôi không liên quan gì đến Office. –
Tôi muốn nghĩ rằng một ví dụ về mã Interop sẽ không giới hạn hoàn toàn ứng dụng của bạn cho những người đã cài đặt Office. –
Một điều cần thử là sử dụng Tải xuống theo yêu cầu (http://msdn.microsoft.com/en-us/library/ak58kz04(VS.80).aspx) - bạn sẽ có thể mã để trước khi gọi/tải xuống assembly có chứa các lớp interop Office của bạn, có một kiểm tra xem Office có được cài đặt hay không. Những gì tôi không biết là liệu ClickOnce có trì hoãn việc kiểm tra các phụ thuộc cho đến khi hội đồng Tải về theo yêu cầu thực sự được yêu cầu tải xuống hay không, hoặc nếu nó kiểm tra tất cả các phụ thuộc có thể ra khỏi cổng. –