Msbuild 无法从另一个具有SQL持久性的服务托管NServiceBus Saga

Msbuild 无法从另一个具有SQL持久性的服务托管NServiceBus Saga,msbuild,nservicebus,nservicebus-sagas,Msbuild,Nservicebus,Nservicebus Sagas,我正试图在另一个项目中使用NServiceBus6,通过SqlPersistence和sqldialent.MsSqlServer来主持一个项目中的传奇故事。在我发现的大多数例子中,这个传奇故事都包含在与托管应用程序相同的程序集中,也许这就是我为什么如此挣扎的原因 在同一个应用程序中托管所有内容时,NServiceBus.Persistence.Sql.MsBuild包在生成过程中正确输出Saga.Sql文件,然后拾取这些文件并在运行时执行。使用单独的应用程序,只生成发件箱、订阅和超时.sql文

我正试图在另一个项目中使用NServiceBus6,通过
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脚本。