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

发布于 2024-12-02 05:33:53 字数 2363 浏览 1 评论 0 原文

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

The Init() method on my IWantCustomInitialization implementor is

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

}

The error is

Database was not configured through Database method. --->
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 requi red are loadable and fully
signed.

at System.Resources.ManifestBasedResourceGroveler.HandleResourceStreamMissing
(String fileName)
at System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(Cultur
eInfo culture, Dictionary`2 localResourceSets, Boolean tryParents,
Boolean creat eIfNotExists, StackCrawlMark& stackMark) at
System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo
reques tedCulture, Boolean createIfNotExists, Boolean tryParents,
StackCrawlMark& stack Mark) at
System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo
cultur e, Boolean createIfNotExists, Boolean tryParents) at
System.Resources.ResourceManager.GetString(String name, CultureInfo
cultur e) at System.Data.SQLite.SR.get_Keywords() in
c:\dev\sqlite\dotnet\System.Data.S QLite\SR.Designer.cs:line 87 at
System.Data.SQLite.SQLiteConnection.Schema_ReservedWords() in
c:\dev\sqlit e\dotnet\System.Data.SQLite\SQLiteConnection.cs:line 1239
at System.Data.SQLite.SQLiteConnection.GetSchema(String
collectionName, Strin g[] restrictionValues) in
c:\dev\sqlite\dotnet\System.Data.SQLite\SQLiteConnecti on.cs:line 1223
at System.Data.SQLite.SQLiteConnection.GetSchema(String
collectionName) in c:
\dev\sqlite\dotnet\System.Data.SQLite\SQLiteConnection.cs:line 1176
at NHibernate.Dialect.Schema.AbstractDataBaseSchema.GetReservedWords()
at
NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.GetReservedWords(Dialect
dia lect, IConnectionHelper connectionHelper) at
NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.Update(ISessionFactory
sessi onFactory) at
NHibernate.Impl.SessionFactoryImpl..ctor(Configuration cfg, IMapping
mappi ng, Settings settings, EventListeners listeners) at
NHibernate.Cfg.Configuration.BuildSessionFactory() at
FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory()

Versions:

  • NServiceBus 2.5.0.1496
  • System.Data.Sqlite 1.0.74.0

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清秋悲枫 2024-12-09 05:33:53

此版本的 SQLite for .NET 作为 2 个 dll 分发:

  • System.Data.SQLite.dll
  • SQLite.Interop.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:

  • System.Data.SQLite.dll
  • SQLite.Interop.dll

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文