That's one of the very real problems (among many) with NuGet. They want to base upgrade logic, etc. on "semantic versioning" rules but their 'default' interpretation of "=1.2.3" for the versions of dependencies is in contravention to those very rules :(
The meaning of semantic versioning is precisely that 3.x and 4.x are *explicitly* permitted to contain breaking changes. But when you say your package depends on NH version "=3.1.1." you are in fact only stating "at least 3.1.1 and *anything* that might come after it". Since its *impossible* for an author of a package that depends on the work of another to be able to really *ever* make that statement (predicting the future, as it were), it turns out that "=1.2.3" is almost NEVER the proper thing to use when declaring your dependencies. But of course most package authors don't fully reason this through and mostly without realizing the implication quite happily state "=1.2.3" all over the place for their dependencies :( The only way "=1.2.3" (meaning "1.2.3 or later") would be the right thing to say was if the meaning of "or later" only went as far as the *semantic versioning* rules permitted it to assume. So in the case of "=1.2.3" the meaning would have to become "version 1.2.3 or later up to but NOT INCLUDING 2.0 or later" (since changing the first numeral is the 'break point' at which backward compatibility can no longer be assumed). Unfortunately, this *isn't* the way nuget behaves when interpreting "=1.2.3" today and so the vast majority of existing packages are presently mostly broken in re: their statements of dependency versions :( I infer that there are too many existing packages out there for NuGet to properly begin to respect semantic versioning rules re: updates at this late date and this is probably why the team has chosen to leave this (still) broken... -Steve B. Steve Bohlen [email protected] http://blog.unhandled-exceptions.com http://twitter.com/sbohlen On Tue, Mar 19, 2013 at 8:11 AM, Diego Mijelshon <[email protected]>wrote: > They should do that only if they determine they're not compatible with 4.0. > Otherwise, they'd be unnecessarily limiting their end users. > > > On Tue, Mar 19, 2013 at 6:44 AM, Ramon Smits <[email protected]>wrote: > >> Nuget does not auto update stuff so it is safe to release a new package. >> >> However, when other packages have a dependancy to NHibernate 3 and they >> didn't set the correct dependancy version then they will automatically >> update to the latest version instead of updating to the latest non breaking. >> >> http://docs.nuget.org/docs/reference/versioning >> >> So they should target like this: >> >> <dependency id="ExamplePackage" version="[3,4)" /> >> >> >> And not like: >> >> <dependency id="ExamplePackage" version="3" /> >> >> or not specify a version at all. >> >> >> >> -- Ramon >> >> >> On Mon, Mar 18, 2013 at 6:21 PM, Oskar Berggren <[email protected] >> > wrote: >> >>> Does anyone know... >>> >>> If we release NHibernate 4.x under the existing "NHibernate" Nuget >>> package name, containing binaries only for .Net 4.0, is the Nuget >>> client smart enough to suggest an update only for projects that >>> actually target .Net 4.0? Or will it try to update also projects that >>> target .Net 3.5? >>> >>> /Oskar >>> >>> -- >>> >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "nhibernate-development" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >>> >>> >> -- >> >> --- >> You received this message because you are subscribed to the Google Groups >> "nhibernate-development" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> >> > > -- > > --- > You received this message because you are subscribed to the Google Groups > "nhibernate-development" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- --- You received this message because you are subscribed to the Google Groups "nhibernate-development" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
