由于内部版本号不匹配,无法加载程序集

时间:2018-07-26 12:30:00

标签: c# .net entity-framework-core .net-standard

目前正在对我的项目进行重组,这样我就可以针对多个框架。
目前,我的解决方案的结构是这样的

MyProject (Solution)
    MyProject.Server (Project targeting net462)
    MyProject.Models (Project targeting netstandard2.0)
    MyProject.DataAccess (Project targeting netstandard2.0)

模型和DataAcces都通过NuGet引用Pomelo.EntityFrameworkCore.MySql, Version=2.1.1.0
当DataAccess包含UnitOfWork模式时,模型将保存我的数据库模型和数据库上下文。
当所有项目都以netfx为目标并且使用EntityFramework 6进行数据库连接时,此方法运行良好。
这些项目的构建都很好,并且启动它们没有任何问题(我应该在这里提到,我的项目是一种用于多人修改的资源。资源文件的加载方式如下:https://github.com/GTANetworkDev/platform/blob/master/Server/Resources.cs#L198 {{1} }在这种情况下为false)。
但是一旦我的资源想要打开与数据库的连接,我就会得到一个很大的异常,告诉我ourResource.Info.Info.Shadowcopy由于版本不匹配(https://hastebin.com/wodojakure.log)而无法加载。
文件System.ComponentModel.Annotations, Version=4.2.0.0存在,但具有以下属性

System.ComponentModel.Annotations.dll

我已经尝试使用AssemblyVersion=4.2.1.0 AssemblyFileVersion=4.6.26515.06 重新绑定失败的程序集,原因是我不太了解。

app.config

app.config与其他资源dll放在同一文件夹中,在服务器可执行文件所在的同一文件夹中。

1 个答案:

答案 0 :(得分:0)

解决方案是,可执行文件(然后调用我的dll)需要一个配置文件,您可以在其中指定绑定重定向,而不是所调用的dll本身。

现在,它就像一种魅力。感谢您尝试解决该问题的人们。