WPF:VS2012设计器显示“组件'XXX'没有由URI YYY标识的资源”

时间:2013-07-11 11:15:21

标签: wpf visual-studio designer

正如标题所暗示的那样,设计师抛出了这个错误,这意味着设计师无法正确显示我的UserControl,这反过来意味着我无法在此UserControl中从元素到元素平滑导航以进行修改。真烦人。

XXX是我的UserControl的名称,而URI YYY实际上是XXX的路径。所以我不明白它不能发现自己是资源。我搜索了这个错误,但大多数都发生在运行时。在我的情况下,当我执行它时根本不会发生。这个错误的描述真的不够解释,因为我不确定CLR中谁将文件本身作为资源加载。

另一件值得一提的是,这个错误只发生在构建我的应用程序项目之后,UserControl出现了错误。在我点击清理项目后,设计师可以显示整个内容(但显然我可以'每次我做任何改变之前都要清理项目,因为建筑需要时间)

6 个答案:

答案 0 :(得分:15)

控件的.g.cs或.g.i.cs文件可能已损坏。尝试清理,关闭visual studio并重新启动它。我认为这在几个案例中对我有帮助,特别是当我将粘贴控件从一个解决方案复制到另一个解决方案时。

答案 1 :(得分:6)

只需删除

中的子文件夹即可

%LOCALAPPDATA%\Microsoft\VisualStudio\12.0\Designer\ShadowCache

答案 2 :(得分:1)

如果您将UserControl重构为UserControl之前引用的较低级别项目,那么您将看到此错误。

从命名空间中删除程序集引用可以解决问题。

<UserControl xmlns:ui="clr-namespace:MyCompany.Core.UI;assembly=MyCompany.Core.UI"

应该是

<UserControl xmlns:ui="clr-namespace:MyCompany.Core.UI"

设计师不够聪明,不能强调这一点。

答案 3 :(得分:0)

我遇到了同样的问题,编译并运行良好,但XAML编辑/设计师抱怨。在我的例子中,我发现解决方案是我的用户控件是在XAML(x:Class =“myNamespace.myUserControl”)的命名空间中声明的,而不是在后面的代码中。在后面的代码中添加名称空间声明解决了我的问题。

答案 4 :(得分:0)

可以在第二个附加的Visual Studio中调试Visual Studio Designer。

有关详细信息,请参阅How to troubleshoot and debug Visual Studio design mode errors

答案 5 :(得分:0)

要显示UserControl,设计人员必须实例化用户控件。寻找可能的空参考例外。

在我的情况下,由于没有注入依赖项,用户控件有一个NRE。我添加了对NRE的处理,没有更多的问题。