Skip to content

Latest commit

 

History

History
79 lines (51 loc) · 5.29 KB

File metadata and controls

79 lines (51 loc) · 5.29 KB

SQLitePCLRaw 3.0 Release Notes

What's NOT new?

  • There are no code changes in SQLitePCLRaw.core.
  • The only code changes in the providers are related to support for encryption builds.
  • If you use SQLitePCLRaw.bundle_e_sqlite3, the upgrade to 3.0 should Just Work.

What's new?

  • Support for classic Xamarin has been removed.
  • A new package called SQLitePCLRaw.config.e_sqlite3 has been added. This is identical to .bundle_e_sqlite3, except with no dependency on a native SQLite lib package, thus allowing the flexibility to choose a different one.
  • The package containing the native SQLite library is now SourceGear.sqlite3 instead of SQLitePCLRaw.lib.e_sqlite3.
  • For backward compatibility, .bundle_e_sqlite3 is still supported, and has been redefined to be nothing more than two package dependencies: SQLitePCLRaw..config.e_sqlite3 and SourceGear.sqlite3.
  • The version number of SQLite native library packages (such as SourceGear.sqlite3) now matches the version of SQLite used to build it, not the version of SQLitePCLRaw. In general, I will no longer increment the version number of SQLitePCLRaw just to incorporate an updated SQLite version.
  • My recommended solution for SQLite encrypton is now the SQLite Encryption Extension (SEE), available from the SQLite core team.
  • SourceGear (my company) is now offering paid serices around .NET and SQLite, including technical support agreements, maintenance of SQLite builds with a private nuget server, and custom software development.
  • I no longer distribute any no-cost SQLite builds with encryption. SQLCipher builds are available for purchase from Zetetic, and I will continue to coordinate with them to ensure compatibility. Builds for SEE and SQLite3 Multiple Ciphers are available as part of SourceGear's SQLite build service.
  • The SQLitePCLRaw.bundle_green package has been removed. It provided a configuration which was too weird to make convenient. I'll talk with the maintainer of sqlite-net about the best way forward.
  • The SQLitePCLRaw.bundle_e_sqlite3mc and provider.e_sqlite3mc packages have been removed. The sqlite3mc builds from SourceGear's build service use e_sqlite3 as their base name and are compatible with .config.e_sqlite3.
  • The SQLitePCLRaw.bundle_zetetic package has been removed. The corresponding provider is still supported.
  • The SQLitePCLRaw.bundle_sqlite3 and bundle_winsqlite3 packages have been removed. Each of them was an entire package for one line of code. The corresponding providers are still supported.
  • The targeted version of .NET Framework has changed from 4.6.2 to 4.7.1.
  • The default provider for .NET Framework has been changed back to using DLLImport (which worked well) instead of using dynamic loading (which caused more sadness than joy).

How to update to SQLitePCLRaw 3.0

From SQLitePCLRaw.bundle_e_sqlite3

If you are using the .bundle_e_sqlite3 package, you don't need to do anything except update the version number:

    <PackageReference Include="sqlitepclraw.bundle_e_sqlite3" Version="3.0.1" />

But you may want to remove the .bundle_e_sqlite3 package reference and add these two instead:

    <PackageReference Include="sqlitepclraw.config.e_sqlite3" Version="3.0.1" />
    <PackageReference Include="sourcegear.sqlite3" Version="3.50.3" />

Going forward, when you want to update to a new build of SQLite, you will only need to update the reference to the SourceGear.sqlite3 package.

From SQLitePCLRaw.bundle_e_sqlcipher

Beginning with the 3.0 release, I will no longer maintain and distribute encryption-enabled SQLite builds without cost. As far as I know, I was the only one providing a no-cost nuget package of SQLite with encryption. The .bundle_e_sqlcipher package is deprecated.

My recommended solution for SQLite encryption is the SQLite Encryption Extension (SEE), which is the official implementation from the SQLite team:

https://sqlite.org/com/see.html

The SEE is not open source -- a paid license is required. Once you have obtained a SEE license, if you would like to get SEE builds in the form of a nuget package, you can subscribe to SourceGear's SQLite build service.

If you would like to stay with SQLCipher, you can purchase supported builds from Zetetic, or you can build their open source code yourself.

Another open source option is SQLite3 Multiple Ciphers (from @utelle). Nuget packages for SQLite3MC are available to customers of SourceGear's SQLite build service.

From SQLitePCLRaw.bundle_green

The .bundle_green package is identical to .bundle_e_sqlite3 except on iOS, where the package references the SQLite library provided by the operating system. I recommend changing from _bundle_green to the pairing of .bundle.config.sqlite3 and SourceGear.sqlite3 described above.

If you prefer to continue using the system SQLite on iOS while using e_sqlite3 builds on all other platforms, you would need to setup specific package references for the different providers and native libraries for each platform.

If you only use iOS and want to use the system SQLite, you can just do this:

    <PackageReference Include="sqlitepclraw.core" Version="3.0.1" />
    <PackageReference Include="sqlitepclraw.provider.sqlite3" Version="3.0.1" />

and make this call to initialize things:

    SQLitePCL.raw.SetProvider(new SQLitePCL.SQLite3Provider_sqlite3());