C# 标记在XML命名空间中不存在
这个错误似乎到处都是,但每个错误似乎都有自己的解决方案,没有一个解决了我的问题 我正在制作(以及以后合并)的资源字典中出现错误,即标记“ModelBindings”不存在于XML命名空间“clr namespace:Company.Project.Module.Folder”中;assembly=公司.项目.模块' 我引用的程序集是自定义的,包含在解决方案中。不仅如此,我们还查看了放入资源字典所在项目bin中的dll,检查后它包含了我要引用的类。所以我知道1。dll位于要访问的正确位置,并且位于引用中。2.dll包含我想要的数据 下面是资源字典的一些代码 名称空间的列表C# 标记在XML命名空间中不存在,c#,silverlight,xaml,resourcedictionary,C#,Silverlight,Xaml,Resourcedictionary,这个错误似乎到处都是,但每个错误似乎都有自己的解决方案,没有一个解决了我的问题 我正在制作(以及以后合并)的资源字典中出现错误,即标记“ModelBindings”不存在于XML命名空间“clr namespace:Company.Project.Module.Folder”中;assembly=公司.项目.模块' 我引用的程序集是自定义的,包含在解决方案中。不仅如此,我们还查看了放入资源字典所在项目bin中的dll,检查后它包含了我要引用的类。所以我知道1。dll位于要访问的正确位置,并且位于
xmlns:modulemodel="clr-namespace:Company.Project.Module.Folder;assembly=Company.Project.Module"
创建要引用的资源
<modulemodel:ModelBindings x:Key="ModuleModelBindings"/>
就像其他人的错误一样,intellisense说它是犹太的。此外,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,则会发生相同的错误
app.xaml和上面的SharedResourceDictionary分别位于名称空间Company.Project.Main中,它引用了定义SharedResourceDictionary的位置以及我在上面代码中输入的不同模块项目
解决方案
看起来主要是用户错误。但这可能发生在其他人身上。当我从原始文件复制xmlns:moduleviewmodel定义时,我必须自己添加assembly=部分。就像我说的,我自己做的,并且通过键入“xmlns:moduleviewmodel=”使用自动完成。在发现错误之前,我们再次尝试自动完成,因为我们发现7个名称空间中有一个没有生成错误。就在那时,我注意到汇编路径中有一个字母没有大写,应该是。奇怪的是,自动完成实际上自己插入了这个错误。在我们编辑时,我注意到了那封错误的信。更奇怪的是,在我手动修复所有路径后,我们再次尝试自动完成,并且拼写正确 我不知道自动完成错误的原因,但是用固定字母编译就可以了
现在我只是想知道是否有人会相信自动完成正在改变我 看起来主要是用户错误。但这可能发生在其他人身上。当我从原始文件复制
xmlns:moduleviewmodel
定义时,我必须自己添加assembly=部分。就像我说的,我自己做的,并且通过键入“xmlns:moduleviewmodel=”使用自动完成。在发现错误之前,我们再次尝试自动完成,因为我们发现7个名称空间中有一个没有生成错误。就在那时,我注意到汇编路径中有一个字母没有大写,应该是。奇怪的是,自动完成实际上自己插入了这个错误。在我们编辑时,我注意到了那封错误的信。更奇怪的是,在我手动修复所有路径后,我们再次尝试自动完成,并且拼写正确
我不知道自动完成错误的原因,但是用固定字母编译就可以了
现在我只是想知道是否有人会相信自动完成正在改变我 根据,您只需执行以下操作:
发件人:
xmlns:ZZZ=“clr命名空间:YYY;assembly=YYY”
致:
xmlns:ZZZ=“clr命名空间:YYY;程序集=”
为程序集保留空值=
这是适合我的解决方案。我有一个完全不同的错误原因: 我试图使用程序集a中的类,因此 1) 将对此程序集的引用添加到我的项目中 2) 将对程序集A使用的程序集B的引用添加到我的项目中 3) 添加到我的XAML
xmlns:assemblyA="clr-namespace:A;assembly=A"
3) 添加到我的代码中
using A;
这不起作用,我得到了这个“标签不存在”错误
有帮助的是添加
using B;
在我的代码中,虽然我没有直接使用程序集B中的任何内容。这可能不是您问题的解决方案,但我看到您经常询问的错误,而问题通常是由加载程序集的问题引起的 如果您检查汇编,并且它附带了一个黄色三角形,那么它可能与您当前的项目设置不兼容,原因是.NET的不同版本或类似的东西
这通常会无声地失败,或者只会引起警告;当您尝试在XAML中引用程序集时,您将得到一个如您所述的错误。检查错误列表中的警告,在我的例子中,其中包含有关未解析的.Net 4.5.1引用的消息,虽然我的项目目标框架是4.5,但如果您在与WPF表单相同的程序集中拥有用户控件,请确保在导入命名空间时除去程序集部分
xmlns:modulemodel="clr-namespace:Company.Project.Module.Folder;assembly=Company.Project.Module"
导入错误:xmlns:usercontrol=“clr命名空间:CCFARKS.UserControls;assembly=CCFARKS”
Corret:xmlns:usercontrol=“clr namespace:CCFARKS.UserControls”这是一个老问题,但问题是
<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>
…