• ABP 数据迁移初始化的坑


    问题1描述

    • ABP官方网站下载标准模版后,进行EF的数据迁移
    • 一直报错“Castle.Core 4.0.0.0”版本未能加载具体情况下下图 执行数据迁移时的错误

    尝试方法

        <dependentAssembly>
           <assemblyIdentity name="Castle.Core" publicKeyToken="407dd0808d44fbdc" culture="neutral"/>
           <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0"/>
        </dependentAssembly>
    
    • 简单粗暴的做法,去掉Castle.Core的引用 执行迁移命令【解决】 执行成功
      • 原因分析
        • EntityFramework层中并未直接使用Castle.Core,去掉后重新生成不报错

    学习到的经验

    • CLR加载DLL的策略
    • 配置文件管理与程序集的引用版本重定向
    • assemblyBinding节点下的配置说明
      • 配置代码
      <configuration>
            <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <probing privatePath="AuxFiles;binsubdir"/>
        <dependentAssembly>
          <assemblyIdentity name="JeffTypes" publicKeyToken="32ab4ba45e0a69a1" culture="neutral"/>
          <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/>
          <codeBase version="2.0.0.0" href="http://www.wintellect.com/JeffTypes.dll"/>
        </dependentAssembly>
        <dependentAssembly>
          <assemblyIdentity name="TypeLib" publicKeyToken="1f2e74e897abbcfe" culture="neutral"/>
          <bindingRedirect oldVersion="3.0.0.0-3.5.0.0" newVersion="4.0.0.0"/>
          <publisherPolicy apply="no"/>
        </dependentAssembly>
      </assemblyBinding>
            </runtime>
      </configuration>
      
      • 第一个dependentAssembly,assemlyIdentity和bindingRedirect元素查找由控制着公钥标记32ab4ba45e0a69a1的那个组织发布的、语言文化中性的JeffTypes程序集的1.0.0.0版本时,改为定位同一个程序集的2.0.0.0版本。
      • codeBase元素  查找由控制着公钥标记32ab4ba45e0a69a1的组织发布的、语言文化为中性的JeffTypes程序集的2.0.0.0版本时,尝试在以下URL处发现它:http://www.Wintellect.com/JeffTypes.dll。虽然第2章没有特别指出,但codeBase元素也能用于弱命名程序集。在这种情况下,程序集的版本号会被忽略,而且根本就不应该在XML codeBase元素中写这个版本号。此外,codeBase所定义的URL必须引用应用程序基目录下的一个子目录。
      • 第2个dependentAssembly,assemblyIdentity和bindingRedirect元素  查找由控制着公钥标记1f2e74e897abbcfe的那个组织发布的、语言文化中性的TypeLib程序集的3.0.0.0到3.5.0.0版本时(包括3.0.0.0和3.5.0.0在内),改为定位同一个程序集的4.0.0.0版本。
      • publisherPolicy元素  如果生成TypeLib程序集的组织部署了一个发布者策略文件,CLR应该忽略该文件。
  • 相关阅读:
    Python—设计模式
    Python—操作系统和多线程
    thin mission 2021 11 3
    搜索
    c++ 调试
    Lecture--words families
    高数--积分
    thin mission 2021.11.2
    tiny mission 2021.11.1
    zlib使用心得
  • 原文地址:https://www.cnblogs.com/fengshi1988/p/9491665.html
Copyright © 2020-2023  润新知