тег не существует в пространстве имен 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.