在 Portable Class Library PCL 中有 NServiceBus 消息

Having NServiceBus messages in Portable Class Library PCL

有没有办法用 NServiceBus 消息创建一个 PCL(就像你可以为 ServiceStack 做的那样)?我尝试添加 NuGet 包,但我似乎不支持 Xamarin

Install-Package NServiceBus

Install failed. Rolling back...
Package 'NServiceBus 5.2.5' does not exist in project 'RZ.Services.ServiceModel'
Install-Package : Could not install package 'NServiceBus 5.2.5'. You are trying to install this package into a project that targets     '.NETPortable,Version=v4.5,Profile=Profile7', but the package does not contain     any assembly references or content files that are compatible with that framework. For more information, contact the package author.
At line:1 char:16
+ Install-Package <<<<  NServiceBus
    + CategoryInfo          : NotSpecified: (:) [Install-Package], Exception
    + FullyQualifiedErrorId :     NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand

未来有任何解决方案来支持这一点吗?我们确实永远不会在其他平台上使用 NServiceBus,但我们可能希望同时使用 NServiceBus 和 ServiceStack 来支持不同的场景,并且由于它们将共享消息,因此必须将它们放在一个 class 库中。

可能最好不要为您的消息引用 NServiceBus,最好使用 非干扰模式

在此处查看文档:http://docs.particular.net/nservicebus/messaging/unobtrusive-mode

这可以确保您的消息不必继承自任何 NServiceBus 标记接口。

要配置非干扰模式,请参阅以下部分从 doco 复制的示例:

BusConfiguration busConfiguration = new BusConfiguration();
ConventionsBuilder conventions = busConfiguration.Conventions();
conventions.DefiningCommandsAs(t => t.Namespace != null && t.Namespace == "MyNamespace" && t.Namespace.EndsWith("Commands"));
conventions.DefiningEventsAs(t => t.Namespace != null && t.Namespace == "MyNamespace" && t.Namespace.EndsWith("Events"));
conventions.DefiningMessagesAs(t => t.Namespace != null && t.Namespace == "Messages");