2012-02-05 38 views
13

Tôi đã triển khai trình chuyển đổi để chuyển đổi Int32 thành Chuỗi để có thể ràng buộc thuộc tính vào hộp văn bản.Thẻ 'XXX' không tồn tại trong không gian tên clr của không gian tên XML: YYY '

Tôi triển khai bộ chuyển đổi này trong không gian tên MyApp.Converters và nó được gọi là Int32ToStringConverter.

Sau đó, trong axml tôi tôi thêm các tài liệu tham khảo để chuyển đổi của tôi như sau:

<Window x:Class="MusicaDB.Views.PrincipalView" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:i="namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 
     **xmlns:converter="clr-namesapce:MyApp.Converters, aseembly=MyApp**"> 

Sau đó, trong windows.Resources tôi có:

<Window.Resources> 
     <**converter:Int32ToStringConverter** x:Key="Int32ToStringConverter" /> 
</Window.Resources> 

tôi nhận được lỗi mà thẻ Int32ToString chuyển đổi không tồn tại trong không gian tên MyApp.Converters, assembly = MyApp.

Tôi có dự án trong ổ cứng cục bộ, trong thuộc tính dự án, đích .NET là khuôn khổ 4.0, không phải khuôn khổ 4.0 của ứng dụng khách và tôi cố gắng xóa giải pháp và biên dịch lại nhưng sự cố vẫn tiếp diễn.

Chủ yếu, đây là hai giải pháp mà tôi luôn tìm thấy, nhưng không giải quyết được vấn đề của tôi.

Trả lời

24

Ba bản sửa lỗi cho thực hiện ở đây:

  1. Không có dấu cách ->xmlns:converter="clr-namesapce:MyApp.Converters,aseembly=MyApp"
  2. Không lỗi chính tả ->xmlns:converter="clr-namespace:MyApp.Converters,assembly=MyApp"
  3. delimiters phải ->xmlns:converter="clr-namespace:MyApp.Converters;assembly=MyApp"

Làm thế nào về đọc the reference trước khi sử dụng một cái gì đó ?

Lưu ý rằng các nhân vật tách clr-namespace token từ giá trị của nó là một dấu hai chấm (:) trong khi nhân vật tách lắp ráp token từ giá trị của nó là một dấu bằng (=). Ký tự sử dụng giữa hai thẻ này là dấu chấm phẩy. Ngoài ra, không bao gồm bất kỳ khoảng trống nào ở bất kỳ đâu trong bản khai báo.

+0

liên kết tham chiếu đã biến mất! –

+2

@WaldoAlvarez: Nó không phải, đó chỉ là MSDN sử dụng một mặc định ngu ngốc, nếu bạn thấy "Chủ đề này không còn có sẵn", hãy chọn một phiên bản trước đó từ menu thả xuống "Phiên bản khác". –

+0

ahh ok cảm ơn, tốt hơn cung cấp liên kết trực tiếp https://msdn.microsoft.com/en-us/library/ms747086(v=vs.100).aspx –

3

Tôi thấy hai nguyên nhân có thể xảy ra. Đầu tiên là bạn đã viết sai chính tả "assembly" là "aseembly" trong dòng đầu tiên được gắn dấu sao. Thay đổi chính tả có thể là đủ. Khả năng thứ hai là bạn chưa thêm MyApp.dll để tham khảo dự án của bạn, xuất hiện như thế này

enter image description here

trong Visual Studio.

11

Tôi đang khám phá lý do tại sao điều này xảy ra, nhưng nếu bộ chuyển đổi của bạn nằm trong cụm chính, hãy xóa assembly = khỏi thẻ xmlns: converters của bạn nên xóa lỗi xây dựng đó.

2

Trong trường hợp của tôi, tôi có cùng sự cố với xmlns:local="clr-namespace:<mydefaultnamespace>". Tôi đã giải quyết việc này thay đổi thứ tự bao gồm. Tôi đặt nó trước và tất cả đã được giải quyết. Một hành vi kỳ lạ, nhưng đây là cách giải quyết của tôi mà tôi đã tìm thấy trong tình huống của mình.

