2010-06-21 8 views
26

Tôi đã tạo một assembly .NET cho COM interop và nó hoạt động tốt trên máy phát triển của tôi. Tôi hiện đang cố gắng tìm ra cách triển khai DLL cho một máy tính mục tiêu bằng cách sử dụng "Dự án thiết lập" của Visual Studio. Làm cách nào tôi có thể sử dụng dự án thiết lập Studio VIsual để thực hiện những việc sau:Sử dụng Visual Studio Setup Project để tự động đăng ký và GAC một COM Interop DLL

  • Đăng ký lắp ráp (hiện đang sử dụng regasm).
    • Hội đồng cần được đăng ký thành công và thư viện loại (.tlb) cần được đăng ký thành công .
    • This answer đề nghị loại bỏ regasm có lợi cho mã tùy chỉnh. Tôi đây là một ý tưởng tốt? Nếu vậy, mã này được bao gồm trong dự án thiết lập như thế nào?
    • This answer đề xuất sử dụng lệnh /regfile của regasm và sau đó sử dụng công cụ nhập trên Cơ quan đăng ký trong Dự án thiết lập. Điều này có hiệu quả không?
  • Cài đặt assembly vào GAC (hiện đang sử dụng gacutil)
    • Tôi nhận thức được "toàn cầu hội cache Folder" trong "File System trên máy mục tiêu." Có điều gì đặc biệt tôi cần phải làm trong đó bao gồm cả lắp ráp trong dự án thiết lập không?

Bất kỳ lời khuyên hoặc quan tâm nào khác sẽ được đánh giá cao.

Trả lời

33

Gacutil.exe sẽ không khả dụng trên máy đích. Không phải là vấn đề, MSI có thể hoàn thành công việc. Nhấp chuột phải vào "Hệ thống tệp trên máy mục tiêu", Thêm, GAC. Nhấp chuột phải vào thư mục đã thêm, Thêm, Đầu ra dự án. Điều đó đảm bảo lắp ráp là gac-ed.

Nó cũng có thể đăng ký lắp ráp như Regasm.exe. Đặt thuộc tính Đăng ký của tham chiếu đầu ra của dự án thành vsdrpCOM.

+1

Thuộc tính đăng ký được đặt thành 'vsdrpCOM' sẽ tự động tạo và đăng ký tệp .tlb không? Nếu không, làm thế nào để tôi bao gồm .tlb trong dự án thiết lập (nó dường như không thích được chia sẻ trong thư mục GAC trong dự án thiết lập)? –

+0

Đó là một điểm tuyệt vời. Tôi đã quá quen với việc gõ 'regasm/tlb ... 'mà tôi cho rằng tôi sẽ cần nó, nhưng bạn mang đến một điểm tuyệt vời - máy khách sẽ không viết mã chống lại những hội đồng này. Cảm ơn rất nhiều. –

+0

Để trả lời câu hỏi của Ben trong bình luận của mình, sử dụng vsdrpCOM * sẽ * tự động tạo và đăng ký tệp .tlb. – Keith