2011-06-26 33 views
24

Tôi có một điều khiển người dùng winform hơn tôi muốn thêm vào dự án wpf.Thẻ "xxx" không tồn tại trong không gian tên XML "yyy"/Tham chiếu không thể tìm thấy

tôi đã thêm các tài liệu tham khảo có liên quan (WindowsFormsIntegration, SystemWindowsForms và kiểm soát dll của tôi sử dụng) và thêm dòng này trong XAML của tôi:

xmlns:MyControl="clr-namespace:xx.xx.xx;assembly=xx.xx" 

Và rồi này:

<WindowsFormsHost><MyControl:control></MyControl:control></WindowsFormsHost> 

Khi tôi viết "MyControl : "kiểm soát" là tự động hiển thị có nghĩa là VS nhận ra sự kiểm soát và tất cả các tài liệu tham khảo được thêm ok ... nhưng khi tôi biên dịch dự án, điều này cho tôi lỗi trong tiêu đề.

Sửa

của nó rất lạ khi tôi biên dịch tất cả các dự án tôi đã có lỗi "Loại hoặc namespace tên "xx' không thể tìm được ..." nhưng tôi thêm vào tất cả các refernces và VS nhận ra không gian tên như vậy tại sao trình biên dịch không tìm thấy chúng? Nếu vấn đề này sẽ được giải quyết, tôi tin rằng vấn đề khác cũng sẽ biến mất

+2

Các dự án của bạn có nhắm mục tiêu cùng .NET-Framework-Version không? – Marc

+0

Tôi vô tình dựa vào bàn phím và đổi tên "Button3" thành "Butto333333333333333n3" trong tên Assembly trong thuộc tính. Sửa chữa lại những gì nó nên được gọi là cố định vấn đề. Kiểm tra lỗi chính tả ngớ ngẩn, đó là những gì nó sẽ là – Mezmer

Trả lời

0

Tôi đã gặp phải vấn đề này trước và thay thế <MyControl:control></MyControl:control> chỉ với <MyControl:control/> cố định nó cho tôi.

Không biết tại sao. Có vẻ như hình thức đầu tiên chỉ dành cho các điều khiển có thể chứa các điều khiển khác.

+0

tiếc là không làm việc cho tôi – Maya

+0

Bạn có nhớ dán trong XAML thực tế của bạn? (hoặc là khá nhiều nó?) –

+0

@Tom tôi có thể dán nó trong máy tính khác anyway của nó khá nhiều nó. Bạn có thấy bản chỉnh sửa của tôi không? Tôi nghĩ rằng vấn đề của tôi là trình biên dịch không thể tìm thấy refernce của kiểm soát của tôi – Maya

1

Tôi chạy vào cùng một "Không thể tìm thấy loại tên hoặc không gian tên 'xx' ...".

Nó biến mất khi Tôi đã chuyển tệp Visual Studio của mình trên ổ đĩa cục bộ. Chúng được lưu trữ trên một thư mục mạng chia sẻ trước đây. Tôi không biết nguyên nhân gốc rễ của điều này, nhưng ít nhất tôi có thể có nhà thiết kế của tôi đang chạy.

+1

Bạn đã cố gắng thực hiện "Làm sạch" toàn bộ giải pháp, hoặc xóa các thư mục bin chưa? (Tất nhiên, hãy quan tâm đến các phụ thuộc bên ngoài :)) – Larry

13

Visual Studio sẽ chỉ tải tham chiếu để phản ánh để nó hiển thị đúng nội dung chính xác. Nhưng để biên dịch, trình biên dịch sẽ cần tất cả các dll mà dll tham chiếu của bạn phụ thuộc vào. Vì vậy, studio trực quan sẽ hiển thị intellisense cho mycontrol vì nó có thể tìm thấy nó trong tài liệu tham khảo. Nhưng myontrol của bạn có thể tham khảo các dll khác mà bạn có thể chưa thêm vào. Bạn sẽ phải thêm tài liệu tham khảo phụ thuộc của mycontrol trong dự án của bạn.

42

Giải pháp là: Chuyển đến thuộc tính dự án của bạn và thay đổi Target Framework từ Client Profile thành phiên bản đầy đủ của .Net bạn đang sử dụng, xem hình ảnh bên dưới. Vấn đề này xảy ra nếu DLL của bạn nhắm mục tiêu đầy đủ Khuôn khổ .NET, và các ứng dụng WPF của bạn (dự án chính) mục tiêu .Net Client Profile.

Change Your Target Framework to the Full Version

+1

+1 nó thực sự hoạt động. câu hỏi duy nhất là tại sao? câu chuyện với hồ sơ khách hàng là gì. –

+1

@AdielYaacov, điều đó xảy ra nếu tệp DLL của bạn nhắm mục tiêu Khuôn khổ .NET đầy đủ và Ứng dụng WPF của bạn nhắm mục tiêu Hồ sơ khách hàng. –

+1

Tôi đã có cùng một vấn đề và sửa chữa rất gần với điều này. Tôi đã tham khảo một thư viện .NET v.4.5 từ một dự án mà tôi vô tình tạo ra như .NET V.4. Nâng cấp phiên bản dự án lên .NET v4.5 đã sửa nó. – GrandMasterFlush

6

Nó cũng có thể là khung đích khác nhau giữa các dự án của bạn. Chúng tôi lưu trữ một thư viện lớp với các trang WPF và nó được nhắm mục tiêu đến 'Bất kỳ CPU' nào, nhưng ứng dụng máy chủ được nhắm mục tiêu đến 'x86'. Khi chúng khớp nhau, vấn đề đã biến mất.

21

Điều này xảy ra với tôi khi tôi đưa tên lắp ráp vào định nghĩa không gian tên, nhưng cả hai điều khiển đều nằm trong cùng một assembly. Chỉ cần loại bỏ phần lắp ráp của khai báo không gian tên đã giải quyết nó.

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