XML名称空间"yyy"中不存在标记"xxx"/找不到引用

May*_*aya 24 wpf xaml user-controls reference

我有一个winform usercontrol,而不是我想添加到wpf项目.

我添加了相关的引用(WindowsFormsIntegration,SystemWindowsForms和我的用户控件dll)并在我的XAML中添加了这一行:

xmlns:MyControl="clr-namespace:xx.xx.xx;assembly=xx.xx"
Run Code Online (Sandbox Code Playgroud)

然后这个:

<WindowsFormsHost><MyControl:control></MyControl:control></WindowsFormsHost>
Run Code Online (Sandbox Code Playgroud)

当我写"MyControl:"时,"控件"是自动显示的,这意味着VS识别控件并且所有引用都添加正确...但是当我编译项目时,这给了我标题中的错误.

编辑

当我编译所有项目时我非常奇怪我有错误"类型或名称空间名称"xx'找不到..."但我添加了所有引用并且VS识别命名空间以便编译器为什么不要找不到它们?如果这个问题得到解决我相信其他问题也会消失.

Moh*_*dil 42

解决方法是:转到您的项目属性,改变Target FrameworkClient Profile你使用的是.NET的完整版本,请参阅下面的图片.如果您的DLL以完整的.NET Framework为目标,并且您的WPF应用程序(主项目)以.Net Client Profile为目标,则会出现此问题.

将目标框架更改为完整版


Foo*_*ole 21

当我在命名空间定义中包含程序集名称时,这发生在我身上,但两个控件都在同一个程序集中.只是删除命名空间声明的程序集部分解决了它.


Aka*_*ava 14

Visual Studio将仅为反射加载引用,以便正确显示正确的intellisense.但是为了编译,编译器将需要你引用的dll所依赖的所有dll.因此,visual studio将显示mycontrol的intellisense,因为它可以在参考中找到它.但是你的myontrol可能会引用你可能没有添加的其他dll.您还必须在项目中添加mycontrol的依赖引用.


小智 5

也可能是您的项目之间的目标框架不同.我们使用WPF页面托管一个类库dll,它的目标是"任何CPU",但主机应用程序的目标是"x86".一旦匹配,问题便消失了.


Tom*_*age 0

我以前遇到过这个问题,并替换<MyControl:control></MyControl:control>为刚刚<MyControl:control/>为我解决的问题。

但不知道为什么。似乎第一种形式仅适用于可以包含其他控件的控件。

  • 确实如此,但问题是为什么。如果您添加了项目引用和 XML 命名空间,那么为什么编译器找不到它?尤其是当智能感知可以的时候。我很有兴趣找到这个问题的答案,我自己以前也遇到过这个问题。想知道以供日后参考。 (2认同)