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

时间:2011-06-26 11:20:55

标签: wpf xaml user-controls reference

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

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

xmlns:MyControl="clr-namespace:xx.xx.xx;assembly=xx.xx"

然后这个:

<WindowsFormsHost><MyControl:control></MyControl:control></WindowsFormsHost>

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

修改

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

6 个答案:

答案 0 :(得分:42)

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

Change Your Target Framework to the Full Version

答案 1 :(得分:21)

当我在命名空间定义中包含程序集名称时,发生了这种情况,但两个控件都在同一个程序集中。只需删除命名空间声明的程序集部分即可解决它。

答案 2 :(得分:14)

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

答案 3 :(得分:5)

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

答案 4 :(得分:1)

我遇到了同样的“无法找到类型或命名空间名称'xx'......”问题。

我在本地驱动器上移动Visual Studio文件时,它会消失。它们之前存储在共享网络目录中。我不知道这个的根本原因,但至少我可以让我的设计师现在运行。

答案 5 :(得分:0)

之前我遇到过这个问题,只用<MyControl:control></MyControl:control>替换<MyControl:control/>为我解决了这个问题。

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