You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已引用Microsoft.Practices.EnterpriseLibrary.Common仍遇FileNotFoundException

解决System.IO.FileNotFoundException(无法加载Microsoft.Practices.EnterpriseLibrary.Common)

这种程序集加载错误我在做Sitefinity项目时碰到过好几次,大概率是版本不匹配或者配置没跟上,给你几个实用的排查和解决步骤:

  • 检查项目引用的版本一致性
    右键你的项目→打开「引用」列表,找到Microsoft.Practices.EnterpriseLibrary.Common,查看它的属性面板里的「版本」号。如果这个版本和错误提示里的5.0.414.0不一致,要么换成Sitefinity.DAO.dll依赖的5.0.414.0版本,要么通过绑定重定向让CLR兼容版本差异。

  • 配置程序集绑定重定向
    如果你的项目必须用其他版本的EnterpriseLibrary.Common,可以在项目的app.config(桌面程序)或web.config(Web程序)中添加绑定重定向配置,让CLR自动用你实际引用的版本替代需要的5.0.414.0版本。示例配置如下:

    <configuration>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="Microsoft.Practices.EnterpriseLibrary.Common"
                              publicKeyToken="31bf3856ad364e35"
                              culture="neutral" />
            <!-- 覆盖所有低于等于5.0.414.0的版本,替换为你实际引用的版本 -->
            <bindingRedirect oldVersion="0.0.0.0-5.0.414.0"
                             newVersion="你的项目实际引用的版本号" />
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    </configuration>
    

    注意:publicKeyToken要和错误提示里的完全一致,别写错。

  • 确认程序集已复制到输出目录
    右键Microsoft.Practices.EnterpriseLibrary.Common引用→属性,把「复制本地」设置为True。重新编译项目后,去项目的bin目录(Web项目则是网站根目录的bin文件夹)检查是否存在该程序集,且版本正确。如果缺失,大概率是「复制本地」没开导致部署时没带上。

  • 排查全局程序集缓存(GAC)冲突
    打开Visual Studio的开发者命令提示符,执行命令:

    gacutil /l Microsoft.Practices.EnterpriseLibrary.Common
    

    查看GAC中是否存在该程序集的多个版本。如果有和5.0.414.0冲突的版本,要么移除不兼容的版本,要么确保绑定重定向配置能正确覆盖GAC中的版本。

  • 匹配Sitefinity的依赖要求
    因为错误来自Sitefinity.DAO.dll,要确认你使用的Sitefinity版本对Enterprise Library的版本要求。不同Sitefinity版本可能绑定了特定版本的Enterprise Library,尽量让你的项目引用的版本和Sitefinity官方要求的一致,避免不必要的兼容性问题。

内容的提问来源于stack exchange,提问作者Mauricio Gracia Gutierrez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:09:37