Nhibernate 尝试为sagas设置SQLite DB时,启动NServiceBus主机项目会引发错误

Nhibernate 尝试为sagas设置SQLite DB时,启动NServiceBus主机项目会引发错误,nhibernate,nservicebus,system.data.sqlite,Nhibernate,Nservicebus,System.data.sqlite,我的IWantCustomInitialization实现程序上的Init()方法是 public void Init() { NServiceBus.Configure.With() .Log4Net() .DefaultBuilder() .MsmqTransport() .IsTransactional(false) .Sagas() .NHibernateSagaPersisterWi

我的
IWantCustomInitialization
实现程序上的
Init()
方法是

public void Init()
{
    NServiceBus.Configure.With()
        .Log4Net()
        .DefaultBuilder()
        .MsmqTransport()
        .IsTransactional(false)
        .Sagas()
        .NHibernateSagaPersisterWithSQLiteAndAutomaticSchemaGeneration()
        .XmlSerializer(); 

}
错误是

未通过数据库方法配置数据库。--> System.Resources.MissingManifestResourceException:找不到任何异常 适用于指定区域性或中性的资源 文化确保“System.Data.SQLite.SR.resources”正确输入 在编译时嵌入或链接到程序集“System.Data.SQLite”中, 或者所有所需的卫星组件都是可装载且完全可用的 签署。
位于System.Resources.ManifestBasedResourceGroveler.HandlerResourceStreamMissing (字符串文件名)
在System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(Culture eInfo区域性、Dictionary`2 localResourceSets、Boolean tryParents、, 布尔创建eIfNotExists,堆栈爬网标记和堆栈标记)位于 System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo 要求TED区域性、布尔createIfNotExists、布尔tryParents、, 堆栈爬网标记和堆栈标记) System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo 文化,布尔createIfNotExists,布尔tryParents)位于 System.Resources.ResourceManager.GetString(字符串名称,CultureInfo 在System.Data.SQLite.SR中获取关键字() c:\dev\sqlite\dotnet\System.Data.S QLite\SR.Designer.cs:第87行 中的System.Data.SQLite.SQLiteConnection.Schema_ReservedWords() c:\dev\sqlit e\dotnet\System.Data.SQLite\SQLiteConnection.cs:第1239行 位于System.Data.SQLite.SQLiteConnection.GetSchema(字符串 collectionName,Strin g[]restrictionValues)输入 c:\dev\sqlite\dotnet\System.Data.sqlite\SQLiteConnecti on.cs:第1223行 位于System.Data.SQLite.SQLiteConnection.GetSchema(字符串 collectionName)在c中: \dev\sqlite\dotnet\System.Data.sqlite\SQLiteConnection.cs:第1176行
位于NHibernate.dia方言.Schema.AbstractDataBaseSchema.GetReservedWords()处 在 NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.GetReservedWords(方言) 直径选择,IConnectionHelper连接助手)位于 NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.Update(ISessionFactory 会话(工厂)在 NHibernate.Impl.SessionFactoryImpl..ctor(配置cfg,IMapping mappi ng、设置、事件侦听器(侦听器) NHibernate.Cfg.Configuration.BuildSessionFactory()位于 FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory()

版本:

  • NServiceBus 2.5.0.1496
  • System.Data.Sqlite 1.0.74.0

此版本的SQLite for.NET作为两个DLL分发:

  • System.Data.SQLite.dll
  • SQLite.Interop.dll
两个DLL都需要与EXE位于同一文件夹中。互操作dll是特定于平台的,因此您必须手动(或后期生成)复制x86或x64版本

另一个要记住的是,<强> SQLite .Inop.DLL>强> ITSLF依赖于<强> MsVCR100.DLL>强(部分Visual C++ 2010 SP1可重分发包)。你可以在这里找到它:

<> P>注意.NET 3.5的SQLite需要Visual C++ 2008 SP1运行时。您可以使用确认互操作程序集具有所有必要的依赖项


可以找到此问题的解决方法。但是,在不应用解决方法的情况下解决此问题可能是一个好主意。

此版本的SQLite for.NET作为两个DLL分发:

  • System.Data.SQLite.dll
  • SQLite.Interop.dll
两个DLL都需要与EXE位于同一文件夹中。互操作dll是特定于平台的,因此您必须手动(或后期生成)复制x86或x64版本

另一个要记住的是,<强> SQLite .Inop.DLL>强> ITSLF依赖于<强> MsVCR100.DLL>强(部分Visual C++ 2010 SP1可重分发包)。你可以在这里找到它:

<> P>注意.NET 3.5的SQLite需要Visual C++ 2008 SP1运行时。您可以使用确认互操作程序集具有所有必要的依赖项


可以找到此问题的解决方法。但是在不应用变通方法的情况下解决这个问题可能是一个好主意。

我知道,我在一台64位计算机上,我引用了sqlite dll&编译后步骤复制了互操作。我有C++包,甚至尝试使用32位版本,只是踢,它没有工作,没有做,也不幸的是,我猜你必须使用过程资源管理器和依赖性沃克来验证所有的依赖性已经加载。看起来像你在塞尔维亚运行?(SR)文化。你能试着改用英国文化吗?我知道,我在一台64位机器上,我引用了sqlite dll&编译后步骤复制了互操作。我有C++包,甚至尝试使用32位版本,只是踢,它没有工作,没有做,也不幸的是,我猜你必须使用过程资源管理器和依赖性沃克来验证所有的依赖性已经加载。看起来像你在塞尔维亚运行?(SR)文化。你能试着改用英国文化吗?