тег не существует в пространстве имен XML
эта ошибка, кажется, размещена повсюду, но каждый из них, похоже, имеет свое собственное решение, ни один из которых не решил мою проблему.
Я получаю ошибку для словаря ресурсов, который я делаю (и позже объединяю), что тег "ModelBindings" не существует в пространстве имен XML " clr-namespace:Company.Проект.Модуль.Папка; сборка=компания.Проект.Модуль'
сборка, на которую я ссылаюсь, является пользовательской и содержится в решении. Не только это, но мы посмотрел на dll, помещенную в корзину для проекта, в котором находится словарь ресурсов, и после проверки он содержит класс, на который я хочу ссылаться. Так что я знаю, что 1. dll находится в нужном месте для доступа и находится в ссылках. 2. DLL содержит данные, которые я хочу.
вот некоторые биты кода для словаря ресурсов
список имен
xmlns:modulemodel="clr-namespace:Company.Project.Module.Folder;assembly=Company.Project.Module"
создание ресурса для ссылки
<modulemodel:ModelBindings x:Key="ModuleModelBindings"/>
как и другие людские ошибки intellisense говорит свое кошерное. Также список xmlns был создан с автозаполнением intellisense и перепечатан вручную. Ни то, ни другое не сработало.
Я также попытался переместить все в приложение.XAML и он еще дал мне ту же ошибку.
Если я удаляю тело файла ResourceDictionary, код компилируется нормально, но все привязки нарушены.
наконец, все определения ресурсов, используемые для определения в файлах xaml, где они использовались, это сработало отлично. Его только после того, как я попытался создать их из другого проекта, что он не работает. Я изменил это, чтобы исправить ошибку и вернуться к старому методу может быть проблематично.
Edit: вот лучшее, что я могу сделать с точки зрения отображения словаря ресурсов, который я использую
<SharedResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:modulemodel="clr-namespace:Company.Project.Module.Folder;assembly=Company.Project.Module"
>
<modulemodel:ModelBindings x:Key="ModuleModelBindings"/>
</SharedResourceDictionary>
Если я заменю SharedResourceDictionary на ResourceDictionary, произойдет та же ошибка.
app.xaml и SharedResourceDictionary выше comparetively в компании пространства имен.Проект.Main и имеет ссылки как на то, где SharedResourceDictionary определен, так и на различные проекты модулей, которые я ввел в код выше
решение
похоже, это была в основном ошибка пользователя. Но это может случиться и с другим. Когда я скопировал определение xmlns:moduleviewmodel из исходного файла, мне пришлось добавить часть assembly= самостоятельно. Как я уже сказал, я сделал это сам. а также использовать автозаполнение следующим образом от ввода " xmlns: moduleviewmodel=". Прямо перед тем, как мы нашли ошибку, мы снова попробовали автозаполнение, потому что обнаружили, что одно из 7 пространств имен не генерирует ошибку. Именно тогда я заметил, что в пути сборки есть буква, которая не была заглавной, которая должна быть. Странно, что автозаполнение фактически вставляет эту ошибку самостоятельно. Пока мы собирали, я заметил ошибочное письмо. Самое странное - что после того, как я исправил все пути вручную, мы снова попробовали автозаполнение, и он написал его правильно.
Я понятия не имею о причине ошибочной автозаполнения, но с фиксированной буквой он компилируется просто отлично.
Теперь мне просто интересно, поверит ли кто-нибудь, что автозаполнение менялось на меня!
5 ответов
по данным в этой статье, вы просто делаете следующее:
FROM:
xmlns: ZZZ= "clr-пространство имен: YYY; assembly=YYY"
в:
xmlns:ZZZ= " clr-пространство имен: YYY; assembly="
оставьте пустое значение для assembly=
Это решение, которое работает для меня.
похоже, это была в основном ошибка пользователя. Но это может случиться и с другим. Когда я скопировал xmlns:moduleviewmodel
определение из исходного файла мне пришлось добавить сборку= часть самостоятельно. Как я уже сказал, я сделал это сам, а также использовал автозаполнение следующим образом: "xmlns: moduleviewmodel=". Прямо перед тем, как мы нашли ошибку, мы снова попробовали автозаполнение, потому что обнаружили, что одно из 7 пространств имен не генерирует ошибку. Тогда-то я и заметил, что там был буква в пути сборки, которая не была заглавной, которая должна быть. Странно, что автозаполнение фактически вставляет эту ошибку самостоятельно. Пока мы собирали, я заметил ошибочное письмо. Самое странное, что после того, как я исправил все пути вручную, мы снова попробовали автозаполнение, и оно было написано правильно.
Я понятия не имею о причине ошибочной автозаполнения, но с фиксированной буквой он компилируется просто отлично.
теперь мне просто интересно, будет ли кто-нибудь поверьте, автозаполнение менялось на мне!
Это может не быть решением вашей проблемы, но я вижу ошибку, о которой вы спрашиваете довольно часто, и проблема обычно вызвана проблемой загрузки сборки.
Если вы проверяете свою сборку, и к ней прикреплен желтый треугольник, то она, вероятно, не совместима с вашей текущей настройкой проекта, из-за do различные версии .NET, или что-то в этом роде.
Это обычно будет терпеть неудачу молча, или только вызовет предупреждение; когда вы попробуйте сослаться на сборку в XAML, вы получите ошибку, как вы описали.
Проверьте предупреждения в списке ошибок, в моем случае там, где сообщения о неразрешенных ссылках .Net 4.5.1, в то время как моя целевая платформа проекта была 4.5
у меня была совершенно другая причина для этой ошибки:
Я пытался использовать класс из сборки A, поэтому я
1) добавлена ссылка на эту сборку в мой проект,
2) добавлена ссылка на сборку B, которая используется сборкой A, в мой проект,
3) добавлен в мой XAML
xmlns:assemblyA="clr-namespace:A;assembly=A"
3) Добавить в мой код
using A;
Это не сработало, у меня есть эта ошибка "тег не существует".
что помогло, добавлял
using B;
в моем коде, хотя я не использую непосредственно ничего из сборки B.