This project is read-only.
1

Closed

The EntityFramework.SqlServerCompact package does not install a release version of SQL Server Compact 4.0

description

When installing the EntityFramework.SqlServerCompact, the version of SQL 4.0 installed is 4.0 SP1 CTP1, not the RTM SP1 version. The root reason for this is probably, that the Microsoft.SqlServer.Compact package has 3 current packages published on NuGet (the 2 old SP1 CTP ones should really be removed/hidden).

Specifically, this package is installed: http://www.nuget.org/packages/Microsoft.SqlServer.Compact/4.0.8854.1

But the release version of 4.0 SP1 is this package:
http://www.nuget.org/packages/Microsoft.SqlServer.Compact/4.0.8876.1

http://erikej.blogspot.dk/2012/03/sql-server-compact-40-sp1-ctp1.html

http://erikej.blogspot.dk/2012/08/sql-server-compact-40-sp1-released-to.html

The EntityFramework.SqlServerCompact package should be updated to explicitliy require the RTM version of 4.0 SP1.
Closed Dec 17, 2014 at 7:26 PM by RoMiller

comments

ajcvickers wrote Oct 27, 2014 at 7:57 PM

Investigated this and moving for re-triage.

Our package depends on 4.0, which means we work with any package 4.0 or above. When NuGet attempts to resolve this dependency it will choose the lowest version that is satisfied. This is by design in an attempt to give the user the package closest to that which was built against. (This logic has holes, but it is the way it is, and choosing the highest version available has potentially worse issues.) So when you install our package you get 4.08854.1. This is by design from a NuGet perspective and if the user wants the latest package then the user should run "update-package". This gives 4.0.8876.1.

We could say that we depend on 4.0.8876.1 which would then cause the latest package to be installed always. But it would also block people from using the older packages. This seems bad if it is valid for people to use the older packages.

So the question becomes is it valid for people to use the older packages? If they were RTM packages, then the answer would be yes. However, from what Erik is saying it looks like they are actually pre-release packages. Unfortunately they were not uploaded as pre-release packages and so look like RTM packages on NuGet. So do we want to prevent people from using packages that are listed as released packages on the basis that we think that is incorrect?

ErikEJ wrote Oct 27, 2014 at 9:15 PM

@ajvickers - Interesting observations - My 2 cents: Yes, since the 4.0.8854.x packages are both 4.0 SP1 CTP1, I think it would be preferable to force use of 4.0 SP1, since that is the only current released and supported package. All other packages including the legacy package (SqlServerCompact) curently end up installing a non-supported version of the product (SQLCE).

So I see no valid reason to wanting to use the older package, and if you MUST, you can still do so after the fact. (The assembly version in all 4.0 packages stays at 4.0.0.0)

ajcvickers wrote Nov 6, 2014 at 7:41 PM