Msbuild 无法从另一个具有SQL持久性的服务托管NServiceBus Saga
我正试图在另一个项目中使用NServiceBus6,通过Msbuild 无法从另一个具有SQL持久性的服务托管NServiceBus Saga,msbuild,nservicebus,nservicebus-sagas,Msbuild,Nservicebus,Nservicebus Sagas,我正试图在另一个项目中使用NServiceBus6,通过SqlPersistence和sqldialent.MsSqlServer来主持一个项目中的传奇故事。在我发现的大多数例子中,这个传奇故事都包含在与托管应用程序相同的程序集中,也许这就是我为什么如此挣扎的原因 在同一个应用程序中托管所有内容时,NServiceBus.Persistence.Sql.MsBuild包在生成过程中正确输出Saga.Sql文件,然后拾取这些文件并在运行时执行。使用单独的应用程序,只生成发件箱、订阅和超时.sql文
SqlPersistence
和sqldialent.MsSqlServer
来主持一个项目中的传奇故事。在我发现的大多数例子中,这个传奇故事都包含在与托管应用程序相同的程序集中,也许这就是我为什么如此挣扎的原因
在同一个应用程序中托管所有内容时,NServiceBus.Persistence.Sql.MsBuild
包在生成过程中正确输出Saga.Sql
文件,然后拾取这些文件并在运行时执行。使用单独的应用程序,只生成发件箱
、订阅
和超时
.sql
文件,而不是Saga文件。然后在运行时记录以下条目:
信息NServiceBus.Persistence.Sql.Installer目录'[PATH]\SagaPersistence\Service\bin\Debug\NServiceBus.Persistence.Sql\MsSqlServer\Sagas'未找到,因此不会执行任何saga创建脚本
完整的VS 2017复制可在上找到
首先,从另一个服务托管一个传奇,而不是自托管,这是一个坏主意吗?如果没有,是否有人可以建议解决SQL持久性问题的最佳方法?是否可以将
NServiceBus.Persistence.SQL.MsBuild
添加到Saga
项目中?然后应该在那里找到脚本。不幸的是,它们没有被复制到主机及其文件夹中,因此您必须将它们从那里带到生产环境中。或者像您已经在做的那样,使用启用安装程序生成它们。我后来意识到,Saga脚本将在第二个项目上输出到bin
文件夹,但仅在重建
时输出。在Build
或Debug
上,文件被清除。您可以将NServiceBus.Persistence.Sql
包直接添加到宿主项目中。这将获得在宿主项目的bin
文件夹下创建的SQL脚本。