首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NDbUnit MySQL程序集版本冲突

NDbUnit MySQL程序集版本冲突
EN

Stack Overflow用户
提问于 2010-04-22 18:01:12
回答 2查看 455关注 0票数 1

我正在尝试将NHiberanate与NDbUnit一起使用,但我不能,因为NDbUnit尝试加载MySql.Data版本1.0.10.1,而NHibernate尝试加载版本6.2.2.0,而我只能引用其中之一。

下面是我尝试运行NDbUnit时得到的错误

代码语言:javascript
复制
Set Up
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)
   at NDbUnit.Core.MySqlClient.MySqlDbCommandBuilder.GetConnection(String connectionString)
   at NDbUnit.Core.DbCommandBuilder..ctor(String connectionString)
   at NDbUnit.Core.MySqlClient.MySqlDbCommandBuilder..ctor(String connectionString)
   at NDbUnit.Core.MySqlClient.MySqlDbUnitTest.CreateDbCommandBuilder(String connectionString)
   at NDbUnit.Core.NDbUnitTest.GetDbCommandBuilder()
   at NDbUnit.Core.NDbUnitTest.ReadXmlSchema(Stream xmlSchema)
   at NDbUnit.Core.NDbUnitTest.ReadXmlSchema(String xmlSchemaFile)
   at Proteus.Utility.UnitTest.DatabaseUnitTestBase.SaveDatabase(String connectionString, String schemaFilePathName, String datasetFilePathName, DatabaseClientType clientType)
   at TGS.UserAccountControlTest.UserAccountManagerTest._TestFixtureSetup() in C:\Documents and Settings\Michal\My Documents\Visual Studio 2008\Projects\TGS\TGS.UserAccountControlTest\UserAccountManagerTest.cs:line 69

有谁有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-23 19:17:50

如果程序集绑定重定向感觉“老土”(根本不是)或“不方便地脆弱”(通常如此),您还可以通过从http://ndbunit.googlecode.com获取源代码,针对“所需的”MySql.Data程序集(因为NDbUnit是开源的)重新编译NDbUnit

据我所知(作为NDbUnit项目的主要提交者),MySql.Data之间没有突破性的变化。v1x和v6x。MySql.Data程序集的目的仅仅是提供组成ADO.NET堆栈(IDbConnection、IDBCommand等)的接口“族”的特定于MySql的实现。因此,根据定义,从v1到v6的MySql.Data程序集不会有重大变化(因为自从.NET 2.0发布以来,MS还没有真正接触过这些接口)。

这些接口的早期MySql.Data和后来的MySql.Data实现之间的唯一区别是它们打算支持的MySql版本,因此,尽管此程序集的“面向数据库”的方面随着时间的推移而变化,但根据定义,此程序集中包含的类的“面向代码”的方面不能从一个版本更改到下一个版本。

祝你好运~!

票数 1
EN

Stack Overflow用户

发布于 2010-04-22 19:13:52

您可以在配置文件中尝试binding redirect

代码语言:javascript
复制
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="MySql.Data"
                          publicKeyToken="c5687fc88969c44d"
                          culture="neutral" />
        <bindingRedirect oldVersion="1.0.10.1"
                         newVersion="6.2.2.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

如果使用不同的密钥对两个程序集进行签名,则这可能不起作用。此外,V1和V6之间的差距似乎很大,您所依赖的方法不应该在这两个版本之间发生变化。

实际上,在您的情况下,它可能应该是:

代码语言:javascript
复制
oldVersion="6.2.2.0"
newVersion="1.0.10.1"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2689791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档