Discussion:
SQL Compact 3.5 + Compact Managed 2.0 ???
(too old to reply)
Phil H
2009-07-17 14:15:01 UTC
Permalink
I'm upgrading a platform to use SQL Compact for CF3.5
We previously included all the files manually, but I've upgraded everything
I can find and removed all the manual file entries.
All the dlls seem to get copied to the image fine.

However, the image was 2MB larger than expected, and I found that SQL
Compact is correctly dependant upon CF3.5, but the Compact Managed Provider
is still dependant upon CF2.0 !

All help gratefully received, as I have spent most of the day browsing for
posts about anything like this.
Phil H
2009-07-20 08:37:01 UTC
Permalink
Well, I've found the solution if anybody is interested, but it is very
annoying.
This guy describes the bug, and this is the only thing that I could find
after finding the only thing that seemed to be the culprit:
http://www.sparkcontest.com/forum.aspx?g=posts&t=110

Essentially there is a link left in to cf2 even after you have installed
sqlce sp1

clipped from his post in case it is dropped ...
C:\WINCE600\PUBLIC\CEBASE\OAK\MISC\sqlcompact.bat
Change all instances of "SYSGEN_DOTNETV2" to "SYSGEN_DOTNETV35".
Change all instances of "SYSGEN_DOTNETV2_HEADLESS" to
"SYSGEN_DOTNETV35_HEADLESS".
This will now ensure that .NET 3.5 is a dependency instead of .NET 2.0.


Please try harder guys.
The embedded world cannot afford 2MB baggage !
Post by Phil H
I'm upgrading a platform to use SQL Compact for CF3.5
We previously included all the files manually, but I've upgraded everything
I can find and removed all the manual file entries.
All the dlls seem to get copied to the image fine.
However, the image was 2MB larger than expected, and I found that SQL
Compact is correctly dependant upon CF3.5, but the Compact Managed Provider
is still dependant upon CF2.0 !
All help gratefully received, as I have spent most of the day browsing for
posts about anything like this.
Paul G. Tobey [eMVP]
2009-07-20 15:31:36 UTC
Permalink
I gave up on including the SQL CE actually IN the OS myself. For those
people who need it, installing the latest version is a better choice. The
installer for SQL CE allows it to be placed on a storage card, if that works
best on your device, and this avoids the problem of tying the device closely
to a given version of the database, which seems to change more-rapidly than
device operating systems typically get updated. If all of your users use
all devices with SQL CE, of course, that's dumb and the fix you found there
is the best you can do...

Paul T.

"Phil H"
Post by Phil H
Well, I've found the solution if anybody is interested, but it is very
annoying.
This guy describes the bug, and this is the only thing that I could find
http://www.sparkcontest.com/forum.aspx?g=posts&t=110
Essentially there is a link left in to cf2 even after you have installed
sqlce sp1
clipped from his post in case it is dropped ...
C:\WINCE600\PUBLIC\CEBASE\OAK\MISC\sqlcompact.bat
Change all instances of "SYSGEN_DOTNETV2" to "SYSGEN_DOTNETV35".
Change all instances of "SYSGEN_DOTNETV2_HEADLESS" to
"SYSGEN_DOTNETV35_HEADLESS".
This will now ensure that .NET 3.5 is a dependency instead of .NET 2.0.
Please try harder guys.
The embedded world cannot afford 2MB baggage !
Post by Phil H
I'm upgrading a platform to use SQL Compact for CF3.5
We previously included all the files manually, but I've upgraded everything
I can find and removed all the manual file entries.
All the dlls seem to get copied to the image fine.
However, the image was 2MB larger than expected, and I found that SQL
Compact is correctly dependant upon CF3.5, but the Compact Managed Provider
is still dependant upon CF2.0 !
All help gratefully received, as I have spent most of the day browsing for
posts about anything like this.
Phil H
2009-07-20 15:52:01 UTC
Permalink
We are OEMs Paul, so finding these little 'opportunities for improvement' has
become a regular occurence !

