Trong bài viết này sẽ hướng dẫn các bạn khắc phục warning CS1762 khi biên dịch (compiler) project csharp.
Hiện tượng:
Khi biên dịch project xong, các bạn nhận được thông báo warning kiểu như sau:
“1>CSC : warning CS1762: A reference was created to embedded interop assembly ‘<assembly1>’ because of an indirect reference to that assembly created by assembly ‘<assembly2>’. Consider changing the ‘Embed Interop Types’ property on either assembly.“
Nguyên nhân:
– Warning này có thể làm bạn ngạc nhiên, không biết tại sao nó lại xuất hiện. Vì loại thuộc tính Embed Interop Types, mặc định được set là True, và bạn đang nhúng (embedding) loại thông tin mà có thể trình biên dịch không nhận ra.
– Warning này sẽ xảy ra khi project (ứng dụng) của bạn có tham chiếu đến hai assembly khác nhau. Đối với tham chiếu assembly đầu tiên (assembly1), bạn đã thiết lập thuộc tính Embed Interop Types thành True. Đối với assembly thứ hai (assembly2), bạn đã đặt thuộc tính Embed Interop Types là False.
– Warning xuất hiện trong trường hợp này bởi vì assembly thứ hai cũng tham chiếu đến assembly đầu tiên. Ở tình huống này là ứng dụng của bạn đang hướng dẫn trình biên dịch cho cả hai loại thông tin nhúng (embed type information) từ assembly đầu tiên, và không nhúng thông tin (embed type information) từ assembly đầu tiên thông qua assembly thứ hai.
Cách khắc phục:
– Để giải quyết vấn đề này, bạn cần phải đặt thuộc tính Embed Interop Types cho cả hai tham chiếu ‘<assembly1>’ và ‘<assembly2>’ thành cùng một giá trị:
- Hoặc cùng bằng True với embed type information.
- Hoặc cùng bằng False để lấy type information từ PIA.
– Ngoài ra, còn một số warning khi compiler, bạn có thể tham khảo tại đây: [MSDN] Troubleshooting Errors When Embedding Type Information (Doug Rothaus).
– Để thay đổi giá trị của thuộc tính Embed Interop Types, bạn Open Project > Click References > Right-click vào một assembly muốn thay đổi thuộc tính > Chọn Properties.