Тег 'XXX' не существует в пространстве имен XML 'clr-namespace: YYY' - PullRequest
15 голосов
/ 05 февраля 2012

Я реализовал конвертер для преобразования Int32 в строку, чтобы иметь возможность привязать свойство к textBox.

Я реализую этот конвертер в пространстве имен MyApp.Converters, и он называется Int32ToStringConverter.

Затем в моем axml я добавляю ссылку на мой конвертер следующим образом:

<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**">

Позже, в windows.Resources:

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

Я получаю ошибку, чтотег Int32ToString конвертер не существует в пространстве имен MyApp.Converters, Assembly = MyApp.

У меня есть проект на локальном жестком диске, в свойствах проекта, назначение .NET является Framework 4.0, а не Framework 4.0 клиентапрофиль, и я пытаюсь очистить решение и перекомпилировать, но проблема сохраняется.

В основном, это два решения, которые я всегда нахожу, но не решаю мою проблему.

Ответы [ 10 ]

27 голосов
/ 18 декабря 2014

Другое возможное решение этой проблемы заключается в том, что вы не используете одну и ту же версию .Net в своем проекте и своей библиотеке.

26 голосов
/ 05 февраля 2012

Три исправления, которые нужно сделать здесь:

  1. Без пробелов -> xmlns:converter="clr-namesapce:MyApp.Converters,aseembly=MyApp"
  2. Нет орфографических ошибок -> xmlns:converter="clr-namespace:MyApp.Converters,assembly=MyApp"
  3. Правые разделители -> xmlns:converter="clr-namespace:MyApp.Converters;assembly=MyApp"

Из документации :

Обратите внимание, что символ, отделяющий маркер clr-namespace от его значения, является двоеточием (:), тогда как символ, отделяющий токен Assembly от его значения, является знаком равенства (= ). Символ, используемый между этими двумя токенами, является точкой с запятой. Кроме того, нигде не указывайте пробелы в объявлении.

13 голосов
/ 05 февраля 2012

Я выясняю, почему это происходит, но если ваш конвертер находится в основной сборке, удаление сборки = из тега xmlns: converters должно устранить эту ошибку сборки.

4 голосов
/ 03 марта 2016

Все ответы верны. И после того, как вы попробуете все из них, и вы не сможете настроить, почему это происходит, все выглядит хорошо. Пожалуйста, перезапустите Visual Studio.

Это сработало для меня после потери почти 1 часа. Я нашел все в порядке, но перезапустил VS с администрацией.

4 голосов
/ 11 июня 2014

Для записи ... У меня возникла похожая проблема, и если я удалил часть "; Assembly = X" из XAML, то все заработало

Но не совсем понимаю причину.

Как предлагается в этом блоге: http://zoomicon.wordpress.com/2012/07/02/fix-the-tag-xxx-does-not-exist-in-xml-namespace-clr-namespaceyyy/#comment-7761

3 голосов
/ 05 февраля 2012

Я вижу две возможные причины.Во-первых, вы неправильно написали «сборка» как «сборка» в первой звездочке.Изменение правописания может быть достаточно.Вторая возможность заключается в том, что вы не добавили MyApp.dll в ваши ссылки на проекты, которые выглядят так:

enter image description here

в Visual Studio.

2 голосов
/ 28 июля 2017

используйте тег сборки, только если он находится в другом проекте.в противном случае используйте только тег namespace.Для меня это исправило проблему

2 голосов
/ 19 июня 2012

В моей ситуации у меня была такая же проблема с xmlns:local="clr-namespace:<mydefaultnamespace>".Я решил это, изменив порядок включений.Я поставил это первым, и все было решено.Странное поведение, но это был мой обходной путь, который я нашел в моей ситуации.

1 голос
/ 06 февраля 2018

Существует один очень непонятный случай, когда вы получаете эту ошибку - если вы используете Microsoft.mshtml.dll и вы обновляетесь до Windows 10 юбилейной версии, или, как оказалось, тоже версия Creator.

Даже еслиэто не то, что происходит с вами, убедитесь, что библиотека, содержащая компонент, который не может быть найден, может быть полностью скомпилирована.Посмотрите в списке ошибок (не в сетке, а в консоли вывода) какие-либо подсказки.

В моем случае я использовал Microsoft.mshtml.dll как часть редактора HTML, и он как-то был незарегистрирован (в GAC).

Следующая статья поясняет снимки экрана:

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

Короче говоря, мне нужно было запустить командную строку Visual Studio (от имени администратора) и выполнить следующие команды:

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

Я сказал неясным :-) Важным моментом является чтение ошибок, которые могут быть скрыты среди всех ваших предупреждений, потому что там может быть важная подсказка.

Это может быть особенно запутанным, если обновление операционной системы внезапно нарушает ваш проект.

0 голосов
/ 28 ноября 2014

В моем случае, сборка, которая содержала пространство имен, физически отсутствовала .

Я проверил ссылки на сборку, в которой произошла ошибка сборки, и посмотрел свойства упомянутой ссылки.рассматриваемая сборка.

Я переместился на путь и обнаружил, что сборка действительно отсутствует (, что, как я понял, было моим собственным ), что привело к вводящей в заблуждение ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...