phil
Post by Paul G. Tobey [eMVP]
I gave up on including the SQL CE actually IN the OS myself. For those
people who need it, installing the latest version is a better choice. The
installer for SQL CE allows it to be placed on a storage card, if that works
best on your device, and this avoids the problem of tying the device closely
to a given version of the database, which seems to change more-rapidly than
device operating systems typically get updated. If all of your users use
all devices with SQL CE, of course, that's dumb and the fix you found there
is the best you can do...
Paul T.
"Phil H"
Post by Phil H
Well, I've found the solution if anybody is interested, but it is very
annoying.
This guy describes the bug, and this is the only thing that I could find
http://www.sparkcontest.com/forum.aspx?g=posts&t=110
Essentially there is a link left in to cf2 even after you have installed
sqlce sp1
clipped from his post in case it is dropped ...
C:\WINCE600\PUBLIC\CEBASE\OAK\MISC\sqlcompact.bat
Change all instances of "SYSGEN_DOTNETV2" to "SYSGEN_DOTNETV35".
Change all instances of "SYSGEN_DOTNETV2_HEADLESS" to
"SYSGEN_DOTNETV35_HEADLESS".
This will now ensure that .NET 3.5 is a dependency instead of .NET 2.0.
Please try harder guys.
The embedded world cannot afford 2MB baggage !
Post by Phil H
I'm upgrading a platform to use SQL Compact for CF3.5
We previously included all the files manually, but I've upgraded everything
I can find and removed all the manual file entries.
All the dlls seem to get copied to the image fine.
However, the image was 2MB larger than expected, and I found that SQL
Compact is correctly dependant upon CF3.5, but the Compact Managed Provider
is still dependant upon CF2.0 !
All help gratefully received, as I have spent most of the day browsing for
posts about anything like this.
Laxmi Narsimha Rao Oruganti [MSFT]
2009-07-22 08:07:51 UTC
Permalink
My friend Balasubramaniam Bodedhala who worked on Platform Builder updates
for SQL CE v3.5 SP1 has to say this:

SQL CE v3.5 SP1 runs perfectly fine on both .NET CF 2.0 and .NET CF 3.5.
Since, not all devices would have .NET CF v3.5, we made a decition to chose
.NET CF v2.0 as the automatic dependancy in Platform Builder. We also were
not sure when .NET CF v3.5 is going to get integrated into Platform Builder
as .NET CF v3.5 for for PB was not available when SQL CE v3.5 SP1 released.
We did clearly mention on how to remove .NET CF v2.0 and have .NET CF v3.5
in the release notes.

For your ease:
Download URL:
http://www.microsoft.com/downloads/details.aspx?FamilyID=b478949e-d020-465e-b451-73127b30b79f&DisplayLang=en
In the read me:

<ReadmeContent>
Adding support for .NET Compact Framework v3.5:

· Users can add support for .NET CF v3.5 in two ways. In
sqlcompact.bat under "%_WINCEROOT%\public\cebase\oak\misc\" change the
following lines from "if not "%SYSGEN_DOTNETV2_HEADLESS%"=="1" set
SYSGEN_DOTNETV2=1" to "if not "%SYSGEN_DOTNETV35_HEADLESS%"=="1" set
SYSGEN_DOTNETV35=1". Or from the catalog items view in PB remove .NET CF
v2.0 and select .NET CF v3.5.

· .NET CF v3.5 is available as a Platform Builder 6.0 update. More
information for .NET CF v3.5 is provided here -
http://support.microsoft.com/kb/947561.

</ReadmeContent>

I hope that clears up the confusion.

Thanks,
Laxmi

