Sự khác biệt cài đặt Loại Interop Nhúng đúng và sai trong Visual Studio là gì?


121

Trong Visual Studio, khi thêm một tham chiếu vào dự án, cửa sổ thuộc tính có một tùy chọn Embed Inteop Types, chúng ta nên đặt nó thành Truehoặc False? Có gì khác biệt?

Vì chúng tôi có rất nhiều dự án, trong số đó, một số dự án được đặt thành tham chiếu False, những dự án khác được đặt thành True, nó hoàn toàn rối tung. Và máy chủ bulid cũng có cảnh báo tương tự:

“Tham chiếu được tạo cho hội đồng tương tác nhúng” có nghĩa là gì?

Vì vậy, chúng tôi dự định thay đổi tất cả Embed Inteop Typesthành False, chúng tôi sẽ gặp rủi ro gì?


4
Không bao giờ làm điều này, đó là một tính năng rất tuyệt vời giúp giải quyết các chi tiết triển khai khó chịu. Bạn phải hiểu COM để thực sự tìm hiểu tất cả về cái này.
Hans Passant

@HansPassant, bạn đang nói không bao giờ đặt chúng falsehoặc không bao giờ thay đổi chúng (ví dụ: nếu chúng đã mặc định thành false)?
noelicus

2
Anh ta định đặt nó thành Sai. Đừng bao giờ làm điều này.
Hans Passant

3
@HansPassant sao bạn lại sử dụng khó chịu và khó chịu. nó rất brittish: D
Mafii

4
@Mafii Tôi nghĩ rằng Grok đến từ Stranger in a Strange Land (là người Mỹ). Tất nhiên, không có nghĩa là người Anh có thể không sử dụng nó nhiều hơn!
UuDdLrLrSs

Câu trả lời:


79

Tùy chọn này đã được giới thiệu để loại bỏ nhu cầu triển khai các PIA rất lớn (Các tổ hợp tương tác chính) cho tương tác.

Nó chỉ đơn giản nhúng mã bắc cầu được quản lý được sử dụng cho phép bạn nói chuyện với các hội đồng không được quản lý, nhưng thay vì nhúng tất cả, nó chỉ tạo ra những thứ bạn thực sự sử dụng trong mã.

Đọc thêm trong bài đăng trên blog của Scott Hanselman về nó và các cải tiến VS khác tại đây .

Về việc liệu nó có được khuyên hay không, tôi không chắc vì tôi không cần sử dụng tính năng này. Tìm kiếm nhanh trên web mang lại một số khách hàng tiềm năng:

Rủi ro duy nhất của việc biến tất cả thành sai là nhiều lo ngại về triển khai hơn với các tệp PIA và việc triển khai lớn hơn nếu một số tệp đó lớn.


1
Lưu ý rằng có một sự khác biệt khá lớn có thể phá vỡ mã hiện có khi tắt Loại tương tác nhúng . Sự khác biệt được đề cập ở đây : “C # 4 và các phiên bản mới hơn, tự động chuyển đổi Đối tượng trả về thành động nếu hợp ngữ được tham chiếu bởi tùy chọn trình biên dịch / liên kết hoặc tương tự, nếu thuộc tính Excel Embed Interop Types được đặt thành true. True là giá trị mặc định cho thuộc tính này. ”
Dirk Vollmar

Các hội đồng tương tác được nhúng đã gây cho tôi sự cố trong một hệ thống dựa trên trình cắm thêm, trong đó cả máy chủ lưu trữ và các trình cắm phụ thuộc vào cùng một đối tượng COM . Một vấn đề khác là hợp nhất các tổ hợp như vậy với ILMerge .
Ant_222

8

Tôi nhận thấy rằng khi nó được đặt thành false, tôi có thể thấy giá trị của một mục bằng trình gỡ lỗi. Khi nó được đặt thành true, tôi đã gặp lỗi - item.FullName.GetValue Loại tương tác nhúng 'FullName' không chứa định nghĩa cho 'QBFC11Lib.IItemInventoryRet' vì nó không được sử dụng trong hợp ngữ đã biên dịch. Cân nhắc truyền sang đối tượng hoặc thay đổi thuộc tính 'Embed Interop Types' thành true.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.