簡體   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