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

时间:2011-07-14 18:26:25

标签: c# exception error-handling

这个项目的建设正在我朋友的电脑上运行但不在我的电脑上。

在这条回程线上:

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

我收到以下错误:

  

具有显示名称的程序集   无法加载“Microsoft.Practices.EnterpriseLibrary.Validation”   具有ID 1的AppDomain的“加载”绑定上下文   失败的原因是:System.IO.FileNotFoundException:无法加载文件   或汇编'Microsoft.Practices.EnterpriseLibrary.Validation'或一个   它的依赖关系。该系统找不到指定的文件。文件   name:'Microsoft.Practices.EnterpriseLibrary.Validation'

     

===预绑定状态信息===日志:用户= MLABS \ agordon日志:DisplayName = Microsoft.Practices.EnterpriseLibrary.Validation   (部分)LOG:Appbase = file:/// C:/ Documents and Settings / agordon / My   文件/项目/ BulkUploadToLOMDatabase / BulkUploadToLOMDatabase /斌/调试/   日志:初始PrivatePath = NULL调用程序集:   Microsoft.Practices.EnterpriseLibrary.Common,Version = 5.0.414.0,   Culture = neutral,PublicKeyToken = null。   ===日志:此绑定在默认加载上下文中启动。日志:使用应用程序配置文件:C:\ Documents and Settings \ agordon \ My   文档\项目\ BulkUploadToLOMDatabase \ BulkUploadToLOMDatabase \ BIN \调试\ BulkUploadToLOMDatabase.vshost.exe.config   日志:使用来自的机器配置文件   C:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727 \ CONFIG \ machine.config中。   日志:此时政策未适用于参考(私人,   自定义,部分或基于位置的程序集绑定)。日志:正在尝试   下载新的URL文件:/// C:/ Documents and Settings / agordon / My   文件/项目/ BulkUploadToLOMDatabase / BulkUploadToLOMDatabase /斌/调试/ Microsoft.Practices.EnterpriseLibrary.Validation.DLL。   日志:尝试下载新的URL文件:/// C:/ Documents and   设置/ agordon /我的   文件/项目/ BulkUploadToLOMDatabase / BulkUploadToLOMDatabase /斌/调试/ Microsoft.Practices.EnterpriseLibrary.Validation / Microsoft.Practices.EnterpriseLibrary.Validation.DLL。   日志:尝试下载新的URL文件:/// C:/ Documents and   设置/ agordon /我的   文件/项目/ BulkUploadToLOMDatabase / BulkUploadToLOMDatabase /斌/调试/ Microsoft.Practices.EnterpriseLibrary.Validation.EXE。   日志:尝试下载新的URL文件:/// C:/ Documents and   设置/ agordon /我的   文件/项目/ BulkUploadToLOMDatabase / BulkUploadToLOMDatabase / bin中/调试/ Microsoft.Practices.EnterpriseLibrary.Validation / Microsoft.Practices.EnterpriseLibrary.Validation.EXE。

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

enter image description here

我确实下载了最新的企业库并安装了它,我将上面所有的DLLS替换为所有更新版本的版本。

我做错了什么?

6 个答案:

答案 0 :(得分: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))]

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

[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))]

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

答案 1 :(得分:8)

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

您也可以按 F5 继续执行。

答案 2 :(得分:2)

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

这是我要解决问题的步骤。

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

(您必须以管理员身份启动Fusion Log Viewer,以便您可以更改设置。 在融合日志查看器中显示装配绑定。在线上有足够的资源介绍如何与Fusion Viewer一起使用

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

    ErrorHandling C#

答案 3 :(得分:1)

清理/bin文件夹帮我解决了这个问题

答案 4 :(得分:1)

绑定失败修复:在Visual Studio 2015中 - >选项卡调试 - > Windows的>例外设置 - >输出右下方的设置板 - >托管调试助理 - >取消检查BindingFailure

答案 5 :(得分:0)

就我而言,它是 Mysql 包。 Packages.config 有一个旧版本的列表。我删除了它并通过 nuget 重新安装,它起作用了。

无需取消选中调试异常。