尝试为 sagas 设置 SQLite DB 时,启动 NServiceBus Host 项目会引发错误
我的 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.HandleResourceStreamMissing (字符串文件名)
在 System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(文化 eInfo文化,Dictionary`2 localResourceSets,布尔tryParents, 布尔创建eIfNotExists、StackCrawlMark&堆栈标记)在 System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo 请求 tedCulture,布尔值 createIfNotExists,布尔值 tryParents, StackCrawlMark&堆栈标记)位于 System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo 文化、布尔值 createIfNotExists、布尔值 tryParents) at System.Resources.ResourceManager.GetString(字符串名称,CultureInfo 文化)在 System.Data.SQLite.SR.get_Keywords() 中 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(字符串 集合名称,字符串[]限制值)中 c:\dev\sqlite\dotnet\System.Data.SQLite\SQLiteConnecti on.cs:第 1223 行 在 System.Data.SQLite.SQLiteConnection.GetSchema(字符串 集合名称)在 c: \dev\sqlite\dotnet\System.Data.SQLite\SQLiteConnection.cs:第 1176 行
在 NHibernate.Dialect.Schema.AbstractDataBaseSchema.GetReservedWords() 在 NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.GetReservedWords(方言 方言、IConnectionHelper 连接助手)位于 NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.Update(ISessionFactory 会话工厂)位于 NHibernate.Impl.SessionFactoryImpl..ctor(配置cfg,IMapping 映射、Settings 设置、EventListeners 侦听器)位于 NHibernate.Cfg.Configuration.BuildSessionFactory() 在 FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory()
版本:
- NServiceBus 2.5.0.1496
- System.Data.Sqlite 1.0.74.0
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
此版本的 SQLite for .NET 作为 2 个 dll 分发:
这两个 dll 需要与 EXE 位于同一文件夹中。 Interop dll 是特定于平台的,因此您必须手动(或构建后)复制 x86 或 x64 版本。
另一件需要记住的事情是 SQLite.Interop.dll 它依赖于 MSVCR100.DLL(Visual C++ 2010 SP1 Redistributable Package 的一部分)。您可以在此处获取:
请注意,SQLite for .NET 3.5 需要 Visual C++ 2008 SP1 运行时。您可以使用 Dependency Walker 确认 Interop 程序集具有所有必需的依赖项。
可以找到此问题的解决方法 这里。但不应用解决方法来解决问题可能是个好主意。
This version of SQLite for .NET is distributed as 2 dlls:
Both dlls need to be present in the same folder as your EXE. Interop dll is platform specific so you have to manually (or Post-build) copy x86 or x64 version.
Another thing to keep in mind is that SQLite.Interop.dll itslef depends on MSVCR100.DLL (part of Visual C++ 2010 SP1 Redistributable Package). You can get it here:
Note the SQLite for .NET 3.5 requires Visual C++ 2008 SP1 Runtime. You can confirm that Interop assembly has all the necessary dependencies using Dependency Walker.
Workaround for this issue can be found here. But it might be a good idea to resolve the issue without applying the workaround.