2009-07-01 23 views
5

Tôi có Office 2007 trên máy tính dev của mình. Tôi có một ứng dụng nhỏ tôi đang xây dựng cho một máy chủ khách hàng với Office 2003 mà cần phải làm một số interop. Chương trình của tôi sẽ chạy như một nhiệm vụ theo lịch trình trong một quy trình hàng đêm.Văn phòng interop: phát triển với 2003 PIAs trên máy tính với Office 2007

Không có vấn đề gì tôi làm, tôi không thể tìm thấy phiên bản 11.0 của hội đồng truy cập truy cập để làm việc trên máy chủ.

Tôi đã cố tải xuống và cài đặt chúng một cách rõ ràng trên máy của mình. Tôi đã thử cài đặt các hội đồng interop 2007 trên máy chủ (một cài đặt Office 2007 đầy đủ nằm ngoài câu hỏi). Tôi đã thử một số tài liệu tham khảo COM khác nhau. Tôi đã thử tìm đối tượng COM trên máy chủ để tham chiếu trong dự án studio trực quan. Và tôi đã thử quá nhiều thứ nhỏ khác để liệt kê tất cả ở đây.

Điều gì đang xảy ra ở đây? Làm thế nào tôi có thể làm việc này?

+0

Tôi giả sử bạn đã kiểm tra C: \ WINDOWS \ assembly \ GAC \ Microsoft.Office.Interop.Access? –

+0

Vâng, tôi đã làm. –

+0

Tôi không biết về môi trường bạn đang lập trình, nhưng bạn có phải sử dụng sự ràng buộc sớm không? Không có hình thức ràng buộc trễ mà bạn có thể sử dụng mà sẽ là phiên bản Office độc ​​lập? –

Trả lời

1

Tôi đã tìm thấy cách duy nhất để thực hiện việc này, ngay cả với cả hai phiên bản được cài đặt song song, trong .Net v2 trở lên, là thêm tham chiếu đến PIA (thay vì lib COM). Frameork v1.1 thực sự sẽ liên kết với phiên bản chính xác, nếu chúng có mặt cạnh nhau.

+0

Tôi không thể tìm thấy tệp PIA ở bất kỳ đâu. –

+0

Được rồi: Tôi là một thằng ngốc.Tôi không thể tìm thấy tệp trong GAC của máy chủ, nhưng phiên bản 2007 (và chỉ phiên bản 2007, mặc dù tôi đã cài đặt rõ ràng các PIA 2003) nằm trong GAC cục bộ của tôi. Thật không may, điều này vẫn không hoạt động trên máy chủ và nó chỉ treo khi tôi cố gắng để mở tập tin Access. Nhưng đó là một câu hỏi hoàn toàn khác –

+0

Tôi phải thừa nhận, để có được PIAs ở nơi đầu tiên, chúng tôi trích xuất chúng từ GAC (PIA Office XP đến trong một ZIP đẹp mà làm cho họ dễ dàng hơn để có được giữ). Không chắc chắn về các tác động cấp phép, nhưng bạn có thể sát cánh với PIA không? (rõ ràng sẽ vẫn cần truy cập trên đó) –

0

Bạn không thể sao chép PIA từ máy chủ sang máy của mình (vào thư mục cục bộ) và sau đó thêm tham chiếu vào bản sao đó?

Nếu bạn muốn đi theo một cách khác, bạn có thể tránh sử dụng PIA và sử dụng ComImport để thay thế. Andrew Whitechapel có các chi tiết trong blog của mình:

Add-ins for Multiple Office Versions without PIAs

Cập nhật (từ bình luận): Nếu bạn không thể xác định vị trí truy cập PIA trên máy chủ bạn có thể thử như sau:

  • Tải về Office 2003 PIA thiết lập từ đây: Office 2003 Update: Redistributable Primary Interop Assemblies

  • Giải nén tập tin thực thi tự giải nén trên dòng lệnh (/? sẽ liệt kê các tùy chọn):

    >O2003PIA.exe /C /T:C:\PIA 
    
  • Chạy MSI chiết xuất với đầy đủ khai thác gỗ được kích hoạt:

    >msiexec -i O2003PIA.msi /l*vx log.txt 
    

    và kiểm tra nhật ký cho lắp ráp Truy cập interop và gợi ý thêm cho dù bất cứ điều gì đã xảy ra với quá trình cài đặt. Cách khác, bạn có thể sử dụng tiện ích unpacker của MSI để lắp ráp.

+0

Không, tệp PIA không tồn tại trên máy chủ ở bất kỳ đâu, ngay cả sau khi tôi đã tải xuống và cài đặt chúng theo cách thủ công. –

+0

BTW: giải pháp thú vị trong liên kết, nhưng nếu tôi sử dụng một cái gì đó như thế tôi sẽ được cười ra khỏi phòng tại thời điểm xem xét mã. Tôi có thể nhìn thấy nó ngay bây giờ: "WTF là tất cả những điều này?" –

+0

Thật vậy. Mong VS 2010 sẽ xử lý tất cả các ComImports cho bạn một cách độc đáo ... –

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