为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
温温酱 2021-10-31 19:30:56
现在我正在重组我的项目,以便我能够针对多个框架。目前我的解决方案是这样结构的MyProject (Solution)    MyProject.Server (Project targeting net462)    MyProject.Models (Project targeting netstandard2.0)    MyProject.DataAccess (Project targeting netstandard2.0)模型和数据访问都Pomelo.EntityFrameworkCore.MySql, Version=2.1.1.0通过 NuGet引用。模型包含我的数据库模型和数据库上下文,而 DataAccess 包含一个 UnitOfWork 模式。当所有项目都针对 netfx 并使用 EntityFramework 6 进行数据库连接时,这很好用。这些项目构建得很好,我没有任何问题可以启动它们(我应该在这里提到,我的项目是一种多人修改的资源。资源文件像这样加载https://github.com/GTANetworkDev /platform/blob/master/Server/Resources.cs#L198 ourResource.Info.Info.Shadowcopy在这种情况下是假的)。但是一旦我的资源想要打开与数据库的连接,我就会收到一个巨大的异常,告诉我System.ComponentModel.Annotations, Version=4.2.0.0由于版本不匹配而无法加载(https://hastebin.com/wodojakure.log)。该文件System.ComponentModel.Annotations.dll存在但具有以下属性AssemblyVersion=4.2.1.0AssemblyFileVersion=4.6.26515.06我已经尝试使用 aapp.config重新绑定失败的程序集,原因我真的不知道。<?xml version="1.0" encoding="utf-8" ?><configuration>  <runtime>    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">      <dependentAssembly>        <assemblyIdentity name="System.ComponentModel.Annotations" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />         <bindingRedirect oldVersion="0.0.0.0-4.2.1.0" newVersion="4.2.1.0" />       </dependentAssembly>    </assemblyBinding>  </runtime></configuration>app.config 存在于放置其他资源 dll 的同一文件夹中以及服务器可执行文件所在的同一文件夹中。
查看完整描述

1 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

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

现在它就像一个魅力。感谢那些试图解决问题的人。


查看完整回答
反对 回复 2021-10-31
  • 1 回答
  • 0 关注
  • 277 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信