3

Để ghi lại ... Tôi đã gặp phải sự cố tương tự và nếu tôi xóa phần "; assembly = X" khỏi XAML, nó hoạt động tốt

Nhưng thực sự không hiểu lý do.

Như đã đề cập trong blog này: http://zoomicon.wordpress.com/2012/07/02/fix-the-tag-xxx-does-not-exist-in-xml-namespace-clr-namespaceyyy/#comment-7761

+0

Rõ ràng, nếu nó trong cùng một hội đồng, không đặt nó. Nếu không, thì hãy đặt nó. – BrainSlugs83

0

Trong trường hợp của tôi, lắp ráp trong đó có không gian tên là không thể chất có.

Tôi đã kiểm tra tham chiếu của hội đồng có lỗi xây dựng và xem xét các thuộc tính của hội đồng được tham chiếu được đề cập.

Tôi điều hướng đến đường dẫn và phát hiện ra lắp ráp thực sự bị thiếu (mà tôi nhận ra là của riêng tôi đang thực hiện), dẫn đến lỗi gây hiểu lầm.

18

Một giải pháp khả thi khác cho vấn đề này là bạn không sử dụng cùng phiên bản .Net trong dự án và thư viện của bạn.

+0

Điều này rất hữu ích-- Tôi đã có cú pháp đúng, nhưng quên đặt phiên bản khung cho assembly mới mà tôi đã tham khảo. Cảm ơn. –

+1

Bạn là một phao cứu sinh. – MetalMikester

+0

Bạn có thể giải thích thêm về điều này không? Chi tiết hơn –

3

Tất cả câu trả lời đều đúng. Và sau khi thử tất cả chúng và bạn không thể cấu hình lý do tại sao nó xảy ra, mọi thứ dường như ổn, Hãy khởi động lại Visual studio.

Điều đó làm việc cho tôi sau khi lãng phí gần 1 giờ. Tôi tìm thấy mọi thứ ok, nhưng khởi động lại VS với chính quyền.

+0

Tôi đã cố gắng tìm ra những gì đang diễn ra trong khoảng 3 GIỜ !! Đề nghị của bạn để khởi động lại VS đã làm các trick !! –

0

chỉ sử dụng thẻ lắp ráp nếu nó nằm trong một dự án khác. chỉ sử dụng khôn ngoan thẻ chỉ không gian tên khác. Đối với tôi, điều này đã khắc phục sự cố

1

Có một trường hợp rất mơ hồ khi bạn gặp phải lỗi này - nếu bạn đang sử dụng Microsoft.mshtml.dll và bạn nâng cấp lên phiên bản kỷ niệm Windows 10 hoặc hóa ra phiên bản Creator.

Ngay cả khi đây không phải là điều xảy ra với bạn, hãy đảm bảo rằng thư viện chứa thành phần không thể tìm thấy có thể được biên dịch đầy đủ. Tìm trong danh sách lỗi (không phải là lưới nhưng giao diện đầu ra) cho bất kỳ manh mối nào.

Trong trường hợp của tôi, tôi đã sử dụng Microsoft.mshtml.dll như một phần của trình chỉnh sửa HTML và nó chưa được đăng ký bằng cách nào đó (trong GAC).

Bài viết sau đây giải thích với ảnh chụp màn hình:

https://techninotes.blogspot.com/2016/08/fixing-cannot-find-wrapper-assembly-for.html#comment-form

Nói tóm lại tôi đã phải chạy một dấu nhắc lệnh Visual Studio (như admin) chạy các lệnh sau:

cd C:\Windows\assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a 
regasm Microsoft.mshtml.dll 

tôi đã nói mơ hồ :-) Điểm quan trọng là đọc các lỗi có thể được chôn trong tất cả các cảnh báo của bạn bởi vì có thể có một đầu mối quan trọng.

Điều này có thể đặc biệt khó hiểu nếu cập nhật hệ điều hành đột nhiên phá vỡ dự án của bạn.

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