未定义的CLR命名空间 - 未找到解决方案

时间:2012-06-14 19:28:53

标签: c# .net wpf xaml namespaces

我一直在研究一段时间,试图找到以下内容的原因,但StackOverflow或Google上的解决方案都无法帮助我。

我有一个自定义UserControl,它试图引用同一个项目中的命名空间:

xmlns:my="clr-namespace:ColorPicker"

然而,当我编译时,我收到以下错误:

  

未定义的CLR命名空间。 'clr-namespace'URI是指未包含在程序集中的命名空间'ColorPicker'。

这导致无法在xaml中构建我的项目或引用其他自定义控件,从而产生以下类型的错误:

  

找不到“my:ColorSelector”类型。验证您是否缺少程序集引用,并且已构建所有引用的程序集。

我尝试过这些帖子中提供的所有解决方案:

adding a custom namespace to xaml

WPF xmlns: The 'clr-namespace' URI refers to a namespace that is not included in the assembly

The 'clr-namespace' URI refers to a namespace that is not included in the assembly

Undefined CLR namespace

另外,为了清楚起见,我没有收到有关此项目中其他文件的任何其他错误,因此它似乎不是其他文件无法编译的结果。

更新:可以在此处下载为我生成错误的示例项目:http://www.filefactory.com/file/28fbmhj3f4qj/n/ColorPicker_zip

3 个答案:

答案 0 :(得分:6)

您的first linked question有答案。答案是:您必须构建包含命名空间和引用的类/控件的程序集,然后才能在.xaml中引用它。我注释掉了你的xaml名称空间声明,然后注释掉了那些名称空间中的xaml元素,然后注释掉了由于不再声明这些元素而导致的C#代码。换句话说,我一直在评论,直到我能够成功建立。构建程序集后,我取消注释xaml名称空间声明,然后是元素。这给出了一个错误,需要在这些元素上使用x:Name而不是Name,所以我这样做了。然后取消注释C#代码并构建它。

答案 1 :(得分:1)

xmlns:my="clr-namespace:ColorPicker;assembly=ColorPicker"

这对我有用!它更快,更不烦人​​!

答案 2 :(得分:0)

我不得不将我的资源转移到外部资源字典中。 我通过更改:

修复了我的问题
<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>

将其移至列出的资源词典之一。