检测到绑定失败'Microsoft.Practices.EnterpriseLibrary.Validation'

l--*_*''' 6 c# error-handling exception

这个项目的建设正在我朋友的电脑上工作但不在我的电脑上.

在这条回程线上:

protected static Database Connection2
{
    get
    {
        try
        {
            return DatabaseFactory.CreateDatabase("HermesDB");
        }
        catch (Exception e)
        {
            //Corpnet.Elmah.Error.Add(e);
            return null;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

显示名称为"Microsoft.Practices.EnterpriseLibrary.Validation"的程序集无法加载到ID为1的AppDomain的"加载"绑定上下文中.失败的原因是:System.IO.FileNotFoundException:无法加载文件或程序集'Microsoft.Practices.EnterpriseLibrary.Validation'或其依赖项之一.该系统找不到指定的文件.文件名:'Microsoft.Practices.EnterpriseLibrary.Validation'

===预绑定状态信息===日志:用户= MLABS\agordon日志:DisplayName = Microsoft.Practices.EnterpriseLibrary.Validation(Partial)日志:Appbase = file:/// C:/ Documents and Settings/agordon /我的文档/项目/ BulkUploadToLOMDatabase/BulkUploadToLOMDatabase/bin/Debug/LOG:Initial PrivatePath = NULL调用程序集:Microsoft.Practices.EnterpriseLibrary.Common,Version = 5.0.414.0,Culture = neutral,PublicKeyToken = null.===日志:此绑定在默认加载上下文中启动.日志:使用应用程序配置文件:C:\ Documents and Settings\agordon\My Documents\Projects\BulkUploadToLOMDatabase\BulkUploadToLOMDatabase\bin\Debug\BulkUploadToLOMDatabase.vshost.exe.config日志:使用c:\​​ WINDOWS\Microsoft中的计算机配置文件. NET \框架\ V2.0.50727\CONFIG\machine.config中.日志:此时策略未应用于引用(私有,自定义,部分或基于位置的程序集绑定).日志:尝试下载新的URL文件:/// C:/ Documents and Settings/agordon/My Documents/Projects/BulkUploadToLOMDatabase/BulkUploadToLOMDatabase/bin/Debug/Microsoft.Practices.EnterpriseLibrary.Validation.DLL.日志:尝试下载新的URL文件:/// C:/ Documents and Settings/agordon/My Documents/Projects/BulkUploadToLOMDatabase/BulkUploadToLOMDatabase/bin/Debug/Microsoft.Practices.EnterpriseLibrary.Validation /Microsoft.Practices.EnterpriseLibrary.Validation. DLL.日志:尝试下载新的URL文件:/// C:/ Documents and Settings/agordon/My Documents/Projects/BulkUploadToLOMDatabase/BulkUploadToLOMDatabase/bin/Debug/Microsoft.Practices.EnterpriseLibrary.Validation.EXE.日志:新的URL文件的尝试下载:/// C:/ Documents和设置/ agordon /我的文档/项目/ BulkUploadToLOMDatabase/BulkUploadToLOMDatabase /斌/调试/ Microsoft.Practices.EnterpriseLibrary.Validation/Microsoft.Practices.EnterpriseLibrary.Validation.可执行程序.

这里有我所有的参考资料:

在此输入图像描述

我确实下载了最新的企业库并安装它,我在上面的图片中替换了所有更新版本的DLLS.

我究竟做错了什么?

ouf*_*lak 11

好吧,我找到了解决方案.我永远不能接受将异常作为答案.只是看起来有些不对......

似乎正在发生的事情是,在以前的程序集或当前程序集的先前版本中,某些引用是在外部使用的.尽管你的代码可能早已放弃了这些引用,但在程序集中搜索的名称仍然是某些神秘的东西.

转到AssemblyInfo.cs文件并找到ThemeInfo:

[assembly: ThemeInfo(
ResourceDictionaryLocation.ExternalAssembly, //where theme specific resource dictionaries are located
//(used if a resource is not found in the page, 
// or application resource dictionaries)
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
//(used if a resource is not found in the page, 
// app, or any theme specific resource dictionaries))]
Run Code Online (Sandbox Code Playgroud)

将第一个位置更改为"无":

[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
//(used if a resource is not found in the page, 
// or application resource dictionaries)
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
//(used if a resource is not found in the page, 
// app, or any theme specific resource dictionaries))]
Run Code Online (Sandbox Code Playgroud)

并保持您的例外开启!我将把这个答案发给这个类似性质的各种问题.


SLa*_*aks 8

这不是致命的错误; 它是一个托管调试助手,提醒您潜在的问题.
转到Debug,Exceptions并取消选中它.

您也可以按下F5继续执行.


小智 2

我的项目中的一个程序集也遇到了类似的问题。就我而言,这是由 bin/debug 文件夹中不可用的程序集 (dll) 引起的。这是通过使用 NuGet 在父项目中安装引用的程序集来解决的,它在重建时在项目的 bin/debug 文件夹中创建了一个 dll。您还可以尝试将 dll 从 dll 的原始位置复制并粘贴到解决方案的 bin/debug 文件夹中。

以下是我解决问题所采取的步骤。

  • MSDN 文档提供了一些有关加载融合日志以查看哪些程序集绑定处于活动状态的建议。我使用的MSDN文档的链接是 绑定失败 融合日志

(您必须以管理员身份启动融合日志查看器,这允许您在融合日志查看器中更改设置以显示程序集绑定。网上有足够的资源介绍如何使用融合查看器)

  • 找出引用的dll的位置并检查它是否在那里。
  • 将 dll 复制并粘贴到正确的位置。
  • 重建解决方案

    C# 错误处理