"Phil H"
Post by Phil H
We are OEMs Paul, so finding these little 'opportunities for improvement' has
become a regular occurence !
phil
Post by Paul G. Tobey [eMVP]
I gave up on including the SQL CE actually IN the OS myself. For those
people who need it, installing the latest version is a better choice.
The
installer for SQL CE allows it to be placed on a storage card, if that works
best on your device, and this avoids the problem of tying the device closely
to a given version of the database, which seems to change more-rapidly than
device operating systems typically get updated. If all of your users use
all devices with SQL CE, of course, that's dumb and the fix you found there
is the best you can do...
Paul T.
"Phil H"
Post by Phil H
Well, I've found the solution if anybody is interested, but it is very
annoying.
This guy describes the bug, and this is the only thing that I could find
http://www.sparkcontest.com/forum.aspx?g=posts&t=110
Essentially there is a link left in to cf2 even after you have installed
sqlce sp1
clipped from his post in case it is dropped ...
C:\WINCE600\PUBLIC\CEBASE\OAK\MISC\sqlcompact.bat
Change all instances of "SYSGEN_DOTNETV2" to "SYSGEN_DOTNETV35".
Change all instances of "SYSGEN_DOTNETV2_HEADLESS" to
"SYSGEN_DOTNETV35_HEADLESS".
This will now ensure that .NET 3.5 is a dependency instead of .NET 2.0.
Please try harder guys.
The embedded world cannot afford 2MB baggage !
Post by Phil H
I'm upgrading a platform to use SQL Compact for CF3.5
We previously included all the files manually, but I've upgraded everything
I can find and removed all the manual file entries.
All the dlls seem to get copied to the image fine.
However, the image was 2MB larger than expected, and I found that SQL
Compact is correctly dependant upon CF3.5, but the Compact Managed Provider
is still dependant upon CF2.0 !
All help gratefully received, as I have spent most of the day browsing for
posts about anything like this.
Phil H
2009-07-22 08:52:01 UTC
Permalink
Thank You Laxmi.
The issue is one of (a) unexpected coupling causing us to think that the
install was wrong, and (b) an unwanted extra 2MB of flash being used for no
apparent reason.

The readme file containing the instructions you copied is a very big one.
Not all of us read all the content of all the files !
Also, the section these instructions are in is simply titled 'sql compact',
'integration ...', 'adding support for ... 3.5'.
If you have just read that the SP has support for 3.5 then it seems of no
import.

Perhaps this kind of thing would be better titled 'Changing dependancy from
CF2.0 to CF3.5'. That kind of title is much less ambiguous.

Anyway, I would have preferred if the install had looked for the existence
of 3.5 before it decided to use 2.0. I would describe what has been
implemented as a 'hard-coded dependancy', which is sure to trip up quite a
few people.
It is difficult enough working out which service packs should be deployed on
what products without these kind of things.
Remember that we are developing code in vs2008 to deploy onto ce6 using
vs2005 !
Service Packs and QFEs for all those are seemingly developed by 3 different
teams !

