标记在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的地方以及我放在上面代码中的不同模块项目
根据本文,您只需执行以下操作:
来自: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文件是唯一可行的解决方案