Controlling script generation

Component: Sql Persistence
NuGet Package NServiceBus.Persistence.Sql (1.x)
Target NServiceBus Version: 6.x

SQL installation scripts are created at compile time by the NServiceBus.Persistence.Sql.MsBuild NuGet package.

Scripts will be created in the directory format of [CurrentProjectDebugDir]\NServiceBus.Persistence.Sql\[SqlVariant].

For example for a project named ClassLibrary built in Debug mode the following directories will be created.

  • ClassLibrary\bin\Debug\NServiceBus.Persistence.Sql\MsSqlServer
  • ClassLibrary\bin\Debug\NServiceBus.Persistence.Sql\MySql
  • ClassLibrary\bin\Debug\NServiceBus.Persistence.Sql\Oracle

Scripts will also be included in the list of project output files. This means those files produced will be copied to the output directory of any project that references it.

Scripts creation can configured via [SqlPersistenceSettings] applied to the target assembly.

SQL scripts are not copied to the publish directory with dotnet publish.
Projects using project.json are not supported. The project.json approach was an experiment by Microsoft at a new project system that was not based on MSBuild. Since project.json did not support running MSBuild files shipped inside a NuGet the SQL Persistence script creation does not work. This experiment has since been abandoned. To fix this either migrate back to the old Visual Studio 2015 project format (.csproj and packages.config) or migrate to the new Visual Studio 2017 project format. dotnet-migrate can help migrating to the new .csproj format.

To produce all scripts

[assembly: SqlPersistenceSettings(
    msSqlServerScripts: true,
    mySqlScripts: true)]

To produce only MS SQL Server scripts

[assembly: SqlPersistenceSettings(msSqlServerScripts: true)]

To produce only MySQL scripts

[assembly: SqlPersistenceSettings(mySqlScripts: true)]

Last modified