XML命名空间'clr-namespace:YYY'中不存在标记'XXX'

时间:2012-02-05 17:33:57

标签: wpf xaml

我已经实现了一个将Int32转换为String的转换器,以便能够将属性绑定到textBox。

我在命名空间MyApp.Converters中实现了这个转换器,它被称为Int32ToStringConverter。

然后,在我的axml中,我将对转换器的引用添加如下:

<Window x:Class="MusicaDB.Views.PrincipalView"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:i="namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
        **xmlns:converter="clr-namesapce:MyApp.Converters, aseembly=MyApp**">

稍后,在windows.Resources中我有:

<Window.Resources>
        <**converter:Int32ToStringConverter** x:Key="Int32ToStringConverter" />
</Window.Resources>

我得到的错误是标签Int32ToString转换器在名称空间MyApp.Converters,assembly = MyApp中不存在。

我的项目在本地硬盘中,在项目属性中,目标.NET是框架4.0,而不是框架4.0客户端配置文件,我尝试清除解决方案并重新编译,但问题仍然存在。

主要是,这是我总能找到的两种解决方案,但不能解决我的问题。

10 个答案:

答案 0 :(得分:26)

要做的三件事:

  1. 没有空格 - &gt; xmlns:converter="clr-namesapce:MyApp.Converters,aseembly=MyApp"
  2. 没有拼写错误 - &gt; xmlns:converter="clr-namespace:MyApp.Converters,assembly=MyApp"
  3. 右分隔符 - &gt; xmlns:converter="clr-namespace:MyApp.Converters;assembly=MyApp"
  4. 来自the documentation

      

    请注意,将 clr-namespace 标记与其值分隔的字符为冒号(:),而将程序集标记与其值分隔的字符为等号(=)。这两个令牌之间使用的字符是分号。此外,请勿在声明中的任何位置包含任何空格。

答案 1 :(得分:26)

此问题的另一个可能解决方案是您在项目和库中没有使用相同版本的.Net。

答案 2 :(得分:13)

我正在探索为什么会发生这种情况,但是如果您的转换器位于主程序集中,则从xmlns:converter标记中删除assembly =应该会删除该构建错误。

答案 3 :(得分:4)

记录...... 我遇到了类似的问题,如果我从XAML中删除了“; assembly = X”部分,它就可以了。

但不明白原因。

正如本博客所述: http://zoomicon.wordpress.com/2012/07/02/fix-the-tag-xxx-does-not-exist-in-xml-namespace-clr-namespaceyyy/#comment-7761

答案 4 :(得分:4)

所有答案都是正确的。在尝试了所有这些并且你无法配置其发生的原因后,一切似乎都没问题,请重新启动Visual Studio。

浪费了将近1小时后,这对我有用。我发现一切正常,但是在管理中重新启动了VS.

答案 5 :(得分:3)

我看到两个可能的原因。首先是你在第一个加星标的行中拼错了“集合”作为“aseembly”。改变拼写可能就足够了。第二种可能性是您没有将MyApp.dll添加到项目引用中,如此显示

enter image description here

在Visual Studio中

答案 6 :(得分:2)

在我的情况下,xmlns:local="clr-namespace:<mydefaultnamespace>"遇到了同样的问题。     我解决了这个改变包含的顺序。我把它放在第一位,一切都解决了。     一种奇怪的行为,但这是我在我的情况下找到的解决方法。

答案 7 :(得分:2)

只有在另一个项目中才使用汇编代码。 另外明智地仅使用命名空间标记。 对我来说,这解决了问题

答案 8 :(得分:1)

当您收到此错误时,有一个非常模糊的情况 - 如果您正在使用Microsoft.mshtml.dll并升级到Windows 10周年纪念版,或者因为它也是创建者版本。

即使没有发生这种情况,也要确保可以完全编译包含无法找到的组件的库。查看错误列表(不是网格而是输出控制台)以获取任何线索。

在我的情况下,我使用Microsoft.mshtml.dll作为HTML编辑器的一部分,并且以某种方式(在GAC中)未注册。

以下文章以截图说明:

https://techninotes.blogspot.com/2016/08/fixing-cannot-find-wrapper-assembly-for.html#comment-form

简而言之,我必须运行Visual Studio命令提示符(作为管理员)运行以下命令:

cd C:\Windows\assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a
regasm Microsoft.mshtml.dll

我确实说过晦涩:-)重要的一点是要阅读可能隐藏在所有警告中的错误,因为可能有一个重要的线索。

如果操作系统更新突然中断您的项目,这可能会特别令人困惑。

答案 9 :(得分:0)

就我而言,包含命名空间的程序集实际上并不存在

我检查了具有构建错误的程序集的引用,并查看了所引用程序集的属性。

我导航到路径并发现装配确实丢失了(我意识到这是我自己做的),引起了误导性错误。