在查找资源字典时发生了错误。

22

我在App.xaml主程序集中有一个合并的资源字典,它结合了来自不同程序集的各种资源字典:Common和PresentationLayer。

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/Common;component/Themes/Button.xaml"/>
            <ResourceDictionary Source="/PresentationLayer;component/DataTemplates/AppointmentsDataTemplates.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

在运行时,资源字典中的样式会正确应用到控件上。但是,在设计时,样式不会被应用,Visual Studio 2012 会持续报以下错误:

An error occurred while finding the resource dictionary "/Common;component/Themes/Button.xaml".

并且警告:

The resource "BannerButton" could not be resolved.

我看到了这篇文章,但即使将Build Action设置为Resource,问题仍然存在。并且,在Visual Studio 2010或Expression Blend 4下运行时,我没有遇到这个问题。主程序集明确引用了Common程序集,并且我没有改变Pack URIs。


@DJ 正常的相对路径(其中资源字典位于主程序集中)可以正常工作。 - Blake Mumford
@DJ 实际上,Visual Studio 不再报错了,但设计师仍然没有应用样式。 - Blake Mumford
是的,因为你提供的路径是基于组件的。即使你解决了这个问题,你的VS也不会每次都能显示设计师。实际上,你应该使用Expression Blend或kaxaml工具来进行设计。在这些方面,VS有点痛苦。 - D J
在使用Blend 2017 Community打开并重新打开一个项目后,我遇到了同样的“错误”。重新构建该项目后,问题消失了。说实话,这些产品有时似乎非常脆弱。 - Stevens Miller
你的程序集是哪种类型?类库项目?共享项目?请告诉我。 - Starwave
显示剩余2条评论
6个回答

12

针对VS2017,如果已经引用程序集并且确保所有的命名都正确,请尝试关闭VS并删除解决方案目录中的.vs目录。这将导致您失去所有用户设置(启动项目、WPF设计师缩放等),但会解决此问题。


2
不幸的是,这在VS 2019(16.4.2)仍然相关,并且您使我免受自从几天以来发生的不稳定和令人沮丧的错误的困扰... - Yet Another Code Maker
截至版本16.8.3仍然相关。我遇到了烦人的错误消息,而且浅蓝色的下划线一直存在。关闭并重新打开解决方案可以解决这个问题。 - John Alley
是的,有时仍然需要这样做。感谢您的建议。好主意。就像重新启动一样,仍然需要这样做有点令人失望。 - JosephDoggie

8
这是关于Visual Studio 2012的一个已知问题。请参阅Microsoft Connect上的此链接。安装VS2012 Update 1后,这个问题得到了解决。如果你认为自己运行的是最新版本的VS2012,但仍然遇到此问题,请确保更新已经应用。我当时以为我使用Windows Update已经更新了,但后来发现我需要告诉VS2012应用更新。在VS2012完成更新后,一切都正常了。

2
我在程序集和项目之间的.NET版本不匹配(.NET 4客户端框架和非客户端.NET)。一旦将它们放在同一个版本上,问题就消失了,正如Andagavar提供的链接中所描述的“备选解决方案”。 - MDaldoss

4

如果您正在使用Visual Studio 2017,请尝试重新启动计算机。问题可能会得到解决。


1
我使用的Visual Studio 2019(至少版本16.8.3),在关闭并重新打开解决方案后,问题已得到解决。 - John Alley
这有时候会起作用,感谢建议。然而,需要这样做还是有些令人失望的。 - JosephDoggie

3

我在使用VS2019时出现了这个错误。

我只是重新启动了VS,然后错误就消失了。


1
尝试在Window.Resources中进行相同的操作,确保在使用app.xaml时添加了命名空间,并且不要忘记在需要使用该app.xaml的页面中将build选项更改为page

1
我曾遇到同样的问题,原因是资源字典xaml文件中有错误拼写的单词。检查资源字典xaml文件中是否存在错误拼写和错误。更正拼写后,问题得以解决。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接