regards
phil
Post by Laxmi Narsimha Rao Oruganti [MSFT]
My friend Balasubramaniam Bodedhala who worked on Platform Builder updates
SQL CE v3.5 SP1 runs perfectly fine on both .NET CF 2.0 and .NET CF 3.5.
Since, not all devices would have .NET CF v3.5, we made a decition to chose
..NET CF v2.0 as the automatic dependancy in Platform Builder. We also were
not sure when .NET CF v3.5 is going to get integrated into Platform Builder
as .NET CF v3.5 for for PB was not available when SQL CE v3.5 SP1 released.
We did clearly mention on how to remove .NET CF v2.0 and have .NET CF v3.5
in the release notes.
http://www.microsoft.com/downloads/details.aspx?FamilyID=b478949e-d020-465e-b451-73127b30b79f&DisplayLang=en
<ReadmeContent>
· Users can add support for .NET CF v3.5 in two ways. In
sqlcompact.bat under "%_WINCEROOT%\public\cebase\oak\misc\" change the
following lines from "if not "%SYSGEN_DOTNETV2_HEADLESS%"=="1" set
SYSGEN_DOTNETV2=1" to "if not "%SYSGEN_DOTNETV35_HEADLESS%"=="1" set
SYSGEN_DOTNETV35=1". Or from the catalog items view in PB remove .NET CF
v2.0 and select .NET CF v3.5.
· .NET CF v3.5 is available as a Platform Builder 6.0 update. More
information for .NET CF v3.5 is provided here -
http://support.microsoft.com/kb/947561.
</ReadmeContent>
I hope that clears up the confusion.
Thanks,
Laxmi
"Phil H"
Post by Phil H
We are OEMs Paul, so finding these little 'opportunities for improvement' has
become a regular occurence !
phil
Post by Paul G. Tobey [eMVP]
I gave up on including the SQL CE actually IN the OS myself. For those
people who need it, installing the latest version is a better choice.
The
installer for SQL CE allows it to be placed on a storage card, if that works
best on your device, and this avoids the problem of tying the device closely
to a given version of the database, which seems to change more-rapidly than
device operating systems typically get updated. If all of your users use
all devices with SQL CE, of course, that's dumb and the fix you found there
is the best you can do...
Paul T.
"Phil H"
Post by Phil H
Well, I've found the solution if anybody is interested, but it is very
annoying.
This guy describes the bug, and this is the only thing that I could find
http://www.sparkcontest.com/forum.aspx?g=posts&t=110
Essentially there is a link left in to cf2 even after you have installed
sqlce sp1
clipped from his post in case it is dropped ...
C:\WINCE600\PUBLIC\CEBASE\OAK\MISC\sqlcompact.bat
Change all instances of "SYSGEN_DOTNETV2" to "SYSGEN_DOTNETV35".
Change all instances of "SYSGEN_DOTNETV2_HEADLESS" to
"SYSGEN_DOTNETV35_HEADLESS".
This will now ensure that .NET 3.5 is a dependency instead of .NET 2.0.
Please try harder guys.
The embedded world cannot afford 2MB baggage !
Post by Phil H
I'm upgrading a platform to use SQL Compact for CF3.5
We previously included all the files manually, but I've upgraded everything
I can find and removed all the manual file entries.
All the dlls seem to get copied to the image fine.
However, the image was 2MB larger than expected, and I found that SQL
Compact is correctly dependant upon CF3.5, but the Compact Managed Provider
is still dependant upon CF2.0 !
All help gratefully received, as I have spent most of the day browsing for
posts about anything like this.
Paul G. Tobey [eMVP]
2009-07-22 15:20:37 UTC
Permalink
I think that the right way for it to work is not to have ANY dependency
between SQL Compact and .NET CF <any version>. At most, a new user of
Platform Builder would have one extra build cycle as a result of this, if he
forgot to add the .NET CF manually. That doesn't seem like a big problem to
me. Alternatively, you could have two catalog items for SQL Compact, one
that pulls in .NET CF 2.0 and one that pulls in .NET CF 3.5. Picking one is
definitely the wrong thing to do, though, especially since, if your OS
configuration has both .NET CF 2.0 and .NET CF 3.5 in it IT WON'T WORK.

Paul T.

