Warm tip: This article is reproduced from serverfault.com, please click

c#-XML 命名空间中不存在标记

(c# - tag does not exist in XML namespace)

发布于 2011-07-22 18:29:20

这个错误似乎到处张贴,但每个人似乎都有自己的解决方案,没有一个解决了我的问题。

我正在制作(以及稍后合并)的资源字典出现错误,即 XML 命名空间“clr-namespace:Company.Project.Module.Folder;assembly=Company.Project.Module”中不存在标签“ModelBindings”

我引用的程序集是自定义的并包含在解决方案中。不仅如此,我们还查看了放入资源字典所在项目的 bin 中的 dll,经过检查,它包含我想要引用的类。所以我知道 1. dll 位于可以访问的正确位置并且在引用中。2. dll 包含我想要的数据。

这是资源字典的一些代码

命名空间的列表

xmlns:modulemodel="clr-namespace:Company.Project.Module.Folder;assembly=Company.Project.Module"

创建要引用的资源

<modulemodel:ModelBindings x:Key="ModuleModelBindings"/>

就像其他人的错误一样,智能感知说它是犹太洁食。此外,xmlns 列表是使用智能感知的自动完成功能创建的,并手动重新输入。都没有工作。

我也尝试将所有内容移动到 app.xaml,但它仍然给我同样的错误。

如果我删除 ResourceDictionary 文件的主体,则代码可以正常编译,但所有绑定都已损坏。

最后,所有资源定义过去都在使用它们的 xaml 文件中定义,效果很好。只有在我尝试从不同的项目创建它们之后,它才不起作用。我更改了它以修复错误并返回旧方法可能会出现问题。

编辑:这是我在显示我正在使用的资源字典方面能做的最好的事情

<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>

如果我用 ResourceDictionary 替换 SharedResourceDictionary 会发生同样的错误。

上面的 app.xaml 和 SharedResourceDictionary 相对地位于 Company.Project.Main 命名空间中,并且它引用了 SharedResourceDictionary 的定义位置以及我在上面代码中放入的不同模块项目

解决方案

看起来这主要是用户错误。但这可能发生在其他人身上。当我从原始文件中复制 xmlns:moduleviewmodel 定义时,我必须自己添加 assembly= 部分。就像我说的那样,我既自己做,也使用自动完成输入 'xmlns:moduleviewmodel=' 。就在我们发现错误之前,我们再次尝试了自动完成,因为我们发现 7 个命名空间之一没有产生错误。就在那时,我注意到汇编路径中有一个应该是大写的字母。奇怪的是自动完成实际上是自己插入这个错误。在我们编译时,我注意到了错误的字母。更奇怪的是,在我手动修复了所有路径后,我们再次尝试了自动完成,并且拼写正确。

我不知道错误自动完成的原因,但使用固定字母它编译得很好。

现在我只是想知道是否有人会相信自动完成功能正在改变我!

Questioner
StephenT
Viewed
0
158k 2011-07-25 21:51:42

看起来这主要是用户错误。但这可能发生在其他人身上。当我xmlns:moduleviewmodel从原始文件中复制定义时,我必须自己添加 assembly= 部分。就像我说的那样,我既自己做,也使用自动完成输入 'xmlns:moduleviewmodel=' 。就在我们发现错误之前,我们再次尝试了自动完成,因为我们发现 7 个命名空间之一没有产生错误。就在那时,我注意到汇编路径中有一个应该是大写的字母。奇怪的是自动完成实际上是自己插入这个错误。在我们编译时,我注意到了错误的字母。更奇怪的是,在我手动修复了所有路径后,我们再次尝试了自动完成,并且拼写正确。

我不知道错误自动完成的原因,但使用固定字母它编译得很好。

现在我只是想知道是否有人会相信自动完成功能正在改变我!