I think just go with self hosting https://github.com/SimonCropp/NServiceBus.SelfHost#self-host
see sample code for a self host below
The "service features" of the NSB host can be substituted by calls to sc.exe https://github.com/SimonCropp/NServiceBus.SelfHost#install--uninstall
class ProgramService : ServiceBase
{
IStartableBus bus;
static void Main()
{
using (var service = new ProgramService())
{
// so we can run interactive from Visual Studio or as a service
if (Environment.UserInteractive)
{
service.OnStart(null);
Console.WriteLine("\r\nPress any key to stop program\r\n");
Console.Read();
service.OnStop();
}
else
{
Run(service);
}
}
}
protected override void OnStart(string[] args)
{
Configure.GetEndpointNameAction = () => "SelfHostSample";
bus = Configure.With()
.DefaultBuilder()
.UnicastBus()
.CreateBus();
bus.Start(Startup);
}
static void Startup()
{
//Only create queues when a user is debugging
if (Environment.UserInteractive && Debugger.IsAttached)
{
Configure.Instance.ForInstallationOn<Windows>().Install();
}
}
protected override void OnStop()
{
if (bus != null)
{
bus.Shutdown();
}
}
}