"Phil H"
Post by Phil H
Thank You Laxmi.
The issue is one of (a) unexpected coupling causing us to think that the
install was wrong, and (b) an unwanted extra 2MB of flash being used for no
apparent reason.
The readme file containing the instructions you copied is a very big one.
Not all of us read all the content of all the files !
Also, the section these instructions are in is simply titled 'sql compact',
'integration ...', 'adding support for ... 3.5'.
If you have just read that the SP has support for 3.5 then it seems of no
import.
Perhaps this kind of thing would be better titled 'Changing dependancy from
CF2.0 to CF3.5'. That kind of title is much less ambiguous.
Anyway, I would have preferred if the install had looked for the existence
of 3.5 before it decided to use 2.0. I would describe what has been
implemented as a 'hard-coded dependancy', which is sure to trip up quite a
few people.
It is difficult enough working out which service packs should be deployed on
what products without these kind of things.
Remember that we are developing code in vs2008 to deploy onto ce6 using
vs2005 !
Service Packs and QFEs for all those are seemingly developed by 3 different
teams !
regards
phil
Post by Laxmi Narsimha Rao Oruganti [MSFT]
My friend Balasubramaniam Bodedhala who worked on Platform Builder updates
SQL CE v3.5 SP1 runs perfectly fine on both .NET CF 2.0 and .NET CF 3.5.
Since, not all devices would have .NET CF v3.5, we made a decition to chose
..NET CF v2.0 as the automatic dependancy in Platform Builder. We also were
not sure when .NET CF v3.5 is going to get integrated into Platform Builder
as .NET CF v3.5 for for PB was not available when SQL CE v3.5 SP1 released.
We did clearly mention on how to remove .NET CF v2.0 and have .NET CF v3.5
in the release notes.
http://www.microsoft.com/downloads/details.aspx?FamilyID=b478949e-d020-465e-b451-73127b30b79f&DisplayLang=en
<ReadmeContent>
· Users can add support for .NET CF v3.5 in two ways. In
sqlcompact.bat under "%_WINCEROOT%\public\cebase\oak\misc\" change the
following lines from "if not "%SYSGEN_DOTNETV2_HEADLESS%"=="1" set
SYSGEN_DOTNETV2=1" to "if not "%SYSGEN_DOTNETV35_HEADLESS%"=="1" set
SYSGEN_DOTNETV35=1". Or from the catalog items view in PB remove .NET CF
v2.0 and select .NET CF v3.5.
· .NET CF v3.5 is available as a Platform Builder 6.0 update.
More
information for .NET CF v3.5 is provided here -
http://support.microsoft.com/kb/947561.
</ReadmeContent>
I hope that clears up the confusion.
Thanks,
Laxmi
"Phil H"
Post by Phil H
We are OEMs Paul, so finding these little 'opportunities for
improvement'
has
become a regular occurence !
phil
Post by Paul G. Tobey [eMVP]
I gave up on including the SQL CE actually IN the OS myself. For those
people who need it, installing the latest version is a better choice.
The
installer for SQL CE allows it to be placed on a storage card, if that works
best on your device, and this avoids the problem of tying the device closely
to a given version of the database, which seems to change more-rapidly than
device operating systems typically get updated. If all of your users use
all devices with SQL CE, of course, that's dumb and the fix you found there
is the best you can do...
Paul T.
"Phil H"
Post by Phil H
Well, I've found the solution if anybody is interested, but it is very
annoying.
This guy describes the bug, and this is the only thing that I could find
http://www.sparkcontest.com/forum.aspx?g=posts&t=110
Essentially there is a link left in to cf2 even after you have installed
sqlce sp1
clipped from his post in case it is dropped ...
C:\WINCE600\PUBLIC\CEBASE\OAK\MISC\sqlcompact.bat
Change all instances of "SYSGEN_DOTNETV2" to "SYSGEN_DOTNETV35".
Change all instances of "SYSGEN_DOTNETV2_HEADLESS" to
"SYSGEN_DOTNETV35_HEADLESS".
This will now ensure that .NET 3.5 is a dependency instead of .NET 2.0.
Please try harder guys.
The embedded world cannot afford 2MB baggage !
Post by Phil H
I'm upgrading a platform to use SQL Compact for CF3.5
We previously included all the files manually, but I've upgraded everything
I can find and removed all the manual file entries.
All the dlls seem to get copied to the image fine.
However, the image was 2MB larger than expected, and I found that SQL
Compact is correctly dependant upon CF3.5, but the Compact Managed Provider
is still dependant upon CF2.0 !
All help gratefully received, as I have spent most of the day
browsing
for
posts about anything like this.
Laxmi Narsimha Rao Oruganti [MSFT]
2009-07-24 12:14:49 UTC
Permalink
I wish Platform Builder has a mechanism where I could specify my intent "a
version range like 2.0 to 3.5 and pick any if not already picked". AFAIK,
we did not find any way to automagically start depending on what the user
has already selected. I will forward a feature request to PB as that is
what is in my hands.

Coming to not take automatic dependancy is a hard thing. In PB, users
expect the dependant stuff is automatically selected and we just can't break
that guarranty.

Thanks,
Laxmi


