Запуск NUnit против .Net 4.0 NHibernate через SQLite не может загрузить SQLite DLL - PullRequest
1 голос
/ 28 июля 2011

Я знаю, что это «дубликат», но ответы на все остальные посты у меня не работают.Мое сообщение об ошибке также немного отличается.

Независимо от того, что я пытаюсь, я не могу запустить SQLite.Я перепробовал все, что мог найти в net / stackoverflow и каждом наборе DLL-библиотек SQLite.

Я пробовал:

<runtime>
    <loadFromRemoteSources enabled="true" />
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="System.Data" publicKeyToken="b77a5c561934e089"/>
            <bindingRedirect oldVersion="2.0.0.0" newVersion="4.0.0.0"/>
        </dependentAssembly>
    </assemblyBinding>
</runtime>

Я также пробовал как безопасные, так и небезопасные версиибиблиотеки DLL.NUnit.exe пройдет тест, но запуск их с TestDriven.Net в Visual Studio не работает.

Полная трассировка стека, когда беглый nhibernate запускает конфигурацию:

SetUp : FluentNHibernate.Cfg.FluentConfigurationException : An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail.
  ----> System.Resources.MissingManifestResourceException : Could not find any resources appropriate for the specified culture or the neutral culture.  Make sure "System.Data.SQLite.SR.resources" was correctly embedded or linked into assembly "System.Data.SQLite" at compile time, or that all the satellite assemblies required are loadable and fully signed.
  d:\Builds\FluentNH-v1.x-nh3\src\FluentNHibernate\Cfg\FluentConfiguration.cs(232, 0) : FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory()
  C:\inetpub\wwwroot\TrunkB\Company.Tests\BaseNHibernateTest.cs(50, 0) : Company.Tests.BaseSQLiteNHibernateTest.<SetUp>b__1(IInitializationExpression x)
  C:\inetpub\wwwroot\TrunkB\Company.Tests\BaseNHibernateTest.cs(36, 0) : Company.Tests.BaseSQLiteNHibernateTest.SetUp()
  d:\CSharp\NH\NH\nhibernate\src\NHibernate\Dialect\Schema\AbstractDataBaseSchema.cs(97, 0) : NHibernate.Dialect.Schema.AbstractDataBaseSchema.GetReservedWords()
  d:\CSharp\NH\NH\nhibernate\src\NHibernate\Tool\hbm2ddl\SchemaMetadataUpdater.cs(47, 0) : NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.GetReservedWords(Dialect dialect, IConnectionHelper connectionHelper)
  d:\CSharp\NH\NH\nhibernate\src\NHibernate\Tool\hbm2ddl\SchemaMetadataUpdater.cs(17, 0) : NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.Update(ISessionFactory sessionFactory)
  d:\CSharp\NH\NH\nhibernate\src\NHibernate\Impl\SessionFactoryImpl.cs(169, 0) : NHibernate.Impl.SessionFactoryImpl..ctor(Configuration cfg, IMapping mapping, Settings settings, EventListeners listeners)
  d:\CSharp\NH\NH\nhibernate\src\NHibernate\Cfg\Configuration.cs(1246, 0) : NHibernate.Cfg.Configuration.BuildSessionFactory()
  d:\Builds\FluentNH-v1.x-nh3\src\FluentNHibernate\Cfg\FluentConfiguration.cs(227, 0) : FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory()

Я тожеполучить эту ошибку сейчас:

Company.Tests.Infrastructure.TruckRepositoryTests.CanLoadTrucksByUserIdFilter:
SetUp : System.BadImageFormatException : Could not load file or assembly 'System.Data.SQLite, Version=1.0.66.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139' or one of its dependencies. An attempt was made to load a program with an incorrect format.

Ответы [ 2 ]

4 голосов
/ 29 июля 2011
System.BadImageFormatException

Скорее всего, это означает, что вы пытаетесь загрузить 32-разрядную сборку в 64-разрядный процесс или наоборот.Я представляю, что вы работаете в 64-битной операционной системе.В этом случае программа будет работать как 64-битный процесс, если выбрана любая конфигурация ЦП.Один из NUnit и Testdriven.NET может работать как 32-разрядный, а другой 64-разрядный, который объяснит, почему один работает, а другой нет.

Убедитесь, что вы используете правильную версию Sqlite.(32-разрядный или 64-разрядный) при работе с 32/64-разрядным процессом.

ОБНОВЛЕНИЕ : для TestDriven.NET существует опция, в которой используются 32-разрядные или 64-разрядные процессы.,Перейдите в Инструменты -> Параметры -> TestDriven.NET и измените ЛЮБЫЕ тесты ЦП на использование 64-разрядных.

3 голосов
/ 12 августа 2011

У меня есть эта проблема с использованием свободного nhibernate и autoppings с sqlite, в решении .net Framework 4, я проверил на новом сайте system.data.sqlite, и это проблема, связанная с ресурсами внутри библиотеки, они уже исправлены, ноне скоро это не релиз.

Ссылка с checkin: Информация о регистрации в репозитории system.data.sqlite

Я скачал исходный код, который скомпилировал сам, итеперь он работает с автоматом в беглом nhibernate, может быть, он может помочь вам, в то время как люди system.data.sqlite ссылаются на новую версию:

Скомпилированный исходный код версии 1.0.74.0 с исправлением

...