ABP项目:未能加载文件或程序集“Castle.Core, Version=4.1.1.0, Culture=neutral”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配

运行ABP MVC 版本的singlepage时,使用code first方式迁移数据库时,提现版本不对,如下所示:

PM> add-migration InitialCreate
System.IO.FileLoadException: 未能加载文件或程序集“Castle.Core, Version=4.1.1.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)
文件名:“Castle.Core, Version=4.1.1.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc” ---> System.IO.FileLoadException: 未能加载文件或程序集“Castle.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)
文件名:“Castle.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc”

警告: 程序集绑定日志记录被关闭。
要启用程序集绑定失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD)设置为 1。
注意: 会有一些与程序集绑定失败日志记录关联的性能损失。
要关闭此功能,请移除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。

   在 System.Signature.GetSignature(Void* pCorSig, Int32 cCorSig, RuntimeFieldHandleInternal fieldHandle, IRuntimeMethodInfo methodHandle, RuntimeType declaringType)
   在 System.Reflection.RuntimeMethodInfo.FetchNonReturnParameters()
   在 System.Reflection.RuntimeMethodInfo.GetParametersNoCopy()
   在 System.Reflection.RuntimePropertyInfo.GetIndexParametersNoCopy()
   在 System.Reflection.RuntimePropertyInfo.GetIndexParameters()
   在 System.Data.Entity.Internal.DbSetDiscoveryService.<>c.b__4_1(PropertyInfo p)
   在 System.Linq.Enumerable.WhereArrayIterator`1.MoveNext()
   在 System.Data.Entity.Internal.DbSetDiscoveryService.GetSets()
   在 System.Data.Entity.Internal.DbSetDiscoveryService.InitializeSets()
   在 System.Data.Entity.DbContext.InitializeLazyInternalContext(IInternalConnection internalConnection, DbCompiledModel model)
   在 Abp.EntityFramework.AbpDbContext..ctor(String nameOrConnectionString)
   在 Sample.ABPMVCAngular.EntityFramework.ABPMVCAngularDbContext..ctor() 位置 D:\CodeRepository\Learning\ABP\Sample.ABPMVCAngular\5.0.0\src\Sample.ABPMVCAngular.EntityFramework\EntityFramework\ABPMVCAngularDbContext.cs:行号 27
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   在 System.Data.Entity.Infrastructure.DbContextInfo.CreateInstance()
   在 System.Data.Entity.Infrastructure.DbContextInfo..ctor(Type contextType, DbProviderInfo modelProviderInfo, AppConfig config, DbConnectionInfo connectionInfo, Func`1 resolver)
   在 System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration, DbContext usersContext, DatabaseExistenceState existenceState, Boolean calledByCreateDatabase)
   在 System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration)
   在 System.Data.Entity.Migrations.Design.MigrationScaffolder..ctor(DbMigrationsConfiguration migrationsConfiguration)
   在 System.Data.Entity.Infrastructure.Design.Executor.CreateMigrationScaffolder(DbMigrationsConfiguration configuration)
   在 System.Data.Entity.Infrastructure.Design.Executor.ScaffoldInternal(String name, DbConnectionInfo connectionInfo, String migrationsConfigurationName, Boolean ignoreChanges)
   在 System.Data.Entity.Infrastructure.Design.Executor.Scaffold.<>c__DisplayClass0_0.<.ctor>b__0()
   在 System.Data.Entity.Infrastructure.Design.Executor.OperationBase.<>c__DisplayClass4_0`1.b__0()
   在 System.Data.Entity.Infrastructure.Design.Executor.OperationBase.Execute(Action action)

排查过程,根据提示,是找不到 Version=4.1.1.0的Castle.Core程序集。

  • 查看.EntityFramework与.Core项目的nuget程序包,发现Castle.Core都是4.4.0版本
  • 两个项目下的app.config文件中引用的是4.1.1.0版本,而packages.config中用的都是4.4.0版本,如下,得出的结论:系统中加载使用的的是4.4.0版本。而配置中还是使用旧的4.1.1.0版本。
--app.config

        
        


--packages.config

结论:

只需要将.EntityFramework与.Core项目中的app.config配置改为4.4.0版本即可,如下

      
        
        
      

 

你可能感兴趣的:(ABP)