标记在XML名称空间中不存在

本文关键字:空间 不存在 XML | 更新日期: 2023-09-27 18:03:28

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

我得到一个资源字典的错误,我正在制作(后来合并),标签'ModelBindings'不存在于XML命名空间'clr-namespace:Company.Project.Module. folder;assembly=Company.Project.Module'

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

资源字典

名称空间

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

创建要引用的资源

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

就像其他人的错误一样,理智认为这是正确的。此外,xmlns清单是用intellisense的自动补全功能创建的,并手动重新输入。既不工作。

我也试过把所有的东西都移动到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>

如果我将SharedResourceDictionary替换为ResourceDictionary,则会出现相同的错误。

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

标记在XML名称空间中不存在

根据本文,您只需执行以下操作:

来自:

xmlns:打鼾声="clr-namespace: YYY;装配= YYY"

:

xmlns:打鼾声= " clr-namespace:多;装配= "

为汇编保留空值=

这是对我有效的解决方案。

这可能不是您问题的解决方案,但我看到您经常询问的错误,该问题通常是由加载程序集的问题引起的。

如果你检查你的汇编,它有一个黄色三角形附加到它,那么它很可能与你当前的项目设置不兼容,由于不同版本的。net ,或类似的东西。

这通常会静默失败,或者只引起警告;当您尝试在XAML中引用该集合时,您将得到您所描述的错误。

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

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

现在我只是想知道是否有人会相信自动补全在我身上发生了变化!

检查错误列表中的警告,在我的情况下,关于未解析的。net 4.5.1引用的消息,而我的项目目标框架是4.5

如果您在与WPF形式相同的程序集中拥有用户控制,请确保在导入命名空间

时摆脱程序集部分

错误导入:xmlns:usercontrol="clr-namespace:CCFARKS. usercontrols;assembly=CCFARKS"

正确:xmlns:用户控件= " clr-namespace: CCFARKS。用户控件"

对于这个错误,我有一个完全不同的原因:

我试图使用汇编a中的类,所以我

1)将此程序集的引用添加到我的项目中,

2)在我的项目中添加了对汇编A使用的汇编B的引用,

添加到我的XAML

 xmlns:assemblyA="clr-namespace:A;assembly=A"
3)添加到我的代码
using A;

这没有工作,我有这个"标签不存在"错误。

添加

using B;

在我的代码中,虽然我不直接使用汇编b中的任何东西

这是一个老问题,但是,问题来自。csproj。确保"page"元素是在"itemgroup"部分的"compile"元素之前定义的。

好:

  <ItemGroup>
...
<Page Include="ScreenComponents'StatusBar.xaml">
  <SubType>Designer</SubType>
  <Generator>MSBuild:Compile</Generator>
</Page>
<Compile Include="ScreenComponents'StatusBar.xaml.cs">
  <DependentUpon>StatusBar.xaml</DependentUpon>
</Compile>
…

不太好:

  <ItemGroup>
...
<Compile Include="ScreenComponents'StatusBar.xaml.cs">
  <DependentUpon>StatusBar.xaml</DependentUpon>
</Compile>
<Page Include="ScreenComponents'StatusBar.xaml">
  <SubType>Designer</SubType>
  <Generator>MSBuild:Compile</Generator>
</Page>
…

regards

如果您有除此特定错误之外的其他错误,也可能发生这种情况。更多的错误可能会导致文件不能正确编译,从而导致此错误。

首先尝试删除其他版本的'ERRORS'和'WARNINGS'。然后重新构建解决方案。

我在。net 7 wpf库项目中使用另一个UserControl时出现了此错误。为我删除$(MSBuildProjectName)从.csproj文件是唯一可行的解决方案