Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge the Core #2113

Closed
SimonCropp opened this issue May 18, 2014 · 3 comments
Closed

Merge the Core #2113

SimonCropp opened this issue May 18, 2014 · 3 comments
Milestone

Comments

@SimonCropp
Copy link
Contributor

@SimonCropp SimonCropp commented May 18, 2014

The NSB interfaces dll was created to allow people to have a smaller dependency when creating a messages assembly. With the introduction of unobtrusive messages that is no longer required. As such NServiceBus.dll will be merged into NServiceBus.Core.dll. Also the NServiceBus.Interfaces nuget will be deprecated.

How the NServiceBus.Interfaces nuget will be deprecated

When V5 is release a stub nuget for NServiceBus.Interfaces will be released. Located here https://www.nuget.org/packages/NServiceBus.Interfaces/5.0.0.1

This nuget has a install.ps1 that contains the following

param($installPath, $toolsPath, $package, $project)


# Need to load MSBuild assembly if it's not loaded yet.
Add-Type -AssemblyName 'Microsoft.Build, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

# Grab the loaded MSBuild project for the project
$buildProject = [Microsoft.Build.Evaluation.ProjectCollection]::GlobalProjectCollection.GetLoadedProjects($project.FullName) | Select-Object -First 1

$TargetFrameworkVersion = $buildProject.GetProperty("TargetFrameworkVersion") 
if ($buildProject.GetProperty("TargetFrameworkVersion").EvaluatedValue -eq "v4.0"){
    throw "Please upgrade the project to .net 4.5 or higher before running this package"
}

write-host "NServiceBus.Interfaces has been deprecated an is no longer required" -foregroundcolor DarkRed 
write-host "Removing NServiceBus.Interfaces..." -foregroundcolor DarkRed 

uninstall-package NServiceBus.Interfaces -ProjectName $project.Name

For all of the below scenarios result in v5 of NServiceBus installed and no NServiceBus.Interface installed

On a project with no NSB

Install NServiceBus.Interfaces v5

Install-Package NServiceBus.Interfaces

Install NServiceBus v5

Install-Package NServiceBus.Interfaces

On a project with an earlier version of NSB

Update NServiceBus.Interface to v5 a project with v4.x of NSB installed

Install-Package NServiceBus.Interfaces -Version 4.6.1
Install-Package NServiceBus -Version 4.6.1
Update-Package NServiceBus.Interfaces

Install NServiceBus.Interface v5 on a project with v4.x of NSB installed

Install-Package NServiceBus.Interfaces -Version 4.6.1
Install-Package NServiceBus -Version 4.6.1
Install-Package NServiceBus.Interfaces

Update NServiceBus to v5 a project with v4.x of NSB installed

Install-Package NServiceBus.Interfaces -Version 4.6.1
Install-Package NServiceBus -Version 4.6.1
Update-Package NServiceBus

Install NServiceBus v5 on a project with v4.x of NSB installed

Install-Package NServiceBus.Interfaces -Version 4.6.1
Install-Package NServiceBus -Version 4.6.1
Install-Package NServiceBus

Update all on a project with v4.x of NSB installed

Install-Package NServiceBus.Interfaces -Version 4.6.1
Install-Package NServiceBus -Version 4.6.1
Update-Package

To replicate these tests copy the following nugets to a local directory and use that as a nuget package source.

@SimonCropp SimonCropp added this to the 5.0.0 milestone May 18, 2014
SimonCropp added a commit that referenced this issue May 22, 2014
this is a temp binary that will be used in the transition to v5
for #2113
@distantcam

This comment has been minimized.

Copy link
Contributor

@distantcam distantcam commented Jun 16, 2014

This will also be needed for 4.7.

@sbmako

This comment has been minimized.

Copy link

@sbmako sbmako commented Jul 9, 2014

Is this implying that if we have something built with v5.0 and it subscribes to messages using the unobtrusive messages, it will continue to work with all version upgrades to NSB on the publisher side? Will the "subscription protocol" be guaranteed to work or be versioned appropriately?

And is the suggestion to use unobtrusive specifically? The reason I ask, is because It is nice that the author of the messages is strongly suggesting for example that when I publish an event, it is just that an event. If the consumer of the event has to explicitly "convert" it to a command to be able to use it in a subsequent Bus().Send().

Thoughts?

@lukemcgregor

This comment has been minimized.

Copy link

@lukemcgregor lukemcgregor commented Jul 10, 2014

I kinda agree with this change. I think there are better conventions you can use than interface decoration for defining events and commands.

That being said, this is only an issue in NSB because the interfaces package is versioned at the same rate as the rest of the framework. I don't think this should have been the case. As these are really only used for decoration I don't think its really necessary the interfaces have a version greater than semver 1.*, ie i don't think theres ever been an actual breaking change to the interfaces themselves. All NSB versions then would use the same major version of the interfaces which would remove this issue completely.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
5 participants
You can’t perform that action at this time.