繁体   English   中英

“无法加载文件或程序集'Microsoft.Practices.EnterpriseLibrary.Validation”异常

[英]“Could not load file or assembly 'Microsoft.Practices.EnterpriseLibrary.Validation” exception

我在尝试使用企业库验证应用程序块时遇到以下异常:

创建用于验证的配置节处理程序时出错:无法加载文件或程序集“Microsoft.Practices.EnterpriseLibrary.Validation,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”或其依赖项之一。 定位的程序集的清单定义与程序集引用不匹配。 (来自HRESULT的异常:0x80131040)(C:\\ Documents and Settings \\ My Documents \\ Visual Studio 2008 \\ Projects \\ Testers \\ TestProject \\ web.config第12行)

我知道异常试图告诉我什么,但我无法弄清楚如何解决它。 我只安装了一个版本的企业库,这就是它(4.1.0.0),所以我看不出它是如何找到错误的版本,所以我想它是一个依赖问题。 我已经从企业库4.1中包含了“Common”,“Validation”和“ObjectBuilder2”DLL作为项目中的参考,所以我不确定我还缺少什么。 文档肯定似乎表明这就是我所需要的。

有没有办法找出依赖问题是什么?

如果有帮助,我尝试使用企业库配置工具创建验证应用程序块规则集,以验证实体框架实体中的数据。 我在Visual Studio 2008中使用ASP.NET MVC。

感谢您提供的任何帮助/指导,

克里斯

打开Fusion日志记录,查看在运行时绑定的程序集。

Hanselman最近有一篇文章,应该有助于启用日志记录和检查输出。

http://www.hanselman.com/blog/CommentView.aspx?guid=3654c8f3-c5c3-4dee-a01f-c9a8da3ef2fa

要做的另一个重要区别是,添加到项目中的引用是编译时引用,并且不会影响代码在运行时绑定的方式,除非在使用强名称程序集时指定强名称。 为了找出运行时发生的情况,您需要查看绑定日志。 日志应显示运行时在查找程序集时所做的所有尝试。 如果程序集与您的exectuable一起不在bin目录中,则很可能会查找GAC并找到它不期望的版本。

请注意,编译器在引用程序集时不会使用GAC。 因此,很可能您在项目中使用的不同版本比在GAC中安装的版本更多。

此外,通过使用Windows资源管理器查看C:\\ Windows \\ assembly,可以很容易地找到您在GAC中安装的版本。 错误消息中指定的版本将是编译期间引用的版本。 如果这些版本不匹配,那么这可能是您的问题,假设Fusion确实正在寻找GAC(通过查看Fusion日志可以看出这一点)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM