Undefined пространство имен CLR - решение не найдено
Я искал какое-то время, пытаясь найти причину, по которой будет происходить следующее, но никакие решения в StackOverflow и Google не могут мне помочь.
У меня есть пользовательский UserControl, который пытается ссылаться на пространство имен внутри одного проекта:
xmlns:my="clr-namespace:ColorPicker"
однако при компиляции я получаю следующую ошибку:
Undefined пространство имен CLR. URI "clr-namespace" относится к пространству имен "ColorPicker", которое не входит в сборку.
Это приводит к тому, что вы не можете создавать мой проект или ссылаться на другие настраиваемые элементы управления в xaml, генерируя такие ошибки:
Тип "my: ColorSelector" не найден. Убедитесь, что вы не указали ссылку на сборку и что все ссылочные сборки были созданы.
Я попытался все решения, приведенные в этих сообщениях:
добавление настраиваемого пространства имен в xaml
WPF xmlns: URI 'clr-namespace' относится к пространству имен, которое не входит в сборку
URI 'clr-namespace' относится к пространству имен, которое не входит в сборку
Undefined пространство имен CLR
Кроме того, чтобы быть ясным, я не получаю никаких других ошибок в отношении других файлов в этом проекте, поэтому не похоже, что это может быть результатом того, что другие файлы не компилируются.
UPDATE: пример проекта, который создает ошибку для меня, можно скачать здесь: http://www.filefactory.com/file/28fbmhj3f4qj/n/ColorPicker_zip
Ответы
Ответ 1
Ваш первый связанный вопрос имеет ответ. Ответ: вам нужно собрать сборку, содержащую пространство имен, и указать классы/элементы управления, прежде чем вы сможете ссылаться на него в .xaml. Я прокомментировал ваши объявления пространства имен xaml, а затем прокомментировал элементы xaml из этих пространств имен, а затем прокомментировал код С#, который сломался в результате того, что эти элементы больше не объявляются. Другими словами, я продолжал комментировать, пока не смог успешно построить. После сборки сборки я раскомментировал объявления пространства имен xaml, а затем элементы. Это дало ошибку в том, что вам нужно было использовать x: Name вместо Name на этих элементах, поэтому я сделал это. Затем раскомментировал код С# и он строит.
Ответ 2
xmlns:my="clr-namespace:ColorPicker;assembly=ColorPicker"
.
Это сработало для меня! Это быстрее и менее раздражает!
Ответ 3
Мне пришлось переместить мой в словарь внешних ресурсов.
Я исправил свою проблему, изменив:
<UserControl.Resources>
<SHCL:GoodBadConverter x:Key="GoodBadConverter"/>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/StandardHelperClassLibrary;component/WPF/Dictionaries/WindowStylesDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
к
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/StandardHelperClassLibrary;component/WPF/Dictionaries/WindowStylesDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
где был перемещен в один из перечисленных ресурсных словарей.