1

NDbUnit で NHiberanate を使用しようとしていますが、NDbUnit が MySql.Data バージョン 1.0.10.1 をロードしようとし、NHibernate がバージョン 6.2.2.0 をロードしようとして、そのうちの 1 つしか参照できないため、使用できません。

NDbUnit を実行しようとしたときに表示されるエラーは次のとおりです。

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

誰にもアイデアはありますか?

4

2 に答える 2

3

構成ファイルでバインディング リダイレクトを試すことができます。

<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>

2 つのアセンブリが異なるキーで署名されている場合、これは機能しない可能性があります。また、V1 と V6 の間のギャップはかなり大きいようです。依存するメソッドは、これらのバージョン間で変更されるべきではありません。

実際、あなたの場合、おそらく次のようになります。

oldVersion="6.2.2.0"
newVersion="1.0.10.1"
于 2010-04-22T11:13:51.917 に答える
1

アセンブリ バインディング リダイレクトが「ハッキー」(まったくない) または「不便なほど脆い」(多くの場合そうです) と感じる場合は、NDbUnit を「目的の」MySql.Data アセンブリに対して単純に再コンパイルすることもできます (NDbUnit はオープン ソースであるため)。http://ndbunit.googlecode.comからソースを取得する

私の知る限り (NDbUnit プロジェクトの主要なコミッターとして)、MySql.Data 間に重大な変更はありません。v1x と v6x。MySql.Data アセンブリの目的は、ADO.NET スタック (IDbConnection、IDBCommand など) を構成するインターフェイス「ファミリ」の MySql 固有の実装を提供することのみであるため、定義上、MySql に互換性を破る変更が存在することはありません。 v1 から v6 への .Data アセンブリ (.NET 2.0 がリリースされて以来、MS はこれらのインターフェイスに実際には触れていないため)。

これらのインターフェースの以前の MySql.Data 実装とその後の MySql.Data 実装の唯一の違いは、サポートする予定の MySql のバージョンであり、このアセンブリの「データベースに面する」側は時間の経過とともに変化します。 BY DEFINITION のこのアセンブリに含まれるクラスの側は、あるバージョンから次のバージョンに変更することはできません。

頑張れ~!

于 2010-04-23T11:17:49.683 に答える