c# - 两个不同的程序集版本 "The located assembly' 的 list 定义与程序集引用不匹配”

标签 c# nhibernate assemblies migratordotnet

我有一个正在处理的项目需要使用 NHibernate 的 Mysql 连接器 (Mysql.Data.dll)。我还想在同一项目中引用另一个项目 (Migrator.NET)。问题是,即使 Migrator.NET 是使用特定版本 = false 的 MySql.Data 引用构建的,它仍然会尝试引用构建库时使用的旧版本 MySql.Data,而不是仅使用现有版本.. 我得到了标题中列出的异常:

----> System.IO.FileLoadException : Could not load file or assembly 'MySql.Data, Version=1.0.10.1, Culture=neutral, PublicKeyToken=c5687fc88969c44d' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

我在主程序集中引用的版本是 6.1.3.0。我如何让这两个程序集合作?

编辑:

对于那些指定程序集绑定(bind)重定向的人,我已经设置好了:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-6.1.3.0" newVersion="6.1.3.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

我在另一个项目中引用了这个主程序集,但仍然遇到同样的错误。如果我的主程序集被复制到本地以用于另一个程序集,它会使用 app.config 中的设置,还是必须将此信息包含在引用我的主程序集的每个应用程序或程序集中?

最佳答案

您正在寻找Assembly Binding Redirection .

这允许您配置应用程序以查找不同的程序集版本。

关于c# - 两个不同的程序集版本 "The located assembly' 的 list 定义与程序集引用不匹配”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2284017/

相关文章:

c# - MongoDB C# 驱动程序和 DateTime 字段

c# - 在 POST 参数中接收空值

c# - 开发始终在桌面上的 Windows 10 小部件应用程序

nhibernate - 二进制 Blob 被截断为 8000 字节 - SQL Server 2008/varbinary(max)

javascript - 输入类型文本不应是可编辑的

c# - 将 MVC 1 应用程序部署到远程服务器时 Global.asax 解析器错误

nhibernate - 我可以在NHibernate QueryOver中使用SQL函数吗?

c# - 没有强名称的 .NET 程序集是否可以防止意外损坏?

assemblies - 读取程序集 : No assembly descriptors found 时出错

wpf - 如何清除插件项目中的 WPF/XAML 类型缓存