"Paul G. Tobey [eMVP]" <p space tobey no spam AT no instrument no spam DOT
Post by Paul G. Tobey [eMVP]
I think that the right way for it to work is not to have ANY dependency
between SQL Compact and .NET CF <any version>. At most, a new user of
Platform Builder would have one extra build cycle as a result of this, if
he forgot to add the .NET CF manually. That doesn't seem like a big
problem to me. Alternatively, you could have two catalog items for SQL
Compact, one that pulls in .NET CF 2.0 and one that pulls in .NET CF 3.5.
Picking one is definitely the wrong thing to do, though, especially since,
if your OS configuration has both .NET CF 2.0 and .NET CF 3.5 in it IT
WON'T WORK.
Paul T.
"Phil H"
Post by Phil H
Thank You Laxmi.
The issue is one of (a) unexpected coupling causing us to think that the
install was wrong, and (b) an unwanted extra 2MB of flash being used for no
apparent reason.
The readme file containing the instructions you copied is a very big one.
Not all of us read all the content of all the files !
Also, the section these instructions are in is simply titled 'sql compact',
'integration ...', 'adding support for ... 3.5'.
If you have just read that the SP has support for 3.5 then it seems of no
import.
Perhaps this kind of thing would be better titled 'Changing dependancy from
CF2.0 to CF3.5'. That kind of title is much less ambiguous.
Anyway, I would have preferred if the install had looked for the existence
of 3.5 before it decided to use 2.0. I would describe what has been
implemented as a 'hard-coded dependancy', which is sure to trip up quite a
few people.
It is difficult enough working out which service packs should be deployed on
what products without these kind of things.
Remember that we are developing code in vs2008 to deploy onto ce6 using
vs2005 !
Service Packs and QFEs for all those are seemingly developed by 3 different
teams !
regards
phil
Post by Laxmi Narsimha Rao Oruganti [MSFT]
My friend Balasubramaniam Bodedhala who worked on Platform Builder updates
SQL CE v3.5 SP1 runs perfectly fine on both .NET CF 2.0 and .NET CF 3.5.
Since, not all devices would have .NET CF v3.5, we made a decition to chose
..NET CF v2.0 as the automatic dependancy in Platform Builder. We also were
not sure when .NET CF v3.5 is going to get integrated into Platform Builder
as .NET CF v3.5 for for PB was not available when SQL CE v3.5 SP1 released.
We did clearly mention on how to remove .NET CF v2.0 and have .NET CF v3.5
in the release notes.
http://www.microsoft.com/downloads/details.aspx?FamilyID=b478949e-d020-465e-b451-73127b30b79f&DisplayLang=en
<ReadmeContent>
· Users can add support for .NET CF v3.5 in two ways. In
sqlcompact.bat under "%_WINCEROOT%\public\cebase\oak\misc\" change the
following lines from "if not "%SYSGEN_DOTNETV2_HEADLESS%"=="1" set
SYSGEN_DOTNETV2=1" to "if not "%SYSGEN_DOTNETV35_HEADLESS%"=="1" set
SYSGEN_DOTNETV35=1". Or from the catalog items view in PB remove .NET CF
v2.0 and select .NET CF v3.5.
· .NET CF v3.5 is available as a Platform Builder 6.0 update.
More
information for .NET CF v3.5 is provided here -
http://support.microsoft.com/kb/947561.
</ReadmeContent>
I hope that clears up the confusion.
Thanks,
Laxmi
"Phil H"
Post by Phil H
We are OEMs Paul, so finding these little 'opportunities for
improvement'
has
become a regular occurence !
phil
Post by Paul G. Tobey [eMVP]
I gave up on including the SQL CE actually IN the OS myself. For those
people who need it, installing the latest version is a better choice.
The
installer for SQL CE allows it to be placed on a storage card, if
that
works
best on your device, and this avoids the problem of tying the device closely
to a given version of the database, which seems to change
more-rapidly
than
device operating systems typically get updated. If all of your users use
all devices with SQL CE, of course, that's dumb and the fix you found there
is the best you can do...
Paul T.
"Phil H"
Post by Phil H
Well, I've found the solution if anybody is interested, but it is very
annoying.
This guy describes the bug, and this is the only thing that I could find
http://www.sparkcontest.com/forum.aspx?g=posts&t=110
Essentially there is a link left in to cf2 even after you have installed
sqlce sp1
clipped from his post in case it is dropped ...
C:\WINCE600\PUBLIC\CEBASE\OAK\MISC\sqlcompact.bat
Change all instances of "SYSGEN_DOTNETV2" to "SYSGEN_DOTNETV35".
Change all instances of "SYSGEN_DOTNETV2_HEADLESS" to
"SYSGEN_DOTNETV35_HEADLESS".
This will now ensure that .NET 3.5 is a dependency instead of .NET 2.0.
Please try harder guys.
The embedded world cannot afford 2MB baggage !
Post by Phil H
I'm upgrading a platform to use SQL Compact for CF3.5
We previously included all the files manually, but I've upgraded everything
I can find and removed all the manual file entries.
All the dlls seem to get copied to the image fine.
However, the image was 2MB larger than expected, and I found that SQL
Compact is correctly dependant upon CF3.5, but the Compact Managed Provider
is still dependant upon CF2.0 !
All help gratefully received, as I have spent most of the day
browsing
for
posts about anything like this.
Loading...