Подтвердить что ты не робот

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

4b9b3361

Ответ 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>

где был перемещен в один из перечисленных ресурсных словарей.