2010-09-03 30 views
17

Tôi đang cố gắng mở rộng một ứng dụng nhất định. Tôi đang sử dụng một DLL đi kèm với ứng dụng đó để mở rộng chức năng của nó. Tôi đang sử dụng visual studio 2010 express edition. Tôi đã thêm một tham chiếu đến thư viện dll. Trong các thuộc tính refrence, tùy chọn "Copy local" bị vô hiệu hóa (màu xám) tại sao vậy? Tôi muốn studio trực quan để sao chép các dll vào thư mục phát hành của tôi. Nếu điều này không thể được thực hiện là có cách anothter để bó dll?visual studio sao chép dll refrences vào thư mục đầu ra

Trả lời

25

bình luận của bạn để Hans câu trả lời cho thấy đây là một hội đồng COM và rằng bạn đang sử dụng Visual Studio 2010.

này có nghĩa là tài liệu tham khảo lắp ráp được khả năng bổ sung với "Nhúng Interop loại" Thiết thiết lập là true. Điều này có tác dụng liên kết các hội đồng COM vào nhị phân của bạn loại bỏ sự cần thiết phải triển khai nó hoàn toàn. Liên kết sau có một lời giải thích chi tiết hơn

Nếu bạn muốn triển khai nó mặc dù sau đó sẽ cần phải làm như sau

  • Bấm trên tham chiếu trong tab tài liệu tham khảo
  • Nhấn F4 để hiển thị lưới thuộc tính
  • Đặt "Nhúng loại Interop" thành False (điều này sẽ không hiển thị C) Sao chép địa phương)
  • Set "Sao chép địa phương" true
2

Tùy thuộc vào loại tệp DLL nào. Nếu nó là một máy chủ COM sau đó sao chép địa phương là tắt khi bạn có một PIA đăng ký cho rằng máy chủ COM. Nếu nó là một assembly .NET thông thường thì nó sẽ bị tắt khi nó được đăng ký trong GAC.

Khắc phục vấn đề bằng cách tương ứng, sử dụng regasm/u để hủy đăng ký PIA hoặc gacutil/u để xóa nó khỏi GAC. Do lưu ý rằng bạn có thể không muốn làm điều này nếu DLL này yêu cầu trình cài đặt của nó được thực thi trên máy đích. Đó là khả năng. Nói chuyện với nhà cung cấp thành phần hoặc tác giả để tìm hiểu xem bạn nên làm gì.

+0

Đó là một hội đồng COM (tôi có thể thấy nó được liệt kê dưới tab COM trong visual studio thêm refrence thêm thoại refrence). làm thế nào để tôi tìm thấy con đường của hội đồng mà tôi cần phải cung cấp để regasm. Đường dẫn được hiển thị bên cạnh nó trong studio trực quan là project \ obj \ x86 \ Release \ Interop.lbname.dll. Cung cấp đường dẫn đó thực hiện thành công, nhưng tôi vẫn có cùng một vấn đề. – user434541

+0

Khó để hiểu được điều đó. project \ obj \ x86 \ release không phải là một đường dẫn hợp lệ cho một assembly interop. Cũng không nên hiển thị trong hộp thoại Thêm tham chiếu. Và bạn không sử dụng regasm.exe trên máy chủ COM gốc, chỉ trên một máy chủ đã được triển khai trong .NET. Trong trường hợp đó, bạn nên sử dụng nó như là, không phải là một máy chủ COM. Nói chuyện với nhà cung cấp của bạn. –

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