无法加载文件或程序集“WPG,PublicKeyToken = null”或其依赖项之一

时间:2012-03-04 03:34:40

标签: c# wpf module prism propertygrid

我正在使用PRISM和我在CodePlex中找到的新控件:WPF Property Grid

http://wpg.codeplex.com/

当我测试DEMO时,一切顺利。

我还没有开始使用PRISM。如果我将控件放在Shell中,那也很有效。问题是如果我将控件放在一个模块中,它会抛出一个错误。

  

无法加载文件或程序集“WPG,PublicKeyToken = null”或其中之一   它的依赖关系。系统找不到指定的文件。

我真的不知道那个错误。有没有人知道如何解决它?

enter image description here

编辑:

<UserControl x:Class="ConfigurationManagerModule.Views.ConfigurationView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:prism="http://www.codeplex.com/prism"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:wpg="clr-namespace:WPG;assembly=WPG"
    >

此用户控件是模块的一部分

3 个答案:

答案 0 :(得分:4)

确保您的参考设置正确。当Project B在XAML中使用程序集(如WPG)时,我遇到了这个问题,但是Project A实际上创建了Project B类的实例。添加WPG引用到项目A是XAML解析器以这种方式工作所必需的。在项目A中引用项目B是不够的。

答案 1 :(得分:1)

我在使用Visual Studio 2010,SP1和Team Server时遇到了同样的问题。最简单的解决方案(尽管需要一整天的调试)是:

  1. 在您需要的项目/解决方案(Say ProjB)中添加引用(例如ProjA.dll)。
  2. 如果您看到与ProjB中未找到的方法相关的其他错误(与ProjA.dll相关),请转到ProjA,在解决方案资源管理器中打开它,使用“添加现有项目”添加其中的所有项目。清理并构建ProjA.dll,再次在ProjB中引用正确的dll。它应该工作!
  3. 有时,即使项目处于源代码管理中,您也可以看到它们,对它们进行处理,以及签入/签出;可以看到这种间歇性问题。

答案 2 :(得分:0)

这是一个相当普遍的错误,通常是由元素的动态构造引起的。虽然您可能已添加了对WPG程序集的引用,但还必须实现其所有依赖项。

  • 尝试查看WPG软件包的源代码,看看它是否有任何未出现在输出位置的引用。
  • 使用ILSpy之类的工具可以帮助您检查内部依赖关系。