SqlServerTransport .NET Core no longer implements IMessageDrivenSubscriptionTransport

We’re converting our .NET Framework project to .NET Core and noticed that the SqlServerTransport in .NET Core no longer implements IMessageDrivenSubscriptionTransport. As a result, we are no longer able to register publishers with the SqlServerTransport.

.NET Framework 4.7.1 code porting to .NET Core 3.1

var transport = endpointConfiguration.UseTransport();
transport.Routing().RegisterPublisher(
assemblyRoute.AssemblyOfMessage, assemblyRoute.EndpointName);

RegisterPublish Definition:

public static void RegisterPublisher(this NServiceBus.RoutingSettings routingSettings, System.Reflection.Assembly assembly, string publisherEndpoint)
where T : NServiceBus.Transport.TransportDefinition, NServiceBus.Routing.IMessageDrivenSubscriptionTransport

The NServiceBus.Routing.IMessageDrivenSubscriptionTransport condition is no longer satisfied in .NET Core when trying to RegisterPublisher for a SQLServerTransport RouteSetting.

I’m curious what I should be doing?

(1) Was this intended/deprecated?
(a) Should/can I even perform this in .NET Core? If so, how?
(b) If this is not allowed going forward, what can I do?

Thank You in Advance!
Arthur

This doesn’t have anything to do with .NET Core specifically, but with newer versions of the SQL Server transport.

What version of the transport were you using in your .NET Framework code, and what version are you using now? I suggest taking a look at our upgrade guides that explain changes made between versions.

The specific thing it appears that you’re running into is that v5 of the transport has added native publish/subscribe support: https://docs.particular.net/transports/upgrades/sqlserver-4to5#native-publish-subscribe

In general, you don’t need to register publishers when a transport natively supports pub/sub, but the upgrade guide does have a section on backward compatibility that you should take a look at if relevant as well.

Thank you, that answers my question!