2012-08-01 35 views
6

Tôi đang phát triển một ứng dụng Silverlight C#, và tôi đã thêm một tham chiếu đến một Microsoft DLL và nhận được thông báo sau:Các Loại XX tồn tại trong cả hai DLL

Loại tồn tại trong cả hai DLL

Vì tôi đang sử dụng một điều khiển được xác định trong cả hai tệp DLL (một được liên kết với SDK, một trong những khác tôi thêm vào bản thân mình).

Sau khi thực hiện một số nghiên cứu trên internet, tôi đã cố gắng tạo bí danh của cả hai tệp DLL và nhập chúng bằng cách sử dụng extern alias <alias_name>. Cách tiếp cận này giải quyết một số vấn đề trong mã xaml.cs phía sau, nhưng không thực sự giải quyết vấn đề trong xaml. Sau khi tôi đã làm điều này, Visual Studio phàn nàn rằng một trong các điều khiển (từ DLL tôi đã thêm) không được định nghĩa trong không gian tên.

Vì vậy, tôi tự hỏi liệu có cách nào để xác định không gian tên trong XML bằng cách sử dụng bí danh không?

Cảm ơn bạn.

+0

Bạn đang phát triển một điều khiển với samespace _same sử dụng bởi các framework_, đó là? Tại sao? – devundef

+0

Không, tôi không phát triển nhưng sử dụng một điều khiển được định nghĩa trong hai dll mà tôi đang sử dụng. –

Trả lời

4

Stackoverflow

MSDN

Bạn chỉ cần thêm một bí danh thứ hai để lắp ráp bằng cách sử dụng delimiters dấu phẩy.

ví dụ

<Aliases>global,alias_name</Aliases> 

XAML sẽ sử dụng bí danh toàn cầu, và bạn có thể chọn và chọn trong các lớp học của bạn.

.

Nếu bạn cần phải sử dụng cả hai cụm ở một nơi, I think this solution is the only one.

Về cơ bản, tạo ra hai lớp wrapper trong không gian tên riêng trong dự án của riêng bạn cho mỗi lớp được yêu cầu, sau đó tham khảo các không gian tên wrapper thay vì lắp ráp xung đột.

+0

Xin chào Cảm ơn bạn, tôi đã thử cách tiếp cận này nhưng dường như không giải quyết được vấn đề đối với tôi. Phần tử điều khiển xaml (cho phép gọi điều khiển 'LL') được định nghĩa trong cả hai dll vì vậy tôi muốn làm một cái gì đó như chỉ định điều khiển' LL' mà tôi sử dụng trong xaml là từ một trong các dll nhưng không phải từ cái kia, vì tôi không nghĩ rằng tôi có một cơ hội khác để xác định không gian tên của điều khiển. Cảm ơn bạn –

+0

Tìm thấy một thay thế ... –

+0

Điều này có vẻ hơi khó hiểu, nhưng cảm ơn bạn! –

2

Có một cách tốt nếu bạn sử dụng lớp từ namespae trùng lặp trong mã C# (không phải trong XAML) http://csc-technicalnotes.blogspot.ru/2009/07/type-exists-in-both-dlls.html

Sử dụng một bí danh lắp ráp bên ngoài. Chỉ định thuộc tính "Bí danh" của tham chiếu DLL.

  1. Trong Visual Studio Solution Explorer, mở Thư mục tham khảo.
  2. Nhấp chuột phải vào tham chiếu DLL, chọn Thuộc tính
  3. Nhập giá trị bí danh trong thuộc tính "Bí danh".
  4. Ví dụ: Bí danh để tham chiếu MyDLLv1.dll có thể là "LegacyMyDLL".

Chỉ định bí danh trong C# mã nguồn:

// Old way 
using MyNamespace; 

// New way 
extern alias LegacyMyDLL; 
using LegacyMyDLL.MyNamespace;