System.Data.SQLite

Check-in [880e608b09]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Add preliminary support for the .NET Framework 4.7.2. Also, update the SQLite core library to the latest 3.23.2 release candidate.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 880e608b09b3027b532a36ce7885250759cfc001
User & Date: mistachkin 2018-05-06 20:09:25.125
Original Comment: Add preliminary support for the .NET Framework 4.7.2.
Context
2018-05-06
20:16
Update version history docs. check-in: e484156b86 user: mistachkin tags: trunk
20:09
Add preliminary support for the .NET Framework 4.7.2. Also, update the SQLite core library to the latest 3.23.2 release candidate. check-in: 880e608b09 user: mistachkin tags: trunk
2018-04-29
06:02
Modify the 'compileCSharpWith' test suite helper procedure to prevent leaking the previous PID value when running tests on .NET Core. check-in: a65ec30361 user: mistachkin tags: trunk
Changes
Unified Diff Ignore Whitespace Patch
Changes to Doc/Extra/Provider/version.html.
43
44
45
46
47
48
49

50
51
52
53
54
55
56
    <div id="mainSection">
    <div id="mainBody">
    <h1 class="heading">Version History</h1>
    <p><b>1.0.109.0 - May XX, 2018 <font color="red">(release scheduled)</font></b></p>
    <ul>
      <li>Updated to <a href="https://www.sqlite.org/releaselog/3_23_1.html">SQLite 3.23.1</a>.</li>
      <li>Prevent GetSchemaTable from throwing InvalidCastException. Fix for <a href="https://system.data.sqlite.org/index.html/info/baf42ee135">[baf42ee135]</a>.</li>

      <li>Add preliminary support for .NET Core 2.0 and the .NET Standard 2.0. Pursuant to <a href="https://system.data.sqlite.org/index.html/info/5c89cecd1b">[5c89cecd1b]</a>.</li>
      <li>Add simpler overload for the SQLiteBlob.Create method. Pursuant to <a href="https://system.data.sqlite.org/index.html/info/dfc8133ba2">[dfc8133ba2]</a>.</li>
      <li>Add GetFieldAffinity method to the SQLiteDataReader class.</li>
    </ul>
    <p><b>1.0.108.0 - March 2, 2018</b></p>
    <ul>
      <li>Support extended result codes when messages are looked up without the SQLite core library.</li>







>







43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
    <div id="mainSection">
    <div id="mainBody">
    <h1 class="heading">Version History</h1>
    <p><b>1.0.109.0 - May XX, 2018 <font color="red">(release scheduled)</font></b></p>
    <ul>
      <li>Updated to <a href="https://www.sqlite.org/releaselog/3_23_1.html">SQLite 3.23.1</a>.</li>
      <li>Prevent GetSchemaTable from throwing InvalidCastException. Fix for <a href="https://system.data.sqlite.org/index.html/info/baf42ee135">[baf42ee135]</a>.</li>
      <li>Add preliminary support for the .NET Framework 4.7.2.</li>
      <li>Add preliminary support for .NET Core 2.0 and the .NET Standard 2.0. Pursuant to <a href="https://system.data.sqlite.org/index.html/info/5c89cecd1b">[5c89cecd1b]</a>.</li>
      <li>Add simpler overload for the SQLiteBlob.Create method. Pursuant to <a href="https://system.data.sqlite.org/index.html/info/dfc8133ba2">[dfc8133ba2]</a>.</li>
      <li>Add GetFieldAffinity method to the SQLiteDataReader class.</li>
    </ul>
    <p><b>1.0.108.0 - March 2, 2018</b></p>
    <ul>
      <li>Support extended result codes when messages are looked up without the SQLite core library.</li>
Changes to SQLite.Designer/SQLiteOptions.cs.
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
        /// design-time components.  It is also the default value for the
        /// associated option key.
        /// </summary>
        private static readonly string LegacyProviderName = "System.Data.SQLite";

        ///////////////////////////////////////////////////////////////////////

#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471
        /// <summary>
        /// This is the provider name used when Entity Framework 6.x support is
        /// required for use with the System.Data.SQLite design-time components.
        /// This provider name is only available when this class is compiled for
        /// the .NET Framework 4.0 or later.
        /// </summary>
        private static readonly string Ef6ProviderName = "System.Data.SQLite.EF6";







|







47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
        /// design-time components.  It is also the default value for the
        /// associated option key.
        /// </summary>
        private static readonly string LegacyProviderName = "System.Data.SQLite";

        ///////////////////////////////////////////////////////////////////////

#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472
        /// <summary>
        /// This is the provider name used when Entity Framework 6.x support is
        /// required for use with the System.Data.SQLite design-time components.
        /// This provider name is only available when this class is compiled for
        /// the .NET Framework 4.0 or later.
        /// </summary>
        private static readonly string Ef6ProviderName = "System.Data.SQLite.EF6";
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126

                string key = ProviderNameKey;
                string value = Environment.GetEnvironmentVariable(
                    ProviderNameEnvVarName);

                if (IsValidValue(key, value))
                    options[key] = value;
#if !NET_40 && !NET_45 && !NET_451 && !NET_452 && !NET_46 && !NET_461 && !NET_462 && !NET_47 && !NET_471
                else
                    options[key] = LegacyProviderName;
#endif
            }
        }
        #endregion








|







112
113
114
115
116
117
118
119
120
121
122
123
124
125
126

                string key = ProviderNameKey;
                string value = Environment.GetEnvironmentVariable(
                    ProviderNameEnvVarName);

                if (IsValidValue(key, value))
                    options[key] = value;
#if !NET_40 && !NET_45 && !NET_451 && !NET_452 && !NET_46 && !NET_461 && !NET_462 && !NET_47 && !NET_471 && !NET_472
                else
                    options[key] = LegacyProviderName;
#endif
            }
        }
        #endregion

135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
        /// <returns>
        /// The configured ADO.NET provider name for System.Data.SQLite -OR-
        /// the default ADO.NET provider name for System.Data.SQLite in the
        /// event of any failure.  This method cannot return null.
        /// </returns>
        public static string GetProviderName()
        {
#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471
            return GetProviderName(Ef6ProviderName);
#else
            return GetProviderName(LegacyProviderName);
#endif
        }

        ///////////////////////////////////////////////////////////////////////







|







135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
        /// <returns>
        /// The configured ADO.NET provider name for System.Data.SQLite -OR-
        /// the default ADO.NET provider name for System.Data.SQLite in the
        /// event of any failure.  This method cannot return null.
        /// </returns>
        public static string GetProviderName()
        {
#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472
            return GetProviderName(Ef6ProviderName);
#else
            return GetProviderName(LegacyProviderName);
#endif
        }

        ///////////////////////////////////////////////////////////////////////
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
            int result = 0;

            if (items == null)
                return result;

            IList<string> names = new List<string>();

#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471
            names.Add(Ef6ProviderName);
#endif

            names.Add(LegacyProviderName);

            foreach (string name in names)
            {







|







351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
            int result = 0;

            if (items == null)
                return result;

            IList<string> names = new List<string>();

#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472
            names.Add(Ef6ProviderName);
#endif

            names.Add(LegacyProviderName);

            foreach (string name in names)
            {
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
            string value
            )
        {
            if (String.Equals(
                    key, ProviderNameKey, StringComparison.Ordinal) &&
                (String.Equals(
                    value, LegacyProviderName, StringComparison.Ordinal)
#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471
                || String.Equals(
                    value, Ef6ProviderName, StringComparison.Ordinal)
#endif
                ))
            {
                return true;
            }







|







428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
            string value
            )
        {
            if (String.Equals(
                    key, ProviderNameKey, StringComparison.Ordinal) &&
                (String.Equals(
                    value, LegacyProviderName, StringComparison.Ordinal)
#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472
                || String.Equals(
                    value, Ef6ProviderName, StringComparison.Ordinal)
#endif
                ))
            {
                return true;
            }
Changes to SQLite.Interop/props/sqlite3.props.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="utf-8"?>
<!--
 *
 * sqlite3.props -
 *
 * Written by Joe Mistachkin.
 * Released to the public domain, use at your own risk!
 *
-->
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
  <PropertyGroup Label="UserMacros">
    <SQLITE_MANIFEST_VERSION>3.23.1.0</SQLITE_MANIFEST_VERSION>
    <SQLITE_RC_VERSION>3,23,1,0</SQLITE_RC_VERSION>
    <SQLITE_COMMON_DEFINES>_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;SQLITE_THREADSAFE=1;SQLITE_USE_URI=1;SQLITE_ENABLE_COLUMN_METADATA=1;SQLITE_ENABLE_STAT4=1;SQLITE_ENABLE_FTS3=1;SQLITE_ENABLE_LOAD_EXTENSION=1;SQLITE_ENABLE_RTREE=1;SQLITE_SOUNDEX=1;SQLITE_ENABLE_MEMORY_MANAGEMENT=1;SQLITE_ENABLE_API_ARMOR=1;SQLITE_ENABLE_DBSTAT_VTAB=1;SQLITE_ENABLE_STMTVTAB=1</SQLITE_COMMON_DEFINES>
    <SQLITE_EXTRA_DEFINES>SQLITE_PLACEHOLDER=1;SQLITE_HAS_CODEC=1</SQLITE_EXTRA_DEFINES>
    <SQLITE_WINCE_200X_DEFINES>SQLITE_OMIT_WAL=1</SQLITE_WINCE_200X_DEFINES>
    <SQLITE_WINCE_2013_DEFINES>HAVE_ERRNO_H=1;SQLITE_MSVC_LOCALTIME_API=1</SQLITE_WINCE_2013_DEFINES>
    <SQLITE_DEBUG_DEFINES>SQLITE_DEBUG=1;SQLITE_MEMDEBUG=1;SQLITE_ENABLE_EXPENSIVE_ASSERT=1</SQLITE_DEBUG_DEFINES>
    <SQLITE_RELEASE_DEFINES>SQLITE_WIN32_MALLOC=1</SQLITE_RELEASE_DEFINES>
    <SQLITE_DISABLE_WARNINGS>4055;4100;4127;4146;4210;4232;4244;4245;4267;4306;4389;4701;4703;4706</SQLITE_DISABLE_WARNINGS>











|
|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="utf-8"?>
<!--
 *
 * sqlite3.props -
 *
 * Written by Joe Mistachkin.
 * Released to the public domain, use at your own risk!
 *
-->
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
  <PropertyGroup Label="UserMacros">
    <SQLITE_MANIFEST_VERSION>3.23.2.0</SQLITE_MANIFEST_VERSION>
    <SQLITE_RC_VERSION>3,23,2,0</SQLITE_RC_VERSION>
    <SQLITE_COMMON_DEFINES>_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;SQLITE_THREADSAFE=1;SQLITE_USE_URI=1;SQLITE_ENABLE_COLUMN_METADATA=1;SQLITE_ENABLE_STAT4=1;SQLITE_ENABLE_FTS3=1;SQLITE_ENABLE_LOAD_EXTENSION=1;SQLITE_ENABLE_RTREE=1;SQLITE_SOUNDEX=1;SQLITE_ENABLE_MEMORY_MANAGEMENT=1;SQLITE_ENABLE_API_ARMOR=1;SQLITE_ENABLE_DBSTAT_VTAB=1;SQLITE_ENABLE_STMTVTAB=1</SQLITE_COMMON_DEFINES>
    <SQLITE_EXTRA_DEFINES>SQLITE_PLACEHOLDER=1;SQLITE_HAS_CODEC=1</SQLITE_EXTRA_DEFINES>
    <SQLITE_WINCE_200X_DEFINES>SQLITE_OMIT_WAL=1</SQLITE_WINCE_200X_DEFINES>
    <SQLITE_WINCE_2013_DEFINES>HAVE_ERRNO_H=1;SQLITE_MSVC_LOCALTIME_API=1</SQLITE_WINCE_2013_DEFINES>
    <SQLITE_DEBUG_DEFINES>SQLITE_DEBUG=1;SQLITE_MEMDEBUG=1;SQLITE_ENABLE_EXPENSIVE_ASSERT=1</SQLITE_DEBUG_DEFINES>
    <SQLITE_RELEASE_DEFINES>SQLITE_WIN32_MALLOC=1</SQLITE_RELEASE_DEFINES>
    <SQLITE_DISABLE_WARNINGS>4055;4100;4127;4146;4210;4232;4244;4245;4267;4306;4389;4701;4703;4706</SQLITE_DISABLE_WARNINGS>
Changes to SQLite.Interop/props/sqlite3.vsprops.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<VisualStudioPropertySheet
	ProjectType="Visual C++"
	Version="8.00"
	Name="sqlite3"
	>
	<UserMacro
		Name="SQLITE_MANIFEST_VERSION"
		Value="3.23.1.0"
		PerformEnvironmentSet="true"
	/>
	<UserMacro
		Name="SQLITE_RC_VERSION"
		Value="3,23,1,0"
		PerformEnvironmentSet="true"
	/>
	<UserMacro
		Name="SQLITE_COMMON_DEFINES"
		Value="_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;SQLITE_THREADSAFE=1;SQLITE_USE_URI=1;SQLITE_ENABLE_COLUMN_METADATA=1;SQLITE_ENABLE_STAT4=1;SQLITE_ENABLE_FTS3=1;SQLITE_ENABLE_LOAD_EXTENSION=1;SQLITE_ENABLE_RTREE=1;SQLITE_SOUNDEX=1;SQLITE_ENABLE_MEMORY_MANAGEMENT=1;SQLITE_ENABLE_API_ARMOR=1;SQLITE_ENABLE_DBSTAT_VTAB=1;SQLITE_ENABLE_STMTVTAB=1"
		PerformEnvironmentSet="true"
	/>







|




|







10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<VisualStudioPropertySheet
	ProjectType="Visual C++"
	Version="8.00"
	Name="sqlite3"
	>
	<UserMacro
		Name="SQLITE_MANIFEST_VERSION"
		Value="3.23.2.0"
		PerformEnvironmentSet="true"
	/>
	<UserMacro
		Name="SQLITE_RC_VERSION"
		Value="3,23,2,0"
		PerformEnvironmentSet="true"
	/>
	<UserMacro
		Name="SQLITE_COMMON_DEFINES"
		Value="_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;SQLITE_THREADSAFE=1;SQLITE_USE_URI=1;SQLITE_ENABLE_COLUMN_METADATA=1;SQLITE_ENABLE_STAT4=1;SQLITE_ENABLE_FTS3=1;SQLITE_ENABLE_LOAD_EXTENSION=1;SQLITE_ENABLE_RTREE=1;SQLITE_SOUNDEX=1;SQLITE_ENABLE_MEMORY_MANAGEMENT=1;SQLITE_ENABLE_API_ARMOR=1;SQLITE_ENABLE_DBSTAT_VTAB=1;SQLITE_ENABLE_STMTVTAB=1"
		PerformEnvironmentSet="true"
	/>
Changes to SQLite.Interop/src/core/sqlite3.c.
1
2
3
4
5
6
7
8
9
10
/******************************************************************************
** This file is an amalgamation of many separate C source files from SQLite
** version 3.23.1.  By combining all the individual C code files into this
** single large file, the entire code can be compiled as a single translation
** unit.  This allows many compilers to do optimizations that would not be
** possible if the files were compiled separately.  Performance improvements
** of 5% or more are commonly seen when SQLite is compiled as a single
** translation unit.
**
** This file is all you need to compile SQLite.  To use SQLite in other


|







1
2
3
4
5
6
7
8
9
10
/******************************************************************************
** This file is an amalgamation of many separate C source files from SQLite
** version 3.23.2.  By combining all the individual C code files into this
** single large file, the entire code can be compiled as a single translation
** unit.  This allows many compilers to do optimizations that would not be
** possible if the files were compiled separately.  Performance improvements
** of 5% or more are commonly seen when SQLite is compiled as a single
** translation unit.
**
** This file is all you need to compile SQLite.  To use SQLite in other
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
** been edited in any way since it was last checked in, then the last
** four hexadecimal digits of the hash may be modified.
**
** See also: [sqlite3_libversion()],
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
** [sqlite_version()] and [sqlite_source_id()].
*/
#define SQLITE_VERSION        "3.23.1"
#define SQLITE_VERSION_NUMBER 3023001
#define SQLITE_SOURCE_ID      "2018-04-10 17:39:29 4bb2294022060e61de7da5c227a69ccd846ba330e31626ebcd59a94efd148b3b"

/*
** CAPI3REF: Run-Time Library Version Numbers
** KEYWORDS: sqlite3_version sqlite3_sourceid
**
** These interfaces provide the same information as the [SQLITE_VERSION],
** [SQLITE_VERSION_NUMBER], and [SQLITE_SOURCE_ID] C preprocessor macros







|
|
|







1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
** been edited in any way since it was last checked in, then the last
** four hexadecimal digits of the hash may be modified.
**
** See also: [sqlite3_libversion()],
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
** [sqlite_version()] and [sqlite_source_id()].
*/
#define SQLITE_VERSION        "3.23.2"
#define SQLITE_VERSION_NUMBER 3023002
#define SQLITE_SOURCE_ID      "2018-04-28 01:48:40 f677065aab61037914fc980456caaa60132a19b387d6d717ec1a6b6fa7c6alt1"

/*
** CAPI3REF: Run-Time Library Version Numbers
** KEYWORDS: sqlite3_version sqlite3_sourceid
**
** These interfaces provide the same information as the [SQLITE_VERSION],
** [SQLITE_VERSION_NUMBER], and [SQLITE_SOURCE_ID] C preprocessor macros
6512
6513
6514
6515
6516
6517
6518



































6519
6520
6521
6522
6523
6524
6525
** using [sqlite3_free].
** Hence, if this variable is modified directly, either it should be
** made NULL or made to point to memory obtained from [sqlite3_malloc]
** or else the use of the [data_store_directory pragma] should be avoided.
*/
SQLITE_API char *sqlite3_data_directory;




































/*
** CAPI3REF: Test For Auto-Commit Mode
** KEYWORDS: {autocommit mode}
** METHOD: sqlite3
**
** ^The sqlite3_get_autocommit() interface returns non-zero or
** zero if the given database connection is or is not in autocommit mode,







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







6512
6513
6514
6515
6516
6517
6518
6519
6520
6521
6522
6523
6524
6525
6526
6527
6528
6529
6530
6531
6532
6533
6534
6535
6536
6537
6538
6539
6540
6541
6542
6543
6544
6545
6546
6547
6548
6549
6550
6551
6552
6553
6554
6555
6556
6557
6558
6559
6560
** using [sqlite3_free].
** Hence, if this variable is modified directly, either it should be
** made NULL or made to point to memory obtained from [sqlite3_malloc]
** or else the use of the [data_store_directory pragma] should be avoided.
*/
SQLITE_API char *sqlite3_data_directory;

/*
** CAPI3REF: Win32 Specific Interface
**
** These interfaces are available only on Windows.  The
** [sqlite3_win32_set_directory] interface is used to set the value associated
** with the [sqlite3_temp_directory] or [sqlite3_data_directory] variable, to
** zValue, depending on the value of the type parameter.  The zValue parameter
** should be NULL to cause the previous value to be freed via [sqlite3_free];
** a non-NULL value will be copied into memory obtained from [sqlite3_malloc]
** prior to being used.  The [sqlite3_win32_set_directory] interface returns
** [SQLITE_OK] to indicate success, [SQLITE_ERROR] if the type is unsupported,
** or [SQLITE_NOMEM] if memory could not be allocated.  The value of the
** [sqlite3_data_directory] variable is intended to act as a replacement for
** the current directory on the sub-platforms of Win32 where that concept is
** not present, e.g. WinRT and UWP.  The [sqlite3_win32_set_directory8] and
** [sqlite3_win32_set_directory16] interfaces behave exactly the same as the
** sqlite3_win32_set_directory interface except the string parameter must be
** UTF-8 or UTF-16, respectively.
*/
SQLITE_API int sqlite3_win32_set_directory(
  unsigned long type, /* Identifier for directory being set or reset */
  void *zValue        /* New value for directory being set or reset */
);
SQLITE_API int sqlite3_win32_set_directory8(unsigned long type, const char *zValue);
SQLITE_API int sqlite3_win32_set_directory16(unsigned long type, const void *zValue);

/*
** CAPI3REF: Win32 Directory Types
**
** These macros are only available on Windows.  They define the allowed values
** for the type argument to the [sqlite3_win32_set_directory] interface.
*/
#define SQLITE_WIN32_DATA_DIRECTORY_TYPE  1
#define SQLITE_WIN32_TEMP_DIRECTORY_TYPE  2

/*
** CAPI3REF: Test For Auto-Commit Mode
** KEYWORDS: {autocommit mode}
** METHOD: sqlite3
**
** ^The sqlite3_get_autocommit() interface returns non-zero or
** zero if the given database connection is or is not in autocommit mode,
39544
39545
39546
39547
39548
39549
39550
39551
39552
39553
39554
39555
39556
39557
39558
39559
39560
39561
39562
39563
39564
39565
39566
39567
39568
39569
39570
39571
39572
39573
/*
 * The size of the buffer used by sqlite3_win32_write_debug().
 */
#ifndef SQLITE_WIN32_DBG_BUF_SIZE
#  define SQLITE_WIN32_DBG_BUF_SIZE   ((int)(4096-sizeof(DWORD)))
#endif

/*
 * The value used with sqlite3_win32_set_directory() to specify that
 * the data directory should be changed.
 */
#ifndef SQLITE_WIN32_DATA_DIRECTORY_TYPE
#  define SQLITE_WIN32_DATA_DIRECTORY_TYPE (1)
#endif

/*
 * The value used with sqlite3_win32_set_directory() to specify that
 * the temporary directory should be changed.
 */
#ifndef SQLITE_WIN32_TEMP_DIRECTORY_TYPE
#  define SQLITE_WIN32_TEMP_DIRECTORY_TYPE (2)
#endif

/*
 * If compiled with SQLITE_WIN32_MALLOC on Windows, we will use the
 * various Win32 API heap functions instead of our own.
 */
#ifdef SQLITE_WIN32_MALLOC

/*







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







39579
39580
39581
39582
39583
39584
39585
















39586
39587
39588
39589
39590
39591
39592
/*
 * The size of the buffer used by sqlite3_win32_write_debug().
 */
#ifndef SQLITE_WIN32_DBG_BUF_SIZE
#  define SQLITE_WIN32_DBG_BUF_SIZE   ((int)(4096-sizeof(DWORD)))
#endif

















/*
 * If compiled with SQLITE_WIN32_MALLOC on Windows, we will use the
 * various Win32 API heap functions instead of our own.
 */
#ifdef SQLITE_WIN32_MALLOC

/*
41156
41157
41158
41159
41160
41161
41162
41163
41164
41165
41166
41167
41168
41169



41170
41171
41172
41173
41174
41175
41176
41177
41178
41179
41180
41181
41182
41183
41184
41185
41186
41187
41188
41189
41190
41191
41192
41193
41194
41195
41196
41197

































41198
41199
41200
41201
41202
41203
41204
#ifndef SQLITE_OMIT_AUTOINIT
  if( sqlite3_initialize() ) return 0;
#endif
  return winUtf8ToMbcs(zText, useAnsi);
}

/*
** This function sets the data directory or the temporary directory based on
** the provided arguments.  The type argument must be 1 in order to set the
** data directory or 2 in order to set the temporary directory.  The zValue
** argument is the name of the directory to use.  The return value will be
** SQLITE_OK if successful.
*/
SQLITE_API int sqlite3_win32_set_directory(DWORD type, LPCWSTR zValue){



  char **ppDirectory = 0;
#ifndef SQLITE_OMIT_AUTOINIT
  int rc = sqlite3_initialize();
  if( rc ) return rc;
#endif
  if( type==SQLITE_WIN32_DATA_DIRECTORY_TYPE ){
    ppDirectory = &sqlite3_data_directory;
  }else if( type==SQLITE_WIN32_TEMP_DIRECTORY_TYPE ){
    ppDirectory = &sqlite3_temp_directory;
  }
  assert( !ppDirectory || type==SQLITE_WIN32_DATA_DIRECTORY_TYPE
          || type==SQLITE_WIN32_TEMP_DIRECTORY_TYPE
  );
  assert( !ppDirectory || sqlite3MemdebugHasType(*ppDirectory, MEMTYPE_HEAP) );
  if( ppDirectory ){
    char *zValueUtf8 = 0;
    if( zValue && zValue[0] ){
      zValueUtf8 = winUnicodeToUtf8(zValue);
      if ( zValueUtf8==0 ){
        return SQLITE_NOMEM_BKPT;
      }
    }
    sqlite3_free(*ppDirectory);
    *ppDirectory = zValueUtf8;
    return SQLITE_OK;
  }
  return SQLITE_ERROR;
}


































/*
** The return value of winGetLastErrorMsg
** is zero if the error message fits in the buffer, or non-zero
** otherwise (if the message was truncated).
*/
static int winGetLastErrorMsg(DWORD lastErrno, int nBuf, char *zBuf){







|
<
<
<
|

|
>
>
>















|

|
|




|




>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







41175
41176
41177
41178
41179
41180
41181
41182



41183
41184
41185
41186
41187
41188
41189
41190
41191
41192
41193
41194
41195
41196
41197
41198
41199
41200
41201
41202
41203
41204
41205
41206
41207
41208
41209
41210
41211
41212
41213
41214
41215
41216
41217
41218
41219
41220
41221
41222
41223
41224
41225
41226
41227
41228
41229
41230
41231
41232
41233
41234
41235
41236
41237
41238
41239
41240
41241
41242
41243
41244
41245
41246
41247
41248
41249
41250
41251
41252
41253
41254
41255
41256
#ifndef SQLITE_OMIT_AUTOINIT
  if( sqlite3_initialize() ) return 0;
#endif
  return winUtf8ToMbcs(zText, useAnsi);
}

/*
** This function is the same as sqlite3_win32_set_directory (below); however,



** it accepts a UTF-8 string.
*/
SQLITE_API int sqlite3_win32_set_directory8(
  unsigned long type, /* Identifier for directory being set or reset */
  const char *zValue  /* New value for directory being set or reset */
){
  char **ppDirectory = 0;
#ifndef SQLITE_OMIT_AUTOINIT
  int rc = sqlite3_initialize();
  if( rc ) return rc;
#endif
  if( type==SQLITE_WIN32_DATA_DIRECTORY_TYPE ){
    ppDirectory = &sqlite3_data_directory;
  }else if( type==SQLITE_WIN32_TEMP_DIRECTORY_TYPE ){
    ppDirectory = &sqlite3_temp_directory;
  }
  assert( !ppDirectory || type==SQLITE_WIN32_DATA_DIRECTORY_TYPE
          || type==SQLITE_WIN32_TEMP_DIRECTORY_TYPE
  );
  assert( !ppDirectory || sqlite3MemdebugHasType(*ppDirectory, MEMTYPE_HEAP) );
  if( ppDirectory ){
    char *zCopy = 0;
    if( zValue && zValue[0] ){
      zCopy = sqlite3_mprintf("%s", zValue);
      if ( zCopy==0 ){
        return SQLITE_NOMEM_BKPT;
      }
    }
    sqlite3_free(*ppDirectory);
    *ppDirectory = zCopy;
    return SQLITE_OK;
  }
  return SQLITE_ERROR;
}

/*
** This function is the same as sqlite3_win32_set_directory (below); however,
** it accepts a UTF-16 string.
*/
SQLITE_API int sqlite3_win32_set_directory16(
  unsigned long type, /* Identifier for directory being set or reset */
  const void *zValue  /* New value for directory being set or reset */
){
  int rc;
  char *zUtf8 = 0;
  if( zValue ){
    zUtf8 = sqlite3_win32_unicode_to_utf8(zValue);
    if( zUtf8==0 ) return SQLITE_NOMEM_BKPT;
  }
  rc = sqlite3_win32_set_directory8(type, zUtf8);
  if( zUtf8 ) sqlite3_free(zUtf8);
  return rc;
}

/*
** This function sets the data directory or the temporary directory based on
** the provided arguments.  The type argument must be 1 in order to set the
** data directory or 2 in order to set the temporary directory.  The zValue
** argument is the name of the directory to use.  The return value will be
** SQLITE_OK if successful.
*/
SQLITE_API int sqlite3_win32_set_directory(
  unsigned long type, /* Identifier for directory being set or reset */
  void *zValue        /* New value for directory being set or reset */
){
  return sqlite3_win32_set_directory16(type, zValue);
}

/*
** The return value of winGetLastErrorMsg
** is zero if the error message fits in the buffer, or non-zero
** otherwise (if the message was truncated).
*/
static int winGetLastErrorMsg(DWORD lastErrno, int nBuf, char *zBuf){
205658
205659
205660
205661
205662
205663
205664
205665
205666
205667
205668
205669
205670
205671
205672
static void fts5SourceIdFunc(
  sqlite3_context *pCtx,          /* Function call context */
  int nArg,                       /* Number of args */
  sqlite3_value **apUnused        /* Function arguments */
){
  assert( nArg==0 );
  UNUSED_PARAM2(nArg, apUnused);
  sqlite3_result_text(pCtx, "fts5: 2018-04-10 17:39:29 4bb2294022060e61de7da5c227a69ccd846ba330e31626ebcd59a94efd148b3b", -1, SQLITE_TRANSIENT);
}

static int fts5Init(sqlite3 *db){
  static const sqlite3_module fts5Mod = {
    /* iVersion      */ 2,
    /* xCreate       */ fts5CreateMethod,
    /* xConnect      */ fts5ConnectMethod,







|







205710
205711
205712
205713
205714
205715
205716
205717
205718
205719
205720
205721
205722
205723
205724
static void fts5SourceIdFunc(
  sqlite3_context *pCtx,          /* Function call context */
  int nArg,                       /* Number of args */
  sqlite3_value **apUnused        /* Function arguments */
){
  assert( nArg==0 );
  UNUSED_PARAM2(nArg, apUnused);
  sqlite3_result_text(pCtx, "fts5: 2018-04-28 01:48:40 f677065aab61037914fc980456caaa60132a19b387d6d717ec1a6b6fa7c61a10", -1, SQLITE_TRANSIENT);
}

static int fts5Init(sqlite3 *db){
  static const sqlite3_module fts5Mod = {
    /* iVersion      */ 2,
    /* xCreate       */ fts5CreateMethod,
    /* xConnect      */ fts5ConnectMethod,
209928
209929
209930
209931
209932
209933
209934
209935
209936
209937
209938
209939
209940
209941
#endif
  return rc;
}
#endif /* SQLITE_CORE */
#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */

/************** End of stmt.c ************************************************/
#if __LINE__!=209935
#undef SQLITE_SOURCE_ID
#define SQLITE_SOURCE_ID      "2018-04-10 17:39:29 4bb2294022060e61de7da5c227a69ccd846ba330e31626ebcd59a94efd14alt2"
#endif
/* Return the source-id for this library */
SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
/************************** End of sqlite3.c ******************************/







|

|




209980
209981
209982
209983
209984
209985
209986
209987
209988
209989
209990
209991
209992
209993
#endif
  return rc;
}
#endif /* SQLITE_CORE */
#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */

/************** End of stmt.c ************************************************/
#if __LINE__!=209987
#undef SQLITE_SOURCE_ID
#define SQLITE_SOURCE_ID      "2018-04-28 01:48:40 f677065aab61037914fc980456caaa60132a19b387d6d717ec1a6b6fa7c6alt2"
#endif
/* Return the source-id for this library */
SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
/************************** End of sqlite3.c ******************************/
Changes to SQLite.Interop/src/core/sqlite3.h.
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
** been edited in any way since it was last checked in, then the last
** four hexadecimal digits of the hash may be modified.
**
** See also: [sqlite3_libversion()],
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
** [sqlite_version()] and [sqlite_source_id()].
*/
#define SQLITE_VERSION        "3.23.1"
#define SQLITE_VERSION_NUMBER 3023001
#define SQLITE_SOURCE_ID      "2018-04-10 17:39:29 4bb2294022060e61de7da5c227a69ccd846ba330e31626ebcd59a94efd148b3b"

/*
** CAPI3REF: Run-Time Library Version Numbers
** KEYWORDS: sqlite3_version sqlite3_sourceid
**
** These interfaces provide the same information as the [SQLITE_VERSION],
** [SQLITE_VERSION_NUMBER], and [SQLITE_SOURCE_ID] C preprocessor macros







|
|
|







119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
** been edited in any way since it was last checked in, then the last
** four hexadecimal digits of the hash may be modified.
**
** See also: [sqlite3_libversion()],
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
** [sqlite_version()] and [sqlite_source_id()].
*/
#define SQLITE_VERSION        "3.23.2"
#define SQLITE_VERSION_NUMBER 3023002
#define SQLITE_SOURCE_ID      "2018-04-28 01:48:40 f677065aab61037914fc980456caaa60132a19b387d6d717ec1a6b6fa7c6alt1"

/*
** CAPI3REF: Run-Time Library Version Numbers
** KEYWORDS: sqlite3_version sqlite3_sourceid
**
** These interfaces provide the same information as the [SQLITE_VERSION],
** [SQLITE_VERSION_NUMBER], and [SQLITE_SOURCE_ID] C preprocessor macros
5488
5489
5490
5491
5492
5493
5494



































5495
5496
5497
5498
5499
5500
5501
** using [sqlite3_free].
** Hence, if this variable is modified directly, either it should be
** made NULL or made to point to memory obtained from [sqlite3_malloc]
** or else the use of the [data_store_directory pragma] should be avoided.
*/
SQLITE_API SQLITE_EXTERN char *sqlite3_data_directory;




































/*
** CAPI3REF: Test For Auto-Commit Mode
** KEYWORDS: {autocommit mode}
** METHOD: sqlite3
**
** ^The sqlite3_get_autocommit() interface returns non-zero or
** zero if the given database connection is or is not in autocommit mode,







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







5488
5489
5490
5491
5492
5493
5494
5495
5496
5497
5498
5499
5500
5501
5502
5503
5504
5505
5506
5507
5508
5509
5510
5511
5512
5513
5514
5515
5516
5517
5518
5519
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
** using [sqlite3_free].
** Hence, if this variable is modified directly, either it should be
** made NULL or made to point to memory obtained from [sqlite3_malloc]
** or else the use of the [data_store_directory pragma] should be avoided.
*/
SQLITE_API SQLITE_EXTERN char *sqlite3_data_directory;

/*
** CAPI3REF: Win32 Specific Interface
**
** These interfaces are available only on Windows.  The
** [sqlite3_win32_set_directory] interface is used to set the value associated
** with the [sqlite3_temp_directory] or [sqlite3_data_directory] variable, to
** zValue, depending on the value of the type parameter.  The zValue parameter
** should be NULL to cause the previous value to be freed via [sqlite3_free];
** a non-NULL value will be copied into memory obtained from [sqlite3_malloc]
** prior to being used.  The [sqlite3_win32_set_directory] interface returns
** [SQLITE_OK] to indicate success, [SQLITE_ERROR] if the type is unsupported,
** or [SQLITE_NOMEM] if memory could not be allocated.  The value of the
** [sqlite3_data_directory] variable is intended to act as a replacement for
** the current directory on the sub-platforms of Win32 where that concept is
** not present, e.g. WinRT and UWP.  The [sqlite3_win32_set_directory8] and
** [sqlite3_win32_set_directory16] interfaces behave exactly the same as the
** sqlite3_win32_set_directory interface except the string parameter must be
** UTF-8 or UTF-16, respectively.
*/
SQLITE_API int sqlite3_win32_set_directory(
  unsigned long type, /* Identifier for directory being set or reset */
  void *zValue        /* New value for directory being set or reset */
);
SQLITE_API int sqlite3_win32_set_directory8(unsigned long type, const char *zValue);
SQLITE_API int sqlite3_win32_set_directory16(unsigned long type, const void *zValue);

/*
** CAPI3REF: Win32 Directory Types
**
** These macros are only available on Windows.  They define the allowed values
** for the type argument to the [sqlite3_win32_set_directory] interface.
*/
#define SQLITE_WIN32_DATA_DIRECTORY_TYPE  1
#define SQLITE_WIN32_TEMP_DIRECTORY_TYPE  2

/*
** CAPI3REF: Test For Auto-Commit Mode
** KEYWORDS: {autocommit mode}
** METHOD: sqlite3
**
** ^The sqlite3_get_autocommit() interface returns non-zero or
** zero if the given database connection is or is not in autocommit mode,
Changes to SQLite.Interop/src/ext/fts5.c.
17465
17466
17467
17468
17469
17470
17471
17472
17473
17474
17475
17476
17477
17478
17479
static void fts5SourceIdFunc(
  sqlite3_context *pCtx,          /* Function call context */
  int nArg,                       /* Number of args */
  sqlite3_value **apUnused        /* Function arguments */
){
  assert( nArg==0 );
  UNUSED_PARAM2(nArg, apUnused);
  sqlite3_result_text(pCtx, "fts5: 2018-04-10 17:39:29 4bb2294022060e61de7da5c227a69ccd846ba330e31626ebcd59a94efd148b3b", -1, SQLITE_TRANSIENT);
}

static int fts5Init(sqlite3 *db){
  static const sqlite3_module fts5Mod = {
    /* iVersion      */ 2,
    /* xCreate       */ fts5CreateMethod,
    /* xConnect      */ fts5ConnectMethod,







|







17465
17466
17467
17468
17469
17470
17471
17472
17473
17474
17475
17476
17477
17478
17479
static void fts5SourceIdFunc(
  sqlite3_context *pCtx,          /* Function call context */
  int nArg,                       /* Number of args */
  sqlite3_value **apUnused        /* Function arguments */
){
  assert( nArg==0 );
  UNUSED_PARAM2(nArg, apUnused);
  sqlite3_result_text(pCtx, "fts5: 2018-04-28 01:48:40 f677065aab61037914fc980456caaa60132a19b387d6d717ec1a6b6fa7c61a10", -1, SQLITE_TRANSIENT);
}

static int fts5Init(sqlite3 *db){
  static const sqlite3_module fts5Mod = {
    /* iVersion      */ 2,
    /* xCreate       */ fts5CreateMethod,
    /* xConnect      */ fts5ConnectMethod,
Changes to SQLite.Interop/src/generic/interop.h.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/*
 * interop.h -
 *
 * Written by Joe Mistachkin.
 * Released to the public domain, use at your own risk!
 */

#ifndef INTEROP_VERSION
#define INTEROP_VERSION          "1.0.109.0"
#endif

#ifndef INTEROP_SOURCE_ID
#define INTEROP_SOURCE_ID        "0000000000000000000000000000000000000000"
#endif

#ifndef INTEROP_SOURCE_TIMESTAMP
#define INTEROP_SOURCE_TIMESTAMP "0000-00-00 00:00:00 UTC"
#endif












|



|

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/*
 * interop.h -
 *
 * Written by Joe Mistachkin.
 * Released to the public domain, use at your own risk!
 */

#ifndef INTEROP_VERSION
#define INTEROP_VERSION          "1.0.109.0"
#endif

#ifndef INTEROP_SOURCE_ID
#define INTEROP_SOURCE_ID        "a65ec303616fa04b37a17454b7e99d6d2ea3c165"
#endif

#ifndef INTEROP_SOURCE_TIMESTAMP
#define INTEROP_SOURCE_TIMESTAMP "2018-04-29 06:02:56 UTC"
#endif
Changes to Setup/build.bat.
237
238
239
240
241
242
243









244
245
246
247
248
249
250
  CALL :fn_CheckVisualStudioMsBuildDir 15.0 15.0
  GOTO setup_buildToolDir
)

IF DEFINED NETFX471ONLY (
  %_AECHO% Forcing the use of the .NET Framework 4.7.1...
  SET YEAR=2017









  CALL :fn_CheckFrameworkDir v4.0.30319
  CALL :fn_CheckMsBuildDir 14.0
  CALL :fn_CheckVisualStudioMsBuildDir 15.0 15.0
  GOTO setup_buildToolDir
)

REM







>
>
>
>
>
>
>
>
>







237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
  CALL :fn_CheckVisualStudioMsBuildDir 15.0 15.0
  GOTO setup_buildToolDir
)

IF DEFINED NETFX471ONLY (
  %_AECHO% Forcing the use of the .NET Framework 4.7.1...
  SET YEAR=2017
  CALL :fn_CheckFrameworkDir v4.0.30319
  CALL :fn_CheckMsBuildDir 14.0
  CALL :fn_CheckVisualStudioMsBuildDir 15.0 15.0
  GOTO setup_buildToolDir
)

IF DEFINED NETFX472ONLY (
  %_AECHO% Forcing the use of the .NET Framework 4.7.2...
  SET YEAR=2017
  CALL :fn_CheckFrameworkDir v4.0.30319
  CALL :fn_CheckMsBuildDir 14.0
  CALL :fn_CheckVisualStudioMsBuildDir 15.0 15.0
  GOTO setup_buildToolDir
)

REM
Changes to Setup/data/SQLite.iss.
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177

#if Year != "2005" && Year != "2008"
Components: Application\EF6; Tasks: ngen; Filename: {code:GetNetFx4InstallRoot|Ngen.exe}; Parameters: "install ""{app}\bin\System.Data.SQLite.EF6.dll"" /nologo"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
#endif

#if Pos("NativeOnly", AppConfiguration) == 0 && AppProcessor == "x86"
#if Year == "2005"
Components: {#InstallerCondition}; Tasks: gac\vs2005; Filename: {app}\bin\Installer.exe; Parameters: "-install true -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx35 true -noNetFx40 true -noNetFx45 true -noNetFx451 true -noNetFx452 true -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noVs2008 true -noVs2010 true -noVs2012 true -noVs2013 true -noVs2015 true -noVs2017 true -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx2Setup()
#endif
#if Year == "2008"
Components: {#InstallerCondition}; Tasks: gac\vs2008; Filename: {app}\bin\Installer.exe; Parameters: "-install true -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx40 true -noNetFx45 true -noNetFx451 true -noNetFx452 true -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noVs2005 true -noVs2010 true -noVs2012 true -noVs2013 true -noVs2015 true -noVs2017 true -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx2Setup()
#endif
#if Year == "2010"
Components: {#InstallerCondition}; Tasks: gac\vs2010; Filename: {app}\bin\Installer.exe; Parameters: "-install true -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx20 true -noNetFx35 true -noNetFx45 true -noNetFx451 true -noNetFx452 true -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noVs2005 true -noVs2008 true -noVs2012 true -noVs2013 true -noVs2015 true -noVs2017 true -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
#endif
#if Year == "2012"
Components: {#InstallerCondition}; Tasks: gac\vs2012; Filename: {app}\bin\Installer.exe; Parameters: "-install true -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx20 true -noNetFx35 true -noNetFx40 true -noNetFx451 true -noNetFx452 true -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noVs2005 true -noVs2008 true -noVs2010 true -noVs2013 true -noVs2015 true -noVs2017 true -configVersion 4.0.30319 -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
Components: {#InstallerCondition}; Tasks: gac\vs2012; Filename: {app}\bin\Installer.exe; Parameters: "-perUser true -install true -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx20 true -noNetFx35 true -noNetFx40 true -noNetFx451 true -noNetFx452 true -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noVs2005 true -noVs2008 true -noVs2010 true -noVs2013 true -noVs2015 true -noVs2017 true -configVersion 4.0.30319 -vsVersionSuffix _Config -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
#endif
#if Year == "2013"
Components: {#InstallerCondition}; Tasks: gac\vs2013; Filename: {app}\bin\Installer.exe; Parameters: "-install true -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx20 true -noNetFx35 true -noNetFx40 true -noNetFx45 true -noNetFx452 true -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noVs2005 true -noVs2008 true -noVs2010 true -noVs2012 true -noVs2015 true -noVs2017 true -configVersion 4.0.30319 -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
#endif
#if Year == "2015"
Components: {#InstallerCondition}; Tasks: gac\vs2015; Filename: {app}\bin\Installer.exe; Parameters: "-install true -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx20 true -noNetFx35 true -noNetFx40 true -noNetFx45 true -noNetFx451 true -noNetFx452 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noVs2005 true -noVs2008 true -noVs2010 true -noVs2012 true -noVs2013 true -noVs2017 true -configVersion 4.0.30319 -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
#endif
#endif

[UninstallRun]
#if Pos("NativeOnly", AppConfiguration) == 0 && AppProcessor == "x86"
#if Year == "2015"
Components: {#InstallerCondition}; Tasks: gac\vs2015; Filename: {app}\bin\Installer.exe; Parameters: "-install false -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx20 true -noNetFx35 true -noNetFx40 true -noNetFx45 true -noNetFx451 true -noNetFx452 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noVs2005 true -noVs2008 true -noVs2010 true -noVs2012 true -noVs2013 true -noVs2017 true -configVersion 4.0.30319 -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
#endif
#if Year == "2013"
Components: {#InstallerCondition}; Tasks: gac\vs2013; Filename: {app}\bin\Installer.exe; Parameters: "-install false -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx20 true -noNetFx35 true -noNetFx40 true -noNetFx45 true -noNetFx452 true -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noVs2005 true -noVs2008 true -noVs2010 true -noVs2012 true -noVs2015 true -noVs2017 true -configVersion 4.0.30319 -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
#endif
#if Year == "2012"
Components: {#InstallerCondition}; Tasks: gac\vs2012; Filename: {app}\bin\Installer.exe; Parameters: "-perUser true -install false -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx20 true -noNetFx35 true -noNetFx40 true -noNetFx451 true -noNetFx452 true -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noVs2005 true -noVs2008 true -noVs2010 true -noVs2013 true -noVs2015 true -noVs2017 true -configVersion 4.0.30319 -vsVersionSuffix _Config -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
Components: {#InstallerCondition}; Tasks: gac\vs2012; Filename: {app}\bin\Installer.exe; Parameters: "-install false -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx20 true -noNetFx35 true -noNetFx40 true -noNetFx451 true -noNetFx452 true -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noVs2005 true -noVs2008 true -noVs2010 true -noVs2013 true -noVs2015 true -noVs2017 true -configVersion 4.0.30319 -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
#endif
#if Year == "2010"
Components: {#InstallerCondition}; Tasks: gac\vs2010; Filename: {app}\bin\Installer.exe; Parameters: "-install false -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx20 true -noNetFx35 true -noNetFx45 true -noNetFx451 true -noNetFx452 true -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noVs2005 true -noVs2008 true -noVs2012 true -noVs2013 true -noVs2015 true -noVs2017 true -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
#endif
#if Year == "2008"
Components: {#InstallerCondition}; Tasks: gac\vs2008; Filename: {app}\bin\Installer.exe; Parameters: "-install false -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx40 true -noNetFx45 true -noNetFx451 true -noNetFx452 true -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noVs2005 true -noVs2010 true -noVs2012 true -noVs2013 true -noVs2015 true -noVs2017 true -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx2Setup()
#endif
#if Year == "2005"
Components: {#InstallerCondition}; Tasks: gac\vs2005; Filename: {app}\bin\Installer.exe; Parameters: "-install false -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx35 true -noNetFx40 true -noNetFx45 true -noNetFx451 true -noNetFx452 true -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noVs2008 true -noVs2010 true -noVs2012 true -noVs2013 true -noVs2015 true -noVs2017 true -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx2Setup()
#endif
#endif

#if Year != "2005" && Year != "2008"
Components: Application\EF6; Tasks: ngen; Filename: {code:GetNetFx4InstallRoot|Ngen.exe}; Parameters: "uninstall ""{app}\bin\System.Data.SQLite.EF6.dll"" /nologo"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
#endif








|


|


|


|
|


|


|






|


|


|
|


|


|


|







124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177

#if Year != "2005" && Year != "2008"
Components: Application\EF6; Tasks: ngen; Filename: {code:GetNetFx4InstallRoot|Ngen.exe}; Parameters: "install ""{app}\bin\System.Data.SQLite.EF6.dll"" /nologo"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
#endif

#if Pos("NativeOnly", AppConfiguration) == 0 && AppProcessor == "x86"
#if Year == "2005"
Components: {#InstallerCondition}; Tasks: gac\vs2005; Filename: {app}\bin\Installer.exe; Parameters: "-install true -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx35 true -noNetFx40 true -noNetFx45 true -noNetFx451 true -noNetFx452 true -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noNetFx472 true -noVs2008 true -noVs2010 true -noVs2012 true -noVs2013 true -noVs2015 true -noVs2017 true -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx2Setup()
#endif
#if Year == "2008"
Components: {#InstallerCondition}; Tasks: gac\vs2008; Filename: {app}\bin\Installer.exe; Parameters: "-install true -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx40 true -noNetFx45 true -noNetFx451 true -noNetFx452 true -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noNetFx472 true -noVs2005 true -noVs2010 true -noVs2012 true -noVs2013 true -noVs2015 true -noVs2017 true -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx2Setup()
#endif
#if Year == "2010"
Components: {#InstallerCondition}; Tasks: gac\vs2010; Filename: {app}\bin\Installer.exe; Parameters: "-install true -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx20 true -noNetFx35 true -noNetFx45 true -noNetFx451 true -noNetFx452 true -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noNetFx472 true -noVs2005 true -noVs2008 true -noVs2012 true -noVs2013 true -noVs2015 true -noVs2017 true -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
#endif
#if Year == "2012"
Components: {#InstallerCondition}; Tasks: gac\vs2012; Filename: {app}\bin\Installer.exe; Parameters: "-install true -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx20 true -noNetFx35 true -noNetFx40 true -noNetFx451 true -noNetFx452 true -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noNetFx472 true -noVs2005 true -noVs2008 true -noVs2010 true -noVs2013 true -noVs2015 true -noVs2017 true -configVersion 4.0.30319 -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
Components: {#InstallerCondition}; Tasks: gac\vs2012; Filename: {app}\bin\Installer.exe; Parameters: "-perUser true -install true -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx20 true -noNetFx35 true -noNetFx40 true -noNetFx451 true -noNetFx452 true -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noNetFx472 true -noVs2005 true -noVs2008 true -noVs2010 true -noVs2013 true -noVs2015 true -noVs2017 true -configVersion 4.0.30319 -vsVersionSuffix _Config -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
#endif
#if Year == "2013"
Components: {#InstallerCondition}; Tasks: gac\vs2013; Filename: {app}\bin\Installer.exe; Parameters: "-install true -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx20 true -noNetFx35 true -noNetFx40 true -noNetFx45 true -noNetFx452 true -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noNetFx472 true -noVs2005 true -noVs2008 true -noVs2010 true -noVs2012 true -noVs2015 true -noVs2017 true -configVersion 4.0.30319 -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
#endif
#if Year == "2015"
Components: {#InstallerCondition}; Tasks: gac\vs2015; Filename: {app}\bin\Installer.exe; Parameters: "-install true -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx20 true -noNetFx35 true -noNetFx40 true -noNetFx45 true -noNetFx451 true -noNetFx452 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noNetFx472 true -noVs2005 true -noVs2008 true -noVs2010 true -noVs2012 true -noVs2013 true -noVs2017 true -configVersion 4.0.30319 -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
#endif
#endif

[UninstallRun]
#if Pos("NativeOnly", AppConfiguration) == 0 && AppProcessor == "x86"
#if Year == "2015"
Components: {#InstallerCondition}; Tasks: gac\vs2015; Filename: {app}\bin\Installer.exe; Parameters: "-install false -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx20 true -noNetFx35 true -noNetFx40 true -noNetFx45 true -noNetFx451 true -noNetFx452 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noNetFx472 true -noVs2005 true -noVs2008 true -noVs2010 true -noVs2012 true -noVs2013 true -noVs2017 true -configVersion 4.0.30319 -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
#endif
#if Year == "2013"
Components: {#InstallerCondition}; Tasks: gac\vs2013; Filename: {app}\bin\Installer.exe; Parameters: "-install false -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx20 true -noNetFx35 true -noNetFx40 true -noNetFx45 true -noNetFx452 true -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noNetFx472 true -noVs2005 true -noVs2008 true -noVs2010 true -noVs2012 true -noVs2015 true -noVs2017 true -configVersion 4.0.30319 -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
#endif
#if Year == "2012"
Components: {#InstallerCondition}; Tasks: gac\vs2012; Filename: {app}\bin\Installer.exe; Parameters: "-perUser true -install false -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx20 true -noNetFx35 true -noNetFx40 true -noNetFx451 true -noNetFx452 true -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noNetFx472 true -noVs2005 true -noVs2008 true -noVs2010 true -noVs2013 true -noVs2015 true -noVs2017 true -configVersion 4.0.30319 -vsVersionSuffix _Config -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
Components: {#InstallerCondition}; Tasks: gac\vs2012; Filename: {app}\bin\Installer.exe; Parameters: "-install false -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx20 true -noNetFx35 true -noNetFx40 true -noNetFx451 true -noNetFx452 true -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noNetFx472 true -noVs2005 true -noVs2008 true -noVs2010 true -noVs2013 true -noVs2015 true -noVs2017 true -configVersion 4.0.30319 -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
#endif
#if Year == "2010"
Components: {#InstallerCondition}; Tasks: gac\vs2010; Filename: {app}\bin\Installer.exe; Parameters: "-install false -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx20 true -noNetFx35 true -noNetFx45 true -noNetFx451 true -noNetFx452 true -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noNetFx472 true -noVs2005 true -noVs2008 true -noVs2012 true -noVs2013 true -noVs2015 true -noVs2017 true -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
#endif
#if Year == "2008"
Components: {#InstallerCondition}; Tasks: gac\vs2008; Filename: {app}\bin\Installer.exe; Parameters: "-install false -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx40 true -noNetFx45 true -noNetFx451 true -noNetFx452 true -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noNetFx472 true -noVs2005 true -noVs2010 true -noVs2012 true -noVs2013 true -noVs2015 true -noVs2017 true -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx2Setup()
#endif
#if Year == "2005"
Components: {#InstallerCondition}; Tasks: gac\vs2005; Filename: {app}\bin\Installer.exe; Parameters: "-install false -wow64 true -installFlags AllExceptGlobalAssemblyCache -tracePriority Lowest -verbose true -noCompact true -noNetFx35 true -noNetFx40 true -noNetFx45 true -noNetFx451 true -noNetFx452 true -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true -noNetFx472 true -noVs2008 true -noVs2010 true -noVs2012 true -noVs2013 true -noVs2015 true -noVs2017 true -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx2Setup()
#endif
#endif

#if Year != "2005" && Year != "2008"
Components: Application\EF6; Tasks: ngen; Filename: {code:GetNetFx4InstallRoot|Ngen.exe}; Parameters: "uninstall ""{app}\bin\System.Data.SQLite.EF6.dll"" /nologo"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
#endif

Changes to Setup/data/verify.lst.
343
344
345
346
347
348
349

350
351
352
353
354
355
356
  Setup/set_netFx451.bat
  Setup/set_netFx452.bat
  Setup/set_netFx46.bat
  Setup/set_netFx461.bat
  Setup/set_netFx462.bat
  Setup/set_netFx47.bat
  Setup/set_netFx471.bat

  Setup/set_netStandard20.bat
  Setup/set_Release.bat
  Setup/set_Release_ARMV7.bat
  "Setup/set_Release_CEPC DevPlatform.bat"
  "Setup/set_Release_Pocket PC 2003 (ARMV4).bat"
  Setup/set_Release_Win32.bat
  Setup/set_Release_x64.bat







>







343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
  Setup/set_netFx451.bat
  Setup/set_netFx452.bat
  Setup/set_netFx46.bat
  Setup/set_netFx461.bat
  Setup/set_netFx462.bat
  Setup/set_netFx47.bat
  Setup/set_netFx471.bat
  Setup/set_netFx472.bat
  Setup/set_netStandard20.bat
  Setup/set_Release.bat
  Setup/set_Release_ARMV7.bat
  "Setup/set_Release_CEPC DevPlatform.bat"
  "Setup/set_Release_Pocket PC 2003 (ARMV4).bat"
  Setup/set_Release_Win32.bat
  Setup/set_Release_x64.bat
2115
2116
2117
2118
2119
2120
2121






































































2122
2123
2124
2125
2126
2127
2128
    setupEf6Bundle setupX86Vs2017]

###############################################################################

set manifests(sqlite-netFx471-setup-bundle-x64-2017-.exe) [list sds \
    setupCore setupBundle setupLinqCore setupEf6Core setupLinqBundle \
    setupEf6Bundle setupX64Vs2017]







































































###############################################################################
############################### NuGet Packages ################################
###############################################################################

set manifests(System.Data.SQLite..nupkg) [list sds \
    nuGetMetadata nuGetPrimary]







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
    setupEf6Bundle setupX86Vs2017]

###############################################################################

set manifests(sqlite-netFx471-setup-bundle-x64-2017-.exe) [list sds \
    setupCore setupBundle setupLinqCore setupEf6Core setupLinqBundle \
    setupEf6Bundle setupX64Vs2017]

###############################################################################
################## Visual Studio 2017 / .NET Framework 4.7.2 ##################
############################### Binary Packages ###############################
###############################################################################

set manifests(sqlite-netFx472-binary-Win32-2017-.zip) [list sds \
    binaryCore binaryLinq binaryEf6 binaryExtra binaryInterop]

###############################################################################

set manifests(sqlite-netFx472-binary-x64-2017-.zip) [list sds \
    binaryCore binaryLinq binaryEf6 binaryExtra binaryInterop]

###############################################################################

set manifests(sqlite-netFx472-binary-bundle-Win32-2017-.zip) [list sds \
    binaryCore binaryLinq binaryEf6 binaryExtra]

###############################################################################

set manifests(sqlite-netFx472-binary-bundle-x64-2017-.zip) [list sds \
    binaryCore binaryLinq binaryEf6 binaryExtra]

###############################################################################

set manifests(sqlite-netFx472-static-binary-Win32-2017-.zip) [list sds \
    binaryCore binaryLinq binaryEf6 binaryExtra binaryInterop]

###############################################################################

set manifests(sqlite-netFx472-static-binary-x64-2017-.zip) [list sds \
    binaryCore binaryLinq binaryEf6 binaryExtra binaryInterop]

###############################################################################

set manifests(sqlite-netFx472-static-binary-bundle-Win32-2017-.zip) [list sds \
    binaryCore binaryLinq binaryEf6 binaryExtra]

###############################################################################

set manifests(sqlite-netFx472-static-binary-bundle-x64-2017-.zip) [list sds \
    binaryCore binaryLinq binaryEf6 binaryExtra]

###############################################################################
################## Visual Studio 2017 / .NET Framework 4.7.2 ##################
############################### Setup Packages ################################
###############################################################################

set manifests(sqlite-netFx472-setup-x86-2017-.exe) [list sds \
    setupCore setupInterop setupLinqCore setupEf6Core setupLinqInterop \
    setupEf6Interop setupX86Vs2017]

###############################################################################

set manifests(sqlite-netFx472-setup-x64-2017-.exe) [list sds \
    setupCore setupInterop setupLinqCore setupEf6Core setupLinqInterop \
    setupEf6Interop setupX64Vs2017]

###############################################################################

set manifests(sqlite-netFx472-setup-bundle-x86-2017-.exe) [list sds \
    setupCore setupBundle setupLinqCore setupEf6Core setupLinqBundle \
    setupEf6Bundle setupX86Vs2017]

###############################################################################

set manifests(sqlite-netFx472-setup-bundle-x64-2017-.exe) [list sds \
    setupCore setupBundle setupLinqCore setupEf6Core setupLinqBundle \
    setupEf6Bundle setupX64Vs2017]

###############################################################################
############################### NuGet Packages ################################
###############################################################################

set manifests(System.Data.SQLite..nupkg) [list sds \
    nuGetMetadata nuGetPrimary]
Changes to Setup/set_common.bat.
85
86
87
88
89
90
91

92
93
94
95
96
97
98
  REM SET FRAMEWORK2015=netFx461
  REM SET FRAMEWORK2015=netFx462
)

IF NOT DEFINED FRAMEWORK2017 (
  SET FRAMEWORK2017=netFx47
  REM SET FRAMEWORK2015=netFx471

)

IF NOT DEFINED FRAMEWORKNETSTANDARD20 (
  SET FRAMEWORKNETSTANDARD20=netStandard20
)

IF DEFINED YEARS GOTO end_of_file







>







85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
  REM SET FRAMEWORK2015=netFx461
  REM SET FRAMEWORK2015=netFx462
)

IF NOT DEFINED FRAMEWORK2017 (
  SET FRAMEWORK2017=netFx47
  REM SET FRAMEWORK2015=netFx471
  REM SET FRAMEWORK2015=netFx472
)

IF NOT DEFINED FRAMEWORKNETSTANDARD20 (
  SET FRAMEWORKNETSTANDARD20=netStandard20
)

IF DEFINED YEARS GOTO end_of_file
Added Setup/set_netFx472.bat.












































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
@ECHO OFF

::
:: set_netFx472.bat --
::
:: Written by Joe Mistachkin.
:: Released to the public domain, use at your own risk!
::

IF NOT DEFINED ISNETFX2 (
  SET ISNETFX2=False
)

IF NOT DEFINED VCRUNTIME (
  SET VCRUNTIME=2017_VCU3
)

IF NOT DEFINED CONFIGURATION (
  SET CONFIGURATION=Release
)

IF NOT DEFINED PLATFORM (
  SET PLATFORM=Win32
)

IF NOT DEFINED PROCESSOR (
  SET PROCESSOR=x86
)

IF NOT DEFINED YEAR (
  SET YEAR=2017
)

IF NOT DEFINED FRAMEWORK (
  SET FRAMEWORK=netFx472
)

:end_of_file
Changes to Setup/set_year_2005.bat.
15
16
17
18
19
20
21

22
23
24
SET NETFX451ONLY=
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=

SET BUILD_ARGS=

VERIFY > NUL







>



15
16
17
18
19
20
21
22
23
24
25
SET NETFX451ONLY=
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=
SET NETFX472ONLY=
SET BUILD_ARGS=

VERIFY > NUL
Changes to Setup/set_year_2008.bat.
15
16
17
18
19
20
21

22
23
24
SET NETFX451ONLY=
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=

SET BUILD_ARGS=

VERIFY > NUL







>



15
16
17
18
19
20
21
22
23
24
25
SET NETFX451ONLY=
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=
SET NETFX472ONLY=
SET BUILD_ARGS=

VERIFY > NUL
Changes to Setup/set_year_2010.bat.
15
16
17
18
19
20
21

22
23
24
SET NETFX451ONLY=
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=

SET BUILD_ARGS=

VERIFY > NUL







>



15
16
17
18
19
20
21
22
23
24
25
SET NETFX451ONLY=
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=
SET NETFX472ONLY=
SET BUILD_ARGS=

VERIFY > NUL
Changes to Setup/set_year_2012.bat.
15
16
17
18
19
20
21

22
23
24
25
26
27
28
SET NETFX451ONLY=
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=


REM
REM HACK: Evidently, installing Visual Studio 2013 breaks using MSBuild to
REM       build native projects that specify a platform toolset of "v110".
REM
SET BUILD_ARGS=/property:VisualStudioVersion=11.0








>







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
SET NETFX451ONLY=
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=
SET NETFX472ONLY=

REM
REM HACK: Evidently, installing Visual Studio 2013 breaks using MSBuild to
REM       build native projects that specify a platform toolset of "v110".
REM
SET BUILD_ARGS=/property:VisualStudioVersion=11.0

Changes to Setup/set_year_2013.bat.
15
16
17
18
19
20
21

22
23
24
25
26
27
28
SET NETFX451ONLY=1
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=


REM
REM HACK: Evidently, using MSBuild with Visual Studio 2013 requires some
REM       extra magic to make it recognize the "v120" platform toolset.
REM
SET BUILD_ARGS=/property:VisualStudioVersion=12.0








>







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
SET NETFX451ONLY=1
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=
SET NETFX472ONLY=

REM
REM HACK: Evidently, using MSBuild with Visual Studio 2013 requires some
REM       extra magic to make it recognize the "v120" platform toolset.
REM
SET BUILD_ARGS=/property:VisualStudioVersion=12.0

Changes to Setup/set_year_2015.bat.
15
16
17
18
19
20
21

22
23
24
25
26
27
28
SET NETFX451ONLY=
SET NETFX452ONLY=
SET NETFX46ONLY=1
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=


REM
REM HACK: Evidently, using MSBuild with Visual Studio 2015 requires some
REM       extra magic to make it recognize the "v140" platform toolset.
REM
SET BUILD_ARGS=/property:VisualStudioVersion=14.0








>







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
SET NETFX451ONLY=
SET NETFX452ONLY=
SET NETFX46ONLY=1
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=
SET NETFX472ONLY=

REM
REM HACK: Evidently, using MSBuild with Visual Studio 2015 requires some
REM       extra magic to make it recognize the "v140" platform toolset.
REM
SET BUILD_ARGS=/property:VisualStudioVersion=14.0

Changes to Setup/set_year_2017.bat.
15
16
17
18
19
20
21

22
23
24
25
26
27
28
SET NETFX451ONLY=
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=1
SET NETFX471ONLY=


REM
REM HACK: Evidently, using MSBuild with Visual Studio 2017 requires some
REM       extra magic to make it recognize the "v141" platform toolset.
REM
SET BUILD_ARGS=/property:VisualStudioVersion=15.0








>







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
SET NETFX451ONLY=
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=1
SET NETFX471ONLY=
SET NETFX472ONLY=

REM
REM HACK: Evidently, using MSBuild with Visual Studio 2017 requires some
REM       extra magic to make it recognize the "v141" platform toolset.
REM
SET BUILD_ARGS=/property:VisualStudioVersion=15.0

Changes to Setup/set_year_NetStandard20.bat.
15
16
17
18
19
20
21

22
23
SET NETFX451ONLY=
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=


VERIFY > NUL







>


15
16
17
18
19
20
21
22
23
24
SET NETFX451ONLY=
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=
SET NETFX472ONLY=

VERIFY > NUL
Changes to System.Data.SQLite.Linq/AssemblyInfo.cs.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

// Setting ComVisible to false makes the types in this assembly not visible
// to COM components.  If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
[assembly: CLSCompliant(true)]

#if !NET_40 && !NET_45 && !NET_451 && !NET_452 && !NET_46 && !NET_461 && !NET_462 && !NET_47 && !NET_471
[assembly: AllowPartiallyTrustedCallers]
#endif

[assembly: ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]

// Version information for an assembly consists of the following four values:
//







|







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

// Setting ComVisible to false makes the types in this assembly not visible
// to COM components.  If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
[assembly: CLSCompliant(true)]

#if !NET_40 && !NET_45 && !NET_451 && !NET_452 && !NET_46 && !NET_461 && !NET_462 && !NET_47 && !NET_471 && !NET_472
[assembly: AllowPartiallyTrustedCallers]
#endif

[assembly: ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]

// Version information for an assembly consists of the following four values:
//
Changes to System.Data.SQLite.Linq/SQL Generation/InternalBase.cs.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/********************************************************
 * ADO.NET 2.0 Data Provider for SQLite Version 3.X
 * Written by Robert Simpson (robert@blackcastlesoft.com)
 * 
 * Released to the public domain, use at your own risk!
 ********************************************************/

using System.Text;

#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471
using System.Runtime;
#endif

#if USE_ENTITY_FRAMEWORK_6
namespace System.Data.SQLite.EF6
#else
namespace System.Data.SQLite.Linq
#endif
{
	internal abstract class InternalBase
	{
		// Methods
#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471
		[TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
#endif
		protected InternalBase()
		{
		}

		internal abstract void ToCompactString(StringBuilder builder);
		internal virtual string ToFullString()
		{
			StringBuilder builder = new StringBuilder();
			this.ToFullString(builder);
			return builder.ToString();
		}

#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471
		[TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
#endif
		internal virtual void ToFullString(StringBuilder builder)
		{
			this.ToCompactString(builder);
		}










|












|














|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/********************************************************
 * ADO.NET 2.0 Data Provider for SQLite Version 3.X
 * Written by Robert Simpson (robert@blackcastlesoft.com)
 * 
 * Released to the public domain, use at your own risk!
 ********************************************************/

using System.Text;

#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472
using System.Runtime;
#endif

#if USE_ENTITY_FRAMEWORK_6
namespace System.Data.SQLite.EF6
#else
namespace System.Data.SQLite.Linq
#endif
{
	internal abstract class InternalBase
	{
		// Methods
#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472
		[TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
#endif
		protected InternalBase()
		{
		}

		internal abstract void ToCompactString(StringBuilder builder);
		internal virtual string ToFullString()
		{
			StringBuilder builder = new StringBuilder();
			this.ToFullString(builder);
			return builder.ToString();
		}

#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472
		[TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
#endif
		internal virtual void ToFullString(StringBuilder builder)
		{
			this.ToCompactString(builder);
		}

Changes to System.Data.SQLite.Linq/SQL Generation/KeyToListMap.cs.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/********************************************************
 * ADO.NET 2.0 Data Provider for SQLite Version 3.X
 * Written by Robert Simpson (robert@blackcastlesoft.com)
 * 
 * Released to the public domain, use at your own risk!
 ********************************************************/

using System.Collections.Generic;
using System.Text;
using System.Collections.ObjectModel;
using System.Collections;

#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471
using System.Runtime;
#endif

#if USE_ENTITY_FRAMEWORK_6
namespace System.Data.SQLite.EF6
#else
namespace System.Data.SQLite.Linq












|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/********************************************************
 * ADO.NET 2.0 Data Provider for SQLite Version 3.X
 * Written by Robert Simpson (robert@blackcastlesoft.com)
 * 
 * Released to the public domain, use at your own risk!
 ********************************************************/

using System.Collections.Generic;
using System.Text;
using System.Collections.ObjectModel;
using System.Collections;

#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472
using System.Runtime;
#endif

#if USE_ENTITY_FRAMEWORK_6
namespace System.Data.SQLite.EF6
#else
namespace System.Data.SQLite.Linq
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
			{
				return this.m_map.Keys;
			}
		}

		internal IEnumerable<KeyValuePair<TKey, List<TValue>>> KeyValuePairs
		{
#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471
			[TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
#endif
			get
			{
				return this.m_map;
			}
		}
	}
}







|









119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
			{
				return this.m_map.Keys;
			}
		}

		internal IEnumerable<KeyValuePair<TKey, List<TValue>>> KeyValuePairs
		{
#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472
			[TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
#endif
			get
			{
				return this.m_map;
			}
		}
	}
}
Changes to System.Data.SQLite.Linq/SQL Generation/SqlChecker.cs.
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
  {
#if false
    private static Type sql8rewriter;

    static SqlChecker()
    {
        string version =
#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471
            "4.0.0.0";
#else
            "3.5.0.0";
#endif

        sql8rewriter = Type.GetType(String.Format("System.Data.SqlClient.SqlGen.Sql8ExpressionRewriter, System.Data.Entity, Version={0}, Culture=neutral, PublicKeyToken=b77a5c561934e089", version), false);
    }







|







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
  {
#if false
    private static Type sql8rewriter;

    static SqlChecker()
    {
        string version =
#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472
            "4.0.0.0";
#else
            "3.5.0.0";
#endif

        sql8rewriter = Type.GetType(String.Format("System.Data.SqlClient.SqlGen.Sql8ExpressionRewriter, System.Data.Entity, Version={0}, Culture=neutral, PublicKeyToken=b77a5c561934e089", version), false);
    }
Changes to System.Data.SQLite.Linq/SQL Generation/StringUtil.cs.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/********************************************************
 * ADO.NET 2.0 Data Provider for SQLite Version 3.X
 * Written by Robert Simpson (robert@blackcastlesoft.com)
 * 
 * Released to the public domain, use at your own risk!
 ********************************************************/

using System.Collections.Generic;
using System.Text;
using System.Globalization;
using System.Collections;

#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471
using System.Runtime;
#endif

#if USE_ENTITY_FRAMEWORK_6
namespace System.Data.SQLite.EF6
#else
namespace System.Data.SQLite.Linq












|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/********************************************************
 * ADO.NET 2.0 Data Provider for SQLite Version 3.X
 * Written by Robert Simpson (robert@blackcastlesoft.com)
 * 
 * Released to the public domain, use at your own risk!
 ********************************************************/

using System.Collections.Generic;
using System.Text;
using System.Globalization;
using System.Collections;

#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472
using System.Runtime;
#endif

#if USE_ENTITY_FRAMEWORK_6
namespace System.Data.SQLite.EF6
#else
namespace System.Data.SQLite.Linq
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
		}

		private static string InvariantConvertToString<T>(T value)
		{
			return string.Format(CultureInfo.InvariantCulture, "{0}", new object[] { value });
		}

#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471
		[TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
#endif
		internal static bool IsNullOrEmptyOrWhiteSpace(string value)
		{
			return IsNullOrEmptyOrWhiteSpace(value, 0);
		}








|







85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
		}

		private static string InvariantConvertToString<T>(T value)
		{
			return string.Format(CultureInfo.InvariantCulture, "{0}", new object[] { value });
		}

#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472
		[TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
#endif
		internal static bool IsNullOrEmptyOrWhiteSpace(string value)
		{
			return IsNullOrEmptyOrWhiteSpace(value, 0);
		}

165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
		}

		internal static void ToSeparatedString(StringBuilder builder, IEnumerable list, string separator)
		{
			ToSeparatedStringPrivate(builder, list, separator, string.Empty, false);
		}

#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471
		[TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
#endif
		internal static void ToSeparatedString(StringBuilder stringBuilder, IEnumerable list, string separator, string nullValue)
		{
			ToSeparatedStringPrivate(stringBuilder, list, separator, nullValue, false);
		}








|







165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
		}

		internal static void ToSeparatedString(StringBuilder builder, IEnumerable list, string separator)
		{
			ToSeparatedStringPrivate(builder, list, separator, string.Empty, false);
		}

#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472
		[TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
#endif
		internal static void ToSeparatedString(StringBuilder stringBuilder, IEnumerable list, string separator, string nullValue)
		{
			ToSeparatedStringPrivate(stringBuilder, list, separator, nullValue, false);
		}

Changes to System.Data.SQLite.Linq/System.Data.SQLite.Core.2012.csproj.
64
65
66
67
68
69
70
71

72
73
74
75
76
77
78
               Condition="'$(NetFx45)' != 'false' Or
                          '$(NetFx451)' != 'false' Or
                          '$(NetFx452)' != 'false' Or
                          '$(NetFx46)' != 'false' Or
                          '$(NetFx461)' != 'false' Or
                          '$(NetFx462)' != 'false' Or
                          '$(NetFx47)' != 'false' Or
                          '$(NetFx471)' != 'false'">

      <HintPath>$(SQLiteNetDir)\Externals\EntityFramework\lib\net45\EntityFramework.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Include="AssemblyInfo.cs" />
    <Compile Include="Properties\Resources.Designer.cs">
      <AutoGen>True</AutoGen>







|
>







64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
               Condition="'$(NetFx45)' != 'false' Or
                          '$(NetFx451)' != 'false' Or
                          '$(NetFx452)' != 'false' Or
                          '$(NetFx46)' != 'false' Or
                          '$(NetFx461)' != 'false' Or
                          '$(NetFx462)' != 'false' Or
                          '$(NetFx47)' != 'false' Or
                          '$(NetFx471)' != 'false' Or
                          '$(NetFx472)' != 'false'">
      <HintPath>$(SQLiteNetDir)\Externals\EntityFramework\lib\net45\EntityFramework.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Include="AssemblyInfo.cs" />
    <Compile Include="Properties\Resources.Designer.cs">
      <AutoGen>True</AutoGen>
Changes to System.Data.SQLite.Linq/System.Data.SQLite.Core.2013.csproj.
64
65
66
67
68
69
70
71

72
73
74
75
76
77
78
               Condition="'$(NetFx45)' != 'false' Or
                          '$(NetFx451)' != 'false' Or
                          '$(NetFx452)' != 'false' Or
                          '$(NetFx46)' != 'false' Or
                          '$(NetFx461)' != 'false' Or
                          '$(NetFx462)' != 'false' Or
                          '$(NetFx47)' != 'false' Or
                          '$(NetFx471)' != 'false'">

      <HintPath>$(SQLiteNetDir)\Externals\EntityFramework\lib\net45\EntityFramework.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Include="AssemblyInfo.cs" />
    <Compile Include="Properties\Resources.Designer.cs">
      <AutoGen>True</AutoGen>







|
>







64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
               Condition="'$(NetFx45)' != 'false' Or
                          '$(NetFx451)' != 'false' Or
                          '$(NetFx452)' != 'false' Or
                          '$(NetFx46)' != 'false' Or
                          '$(NetFx461)' != 'false' Or
                          '$(NetFx462)' != 'false' Or
                          '$(NetFx47)' != 'false' Or
                          '$(NetFx471)' != 'false' Or
                          '$(NetFx472)' != 'false'">
      <HintPath>$(SQLiteNetDir)\Externals\EntityFramework\lib\net45\EntityFramework.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Include="AssemblyInfo.cs" />
    <Compile Include="Properties\Resources.Designer.cs">
      <AutoGen>True</AutoGen>
Changes to System.Data.SQLite.Linq/System.Data.SQLite.Core.2015.csproj.
64
65
66
67
68
69
70
71

72
73
74
75
76
77
78
               Condition="'$(NetFx45)' != 'false' Or
                          '$(NetFx451)' != 'false' Or
                          '$(NetFx452)' != 'false' Or
                          '$(NetFx46)' != 'false' Or
                          '$(NetFx461)' != 'false' Or
                          '$(NetFx462)' != 'false' Or
                          '$(NetFx47)' != 'false' Or
                          '$(NetFx471)' != 'false'">

      <HintPath>$(SQLiteNetDir)\Externals\EntityFramework\lib\net45\EntityFramework.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Include="AssemblyInfo.cs" />
    <Compile Include="Properties\Resources.Designer.cs">
      <AutoGen>True</AutoGen>







|
>







64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
               Condition="'$(NetFx45)' != 'false' Or
                          '$(NetFx451)' != 'false' Or
                          '$(NetFx452)' != 'false' Or
                          '$(NetFx46)' != 'false' Or
                          '$(NetFx461)' != 'false' Or
                          '$(NetFx462)' != 'false' Or
                          '$(NetFx47)' != 'false' Or
                          '$(NetFx471)' != 'false' Or
                          '$(NetFx472)' != 'false'">
      <HintPath>$(SQLiteNetDir)\Externals\EntityFramework\lib\net45\EntityFramework.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Include="AssemblyInfo.cs" />
    <Compile Include="Properties\Resources.Designer.cs">
      <AutoGen>True</AutoGen>
Changes to System.Data.SQLite/AssemblyInfo.cs.
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//  Setting ComVisible to false makes the types in this assembly not visible
//  to COM componenets.  If you need to access a type in this assembly from
//  COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
[assembly: CLSCompliant(true)]
[assembly: InternalsVisibleTo("System.Data.SQLite.Linq, PublicKey=" + System.Data.SQLite.SQLite3.PublicKey)]

#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471
[assembly: InternalsVisibleTo("System.Data.SQLite.EF6, PublicKey=" + System.Data.SQLite.SQLite3.PublicKey)]
#endif

[assembly: NeutralResourcesLanguage("en")]

#if !PLATFORM_COMPACTFRAMEWORK
#if !NET_40 && !NET_45 && !NET_451 && !NET_452 && !NET_46 && !NET_461 && !NET_462 && !NET_47 && !NET_471
[assembly: AllowPartiallyTrustedCallers]
#endif

[assembly: ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]

#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471
//
// NOTE: This attribute is only available in .NET Framework 4.0 or higher.
//
[assembly: SecurityRules(SecurityRuleSet.Level1)]
#endif
#endif








|






|





|







38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//  Setting ComVisible to false makes the types in this assembly not visible
//  to COM componenets.  If you need to access a type in this assembly from
//  COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
[assembly: CLSCompliant(true)]
[assembly: InternalsVisibleTo("System.Data.SQLite.Linq, PublicKey=" + System.Data.SQLite.SQLite3.PublicKey)]

#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472
[assembly: InternalsVisibleTo("System.Data.SQLite.EF6, PublicKey=" + System.Data.SQLite.SQLite3.PublicKey)]
#endif

[assembly: NeutralResourcesLanguage("en")]

#if !PLATFORM_COMPACTFRAMEWORK
#if !NET_40 && !NET_45 && !NET_451 && !NET_452 && !NET_46 && !NET_461 && !NET_462 && !NET_47 && !NET_471 && !NET_472
[assembly: AllowPartiallyTrustedCallers]
#endif

[assembly: ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]

#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472
//
// NOTE: This attribute is only available in .NET Framework 4.0 or higher.
//
[assembly: SecurityRules(SecurityRuleSet.Level1)]
#endif
#endif

Changes to System.Data.SQLite/LINQ/SQLiteFactory_Linq.cs.
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
                rc, SQLiteConvert.ToUTF8("logging initialized via SQLiteFactory."));
        }
#endif

        SQLiteLog.Initialize();

        string version =
#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471
            "4.0.0.0";
#else
            "3.5.0.0";
#endif

        _dbProviderServicesType = Type.GetType(HelperMethods.StringFormat(CultureInfo.InvariantCulture, "System.Data.Common.DbProviderServices, System.Data.Entity, Version={0}, Culture=neutral, PublicKeyToken=b77a5c561934e089", version), false);
    }







|







52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
                rc, SQLiteConvert.ToUTF8("logging initialized via SQLiteFactory."));
        }
#endif

        SQLiteLog.Initialize();

        string version =
#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472
            "4.0.0.0";
#else
            "3.5.0.0";
#endif

        _dbProviderServicesType = Type.GetType(HelperMethods.StringFormat(CultureInfo.InvariantCulture, "System.Data.Common.DbProviderServices, System.Data.Entity, Version={0}, Culture=neutral, PublicKeyToken=b77a5c561934e089", version), false);
    }
Changes to System.Data.SQLite/SQLite3.cs.
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
    protected string _fileName;
    protected SQLiteConnectionFlags _flags;
    private bool _setLogCallback;
    protected bool _usePool;
    protected int _poolVersion;
    private int _cancelCount;

#if (NET_35 || NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471) && !PLATFORM_COMPACTFRAMEWORK
    private bool _buildingSchema;
#endif

    /// <summary>
    /// The user-defined functions registered on this connection
    /// </summary>
    protected Dictionary<SQLiteFunctionAttribute, SQLiteFunction> _functions;







|







77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
    protected string _fileName;
    protected SQLiteConnectionFlags _flags;
    private bool _setLogCallback;
    protected bool _usePool;
    protected int _poolVersion;
    private int _cancelCount;

#if (NET_35 || NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472) && !PLATFORM_COMPACTFRAMEWORK
    private bool _buildingSchema;
#endif

    /// <summary>
    /// The user-defined functions registered on this connection
    /// </summary>
    protected Dictionary<SQLiteFunctionAttribute, SQLiteFunction> _functions;
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
              }

              if (cmd != null)
                cmd.SetTypes(typedefs);

              return cmd;
            }
#if (NET_35 || NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471) && !PLATFORM_COMPACTFRAMEWORK
            else if (_buildingSchema == false && String.Compare(GetLastError(), 0, "no such table: TEMP.SCHEMA", 0, 26, StringComparison.OrdinalIgnoreCase) == 0)
            {
              strRemain = String.Empty;
              _buildingSchema = true;
              try
              {
                ISQLiteSchemaExtensions ext = ((IServiceProvider)SQLiteFactory.Instance).GetService(typeof(ISQLiteSchemaExtensions)) as ISQLiteSchemaExtensions;







|







1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
              }

              if (cmd != null)
                cmd.SetTypes(typedefs);

              return cmd;
            }
#if (NET_35 || NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472) && !PLATFORM_COMPACTFRAMEWORK
            else if (_buildingSchema == false && String.Compare(GetLastError(), 0, "no such table: TEMP.SCHEMA", 0, 26, StringComparison.OrdinalIgnoreCase) == 0)
            {
              strRemain = String.Empty;
              _buildingSchema = true;
              try
              {
                ISQLiteSchemaExtensions ext = ((IServiceProvider)SQLiteFactory.Instance).GetService(typeof(ISQLiteSchemaExtensions)) as ISQLiteSchemaExtensions;
Changes to System.Data.SQLite/SQLiteConvert.cs.
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
      typeof(UInt64),        // UInt64 (20)
      typeof(double),        // VarNumeric (21)
      typeof(string),        // AnsiStringFixedLength (22)
      typeof(string),        // StringFixedLength (23)
      typeof(string),        // ?? (24)
      typeof(string),        // Xml (25)
      typeof(DateTime),      // DateTime2 (26)
#if !PLATFORM_COMPACTFRAMEWORK && (NET_35 || NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471)
      //
      // NOTE: This type is only available on the
      //       .NET Framework 2.0 SP1 and later.
      //
      typeof(DateTimeOffset) // DateTimeOffset (27)
#else
      typeof(DateTime)       // DateTimeOffset (27)







|







1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
      typeof(UInt64),        // UInt64 (20)
      typeof(double),        // VarNumeric (21)
      typeof(string),        // AnsiStringFixedLength (22)
      typeof(string),        // StringFixedLength (23)
      typeof(string),        // ?? (24)
      typeof(string),        // Xml (25)
      typeof(DateTime),      // DateTime2 (26)
#if !PLATFORM_COMPACTFRAMEWORK && (NET_35 || NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472)
      //
      // NOTE: This type is only available on the
      //       .NET Framework 2.0 SP1 and later.
      //
      typeof(DateTimeOffset) // DateTimeOffset (27)
#else
      typeof(DateTime)       // DateTimeOffset (27)
Changes to System.Data.SQLite/SQLiteDefineConstants.cs.
135
136
137
138
139
140
141




142
143
144
145
146
147
148
#if NET_47
            "NET_47",
#endif

#if NET_471
            "NET_471",
#endif





#if NET_COMPACT_20
            "NET_COMPACT_20",
#endif

#if NET_STANDARD_20
            "NET_STANDARD_20",







>
>
>
>







135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#if NET_47
            "NET_47",
#endif

#if NET_471
            "NET_471",
#endif

#if NET_472
            "NET_472",
#endif

#if NET_COMPACT_20
            "NET_COMPACT_20",
#endif

#if NET_STANDARD_20
            "NET_STANDARD_20",
Changes to System.Data.SQLite/SQLitePatchLevel.cs.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/********************************************************
 * ADO.NET 2.0 Data Provider for SQLite Version 3.X
 * Written by Joe Mistachkin (joe@mistachkin.com)
 *
 * Released to the public domain, use at your own risk!
 ********************************************************/

using System.Data.SQLite;

///////////////////////////////////////////////////////////////////////////////

[assembly: AssemblySourceId(null)]

///////////////////////////////////////////////////////////////////////////////

[assembly: AssemblySourceTimeStamp(null)]











|



|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/********************************************************
 * ADO.NET 2.0 Data Provider for SQLite Version 3.X
 * Written by Joe Mistachkin (joe@mistachkin.com)
 *
 * Released to the public domain, use at your own risk!
 ********************************************************/

using System.Data.SQLite;

///////////////////////////////////////////////////////////////////////////////

[assembly: AssemblySourceId("a65ec303616fa04b37a17454b7e99d6d2ea3c165")]

///////////////////////////////////////////////////////////////////////////////

[assembly: AssemblySourceTimeStamp("2018-04-29 06:02:56 UTC")]
Changes to System.Data.SQLite/Targets/System.Data.SQLite.Files.targets.
90
91
92
93
94
95
96
97

98
99
100
101
102
103
104
105
106
107
108
109
110

111
112
113
114
115
116
117
                        '$(NetFx45)' != 'false' Or
                        '$(NetFx451)' != 'false' Or
                        '$(NetFx452)' != 'false' Or
                        '$(NetFx46)' != 'false' Or
                        '$(NetFx461)' != 'false' Or
                        '$(NetFx462)' != 'false' Or
                        '$(NetFx47)' != 'false' Or
                        '$(NetFx471)' != 'false'"

             Include="LINQ\SQLiteConnection_Linq.cs">
      <SubType>Component</SubType>
    </Compile>
    <Compile Condition="'$(NetFx35)' != 'false' Or
                        '$(NetFx40)' != 'false' Or
                        '$(NetFx45)' != 'false' Or
                        '$(NetFx451)' != 'false' Or
                        '$(NetFx452)' != 'false' Or
                        '$(NetFx46)' != 'false' Or
                        '$(NetFx461)' != 'false' Or
                        '$(NetFx462)' != 'false' Or
                        '$(NetFx47)' != 'false' Or
                        '$(NetFx471)' != 'false'"

             Include="LINQ\SQLiteFactory_Linq.cs">
      <SubType>Code</SubType>
    </Compile>
    <EmbeddedResource Include="Resources\SQLiteCommand.bmp" />
    <EmbeddedResource Include="Resources\SQLiteConnection.bmp" />
    <EmbeddedResource Include="Resources\SQLiteDataAdapter.bmp" />
  </ItemGroup>







|
>












|
>







90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
                        '$(NetFx45)' != 'false' Or
                        '$(NetFx451)' != 'false' Or
                        '$(NetFx452)' != 'false' Or
                        '$(NetFx46)' != 'false' Or
                        '$(NetFx461)' != 'false' Or
                        '$(NetFx462)' != 'false' Or
                        '$(NetFx47)' != 'false' Or
                        '$(NetFx471)' != 'false' Or
                        '$(NetFx472)' != 'false'"
             Include="LINQ\SQLiteConnection_Linq.cs">
      <SubType>Component</SubType>
    </Compile>
    <Compile Condition="'$(NetFx35)' != 'false' Or
                        '$(NetFx40)' != 'false' Or
                        '$(NetFx45)' != 'false' Or
                        '$(NetFx451)' != 'false' Or
                        '$(NetFx452)' != 'false' Or
                        '$(NetFx46)' != 'false' Or
                        '$(NetFx461)' != 'false' Or
                        '$(NetFx462)' != 'false' Or
                        '$(NetFx47)' != 'false' Or
                        '$(NetFx471)' != 'false' Or
                        '$(NetFx472)' != 'false'"
             Include="LINQ\SQLiteFactory_Linq.cs">
      <SubType>Code</SubType>
    </Compile>
    <EmbeddedResource Include="Resources\SQLiteCommand.bmp" />
    <EmbeddedResource Include="Resources\SQLiteConnection.bmp" />
    <EmbeddedResource Include="Resources\SQLiteDataAdapter.bmp" />
  </ItemGroup>
Changes to System.Data.SQLite/Targets/System.Data.SQLite.Properties.targets.
130
131
132
133
134
135
136











137
138
139
140
141
142
143
            Framework 4.7.1 (if necessary, it will typically be enabled from
            within the project file itself).
  -->
  <PropertyGroup Condition="'$(NetFx471)' != 'false'">
    <DefineConstants>$(DefineConstants);NET_471</DefineConstants>
  </PropertyGroup>












  <!--
      NOTE: Only use functionality available in the .NET Compact Framework 2.0?
            By default, this is disabled.  This must be enabled to successfully
            build the project using Visual Studio 2005 and/or the .NET Compact
            Framework 2.0 (if necessary, it will typically be enabled from
            within the project file itself).
  -->







>
>
>
>
>
>
>
>
>
>
>







130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
            Framework 4.7.1 (if necessary, it will typically be enabled from
            within the project file itself).
  -->
  <PropertyGroup Condition="'$(NetFx471)' != 'false'">
    <DefineConstants>$(DefineConstants);NET_471</DefineConstants>
  </PropertyGroup>

  <!--
      NOTE: Only use functionality available in the .NET Framework 4.7.2?  By
            default, this is disabled.  This must be enabled to successfully
            build the project using Visual Studio 2017 and/or the .NET
            Framework 4.7.2 (if necessary, it will typically be enabled from
            within the project file itself).
  -->
  <PropertyGroup Condition="'$(NetFx472)' != 'false'">
    <DefineConstants>$(DefineConstants);NET_472</DefineConstants>
  </PropertyGroup>

  <!--
      NOTE: Only use functionality available in the .NET Compact Framework 2.0?
            By default, this is disabled.  This must be enabled to successfully
            build the project using Visual Studio 2005 and/or the .NET Compact
            Framework 2.0 (if necessary, it will typically be enabled from
            within the project file itself).
  -->
Changes to System.Data.SQLite/UnsafeNativeMethods.cs.
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

#if !PLATFORM_COMPACTFRAMEWORK
  using System.Security;
#endif

  using System.Runtime.InteropServices;

#if (NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471) && !PLATFORM_COMPACTFRAMEWORK
  using System.Runtime.Versioning;
#endif

  using System.Text;

#if !PLATFORM_COMPACTFRAMEWORK || COUNT_HANDLE
  using System.Threading;







|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

#if !PLATFORM_COMPACTFRAMEWORK
  using System.Security;
#endif

  using System.Runtime.InteropServices;

#if (NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472) && !PLATFORM_COMPACTFRAMEWORK
  using System.Runtime.Versioning;
#endif

  using System.Text;

#if !PLATFORM_COMPACTFRAMEWORK || COUNT_HANDLE
  using System.Threading;
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
      /// </returns>
      private static string GetAssemblyTargetFramework(
          Assembly assembly
          )
      {
          if (assembly != null)
          {
#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471
              try
              {
                  if (assembly.IsDefined(
                          typeof(TargetFrameworkAttribute), false))
                  {
                      TargetFrameworkAttribute targetFramework =
                          (TargetFrameworkAttribute)







|







1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
      /// </returns>
      private static string GetAssemblyTargetFramework(
          Assembly assembly
          )
      {
          if (assembly != null)
          {
#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472
              try
              {
                  if (assembly.IsDefined(
                          typeof(TargetFrameworkAttribute), false))
                  {
                      TargetFrameworkAttribute targetFramework =
                          (TargetFrameworkAttribute)
Changes to Targets/SQLite.NET.Settings.targets.
95
96
97
98
99
100
101





102
103
104
105
106
107
108
                     Exists('$(SQLiteNetDir)\Targets\SQLite.NET.Settings.targets.netFx47')" />

  <Import Project="$(SQLiteNetDir)\Targets\SQLite.NET.Settings.targets.netFx471"
          Condition="'$(NetFx471)' != '' And '$(NetFx471)' != 'false' And
                     ('$(NetFx471Settings)' == '' Or '$(NetFx471Settings)' != 'false') And
                     Exists('$(SQLiteNetDir)\Targets\SQLite.NET.Settings.targets.netFx471')" />






  <!--
  ******************************************************************************
  **                       [Fairly] Generic Properties                        **
  ******************************************************************************
  -->

  <PropertyGroup>







>
>
>
>
>







95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
                     Exists('$(SQLiteNetDir)\Targets\SQLite.NET.Settings.targets.netFx47')" />

  <Import Project="$(SQLiteNetDir)\Targets\SQLite.NET.Settings.targets.netFx471"
          Condition="'$(NetFx471)' != '' And '$(NetFx471)' != 'false' And
                     ('$(NetFx471Settings)' == '' Or '$(NetFx471Settings)' != 'false') And
                     Exists('$(SQLiteNetDir)\Targets\SQLite.NET.Settings.targets.netFx471')" />

  <Import Project="$(SQLiteNetDir)\Targets\SQLite.NET.Settings.targets.netFx472"
          Condition="'$(NetFx472)' != '' And '$(NetFx472)' != 'false' And
                     ('$(NetFx472Settings)' == '' Or '$(NetFx472Settings)' != 'false') And
                     Exists('$(SQLiteNetDir)\Targets\SQLite.NET.Settings.targets.netFx472')" />

  <!--
  ******************************************************************************
  **                       [Fairly] Generic Properties                        **
  ******************************************************************************
  -->

  <PropertyGroup>
237
238
239
240
241
242
243









244
245
246
247
248
249
250
              default, this is disabled.  This must be enabled to successfully
              build the project using Visual Studio 2017 and/or the .NET
              Framework 4.7.1 (if necessary, it will typically be enabled from
              within the project file itself).
    -->
    <NetFx471 Condition="'$(NetFx471)' == ''">false</NetFx471>










    <!--
        NOTE: Load the version-specific settings for the .NET Framework 2.0?
              By default, this is disabled.  If this is enabled when compiling
              for the .NET Framework 2.0, the version-specific settings file
              "SQLite.NET.Settings.targets.netFx20" will be loaded if it is
              actually present, before any other settings in this file are
              processed.







>
>
>
>
>
>
>
>
>







242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
              default, this is disabled.  This must be enabled to successfully
              build the project using Visual Studio 2017 and/or the .NET
              Framework 4.7.1 (if necessary, it will typically be enabled from
              within the project file itself).
    -->
    <NetFx471 Condition="'$(NetFx471)' == ''">false</NetFx471>

    <!--
        NOTE: Only use functionality available in the .NET Framework 4.7.2?  By
              default, this is disabled.  This must be enabled to successfully
              build the project using Visual Studio 2017 and/or the .NET
              Framework 4.7.2 (if necessary, it will typically be enabled from
              within the project file itself).
    -->
    <NetFx472 Condition="'$(NetFx472)' == ''">false</NetFx472>

    <!--
        NOTE: Load the version-specific settings for the .NET Framework 2.0?
              By default, this is disabled.  If this is enabled when compiling
              for the .NET Framework 2.0, the version-specific settings file
              "SQLite.NET.Settings.targets.netFx20" will be loaded if it is
              actually present, before any other settings in this file are
              processed.
346
347
348
349
350
351
352










353
354
355
356
357
358
359
              By default, this is disabled.  If this is enabled when compiling
              for the .NET Framework 4.7.1, the version-specific settings file
              "SQLite.NET.Settings.targets.netFx471" will be loaded if it is
              actually present, before any other settings in this file are
              processed.
    -->
    <NetFx471Settings Condition="'$(NetFx471Settings)' == ''">false</NetFx471Settings>










  </PropertyGroup>

  <!--
  ******************************************************************************
  **                            Feature Properties                            **
  ******************************************************************************
  -->







>
>
>
>
>
>
>
>
>
>







360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
              By default, this is disabled.  If this is enabled when compiling
              for the .NET Framework 4.7.1, the version-specific settings file
              "SQLite.NET.Settings.targets.netFx471" will be loaded if it is
              actually present, before any other settings in this file are
              processed.
    -->
    <NetFx471Settings Condition="'$(NetFx471Settings)' == ''">false</NetFx471Settings>

    <!--
        NOTE: Load the version-specific settings for the .NET Framework 4.7.2?
              By default, this is disabled.  If this is enabled when compiling
              for the .NET Framework 4.7.2, the version-specific settings file
              "SQLite.NET.Settings.targets.netFx472" will be loaded if it is
              actually present, before any other settings in this file are
              processed.
    -->
    <NetFx472Settings Condition="'$(NetFx472Settings)' == ''">false</NetFx472Settings>
  </PropertyGroup>

  <!--
  ******************************************************************************
  **                            Feature Properties                            **
  ******************************************************************************
  -->
Changes to Targets/SQLite.NET.Settings.targets.netFx35.
37
38
39
40
41
42
43

44
45
46
47
48
49
    <NetFx451>false</NetFx451>
    <NetFx452>false</NetFx452>
    <NetFx46>false</NetFx46>
    <NetFx461>false</NetFx461>
    <NetFx462>false</NetFx462>
    <NetFx47>false</NetFx47>
    <NetFx471>false</NetFx471>

    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
    <TargetFrameworkProfile></TargetFrameworkProfile>
    <Prefer32Bit>false</Prefer32Bit>
    <!-- <PlatformToolset>v110</PlatformToolset> -->
  </PropertyGroup>
</Project>







>






37
38
39
40
41
42
43
44
45
46
47
48
49
50
    <NetFx451>false</NetFx451>
    <NetFx452>false</NetFx452>
    <NetFx46>false</NetFx46>
    <NetFx461>false</NetFx461>
    <NetFx462>false</NetFx462>
    <NetFx47>false</NetFx47>
    <NetFx471>false</NetFx471>
    <NetFx472>false</NetFx472>
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
    <TargetFrameworkProfile></TargetFrameworkProfile>
    <Prefer32Bit>false</Prefer32Bit>
    <!-- <PlatformToolset>v110</PlatformToolset> -->
  </PropertyGroup>
</Project>
Changes to Targets/SQLite.NET.Settings.targets.netFx40.
39
40
41
42
43
44
45

46
47
48
49
50
    <NetFx451>false</NetFx451>
    <NetFx452>false</NetFx452>
    <NetFx46>false</NetFx46>
    <NetFx461>false</NetFx461>
    <NetFx462>false</NetFx462>
    <NetFx47>false</NetFx47>
    <NetFx471>false</NetFx471>

    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <Prefer32Bit>false</Prefer32Bit>
    <!-- <PlatformToolset>v100</PlatformToolset> -->
  </PropertyGroup>
</Project>







>





39
40
41
42
43
44
45
46
47
48
49
50
51
    <NetFx451>false</NetFx451>
    <NetFx452>false</NetFx452>
    <NetFx46>false</NetFx46>
    <NetFx461>false</NetFx461>
    <NetFx462>false</NetFx462>
    <NetFx47>false</NetFx47>
    <NetFx471>false</NetFx471>
    <NetFx472>false</NetFx472>
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <Prefer32Bit>false</Prefer32Bit>
    <!-- <PlatformToolset>v100</PlatformToolset> -->
  </PropertyGroup>
</Project>
Changes to Tests/installer.eagle.
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

  set code [catch {
    testClrExec $installerExeFile [list -eventflags Wait -stdout output \
        -success Success] -debugPriority Lowest -tracePriority MediumHigh \
        -noRuntimeVersion true -noCompact true -noNetFx35 true \
        -noNetFx40 true -noNetFx45 true -noNetFx451 true -noNetFx452 true \
        -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true \
        -noNetFx471 true -noVs2008 true -noVs2010 true -noVs2012 true \
        -noVs2013 true -noVs2015 true -noVs2017 true \
        -whatIf true -verbose true -confirm true -install true -debug true \
        -wow64 true -directory [file nativename [getBuildDirectory false]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"







|
|







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

  set code [catch {
    testClrExec $installerExeFile [list -eventflags Wait -stdout output \
        -success Success] -debugPriority Lowest -tracePriority MediumHigh \
        -noRuntimeVersion true -noCompact true -noNetFx35 true \
        -noNetFx40 true -noNetFx45 true -noNetFx451 true -noNetFx452 true \
        -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true \
        -noNetFx471 true -noNetFx472 true -noVs2008 true -noVs2010 true \
        -noVs2012 true -noVs2013 true -noVs2015 true -noVs2017 true \
        -whatIf true -verbose true -confirm true -install true -debug true \
        -wow64 true -directory [file nativename [getBuildDirectory false]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95

  set code [catch {
    testClrExec $installerExeFile [list -eventflags Wait -stdout output \
        -success Success] -debugPriority Lowest -tracePriority MediumHigh \
        -noRuntimeVersion true -noCompact true -noNetFx35 true \
        -noNetFx40 true -noNetFx45 true -noNetFx451 true -noNetFx452 true \
        -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true \
        -noNetFx471 true -noVs2008 true -noVs2010 true -noVs2012 true \
        -noVs2013 true -noVs2015 true -noVs2017 true \
        -whatIf true -verbose true -confirm true -install false -debug true \
        -wow64 true -directory [file nativename [getBuildDirectory false]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"







|
|







80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95

  set code [catch {
    testClrExec $installerExeFile [list -eventflags Wait -stdout output \
        -success Success] -debugPriority Lowest -tracePriority MediumHigh \
        -noRuntimeVersion true -noCompact true -noNetFx35 true \
        -noNetFx40 true -noNetFx45 true -noNetFx451 true -noNetFx452 true \
        -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true \
        -noNetFx471 true -noNetFx472 true -noVs2008 true -noVs2010 true \
        -noVs2012 true -noVs2013 true -noVs2015 true -noVs2017 true \
        -whatIf true -verbose true -confirm true -install false -debug true \
        -wow64 true -directory [file nativename [getBuildDirectory false]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138

  set code [catch {
    testClrExec $installerExeFile [list -eventflags Wait -stdout output \
        -success Success] -debugPriority Lowest -tracePriority MediumHigh \
        -noRuntimeVersion true -noCompact true -noNetFx40 true \
        -noNetFx45 true -noNetFx451 true -noNetFx452 true -noNetFx46 true \
        -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true \
        -noVs2005 true -noVs2010 true -noVs2012 true -noVs2013 true \
        -noVs2015 true -noVs2017 true -whatIf true \
        -verbose true -confirm true -install true -debug true -wow64 true \
        -directory [file nativename [getBuildDirectory false]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"







|
|







123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138

  set code [catch {
    testClrExec $installerExeFile [list -eventflags Wait -stdout output \
        -success Success] -debugPriority Lowest -tracePriority MediumHigh \
        -noRuntimeVersion true -noCompact true -noNetFx40 true \
        -noNetFx45 true -noNetFx451 true -noNetFx452 true -noNetFx46 true \
        -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true \
        -noNetFx472 true -noVs2005 true -noVs2010 true -noVs2012 true \
        -noVs2013 true -noVs2015 true -noVs2017 true -whatIf true \
        -verbose true -confirm true -install true -debug true -wow64 true \
        -directory [file nativename [getBuildDirectory false]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181

  set code [catch {
    testClrExec $installerExeFile [list -eventflags Wait -stdout output \
        -success Success] -debugPriority Lowest -tracePriority MediumHigh \
        -noRuntimeVersion true -noCompact true -noNetFx40 true \
        -noNetFx45 true -noNetFx451 true -noNetFx452 true -noNetFx46 true \
        -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true \
        -noVs2005 true -noVs2010 true -noVs2012 true -noVs2013 true \
        -noVs2015 true -noVs2017 true -whatIf true \
        -verbose true -confirm true -install false -debug true -wow64 true \
        -directory [file nativename [getBuildDirectory false]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"







|
|







166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181

  set code [catch {
    testClrExec $installerExeFile [list -eventflags Wait -stdout output \
        -success Success] -debugPriority Lowest -tracePriority MediumHigh \
        -noRuntimeVersion true -noCompact true -noNetFx40 true \
        -noNetFx45 true -noNetFx451 true -noNetFx452 true -noNetFx46 true \
        -noNetFx461 true -noNetFx462 true -noNetFx47 true -noNetFx471 true \
        -noNetFx472 true -noVs2005 true -noVs2010 true -noVs2012 true \
        -noVs2013 true -noVs2015 true -noVs2017 true -whatIf true \
        -verbose true -confirm true -install false -debug true -wow64 true \
        -directory [file nativename [getBuildDirectory false]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224

  set code [catch {
    testClrExec $installerExeFile [list -eventflags Wait -stdout output \
        -success Success] -debugPriority Lowest -tracePriority MediumHigh \
        -noRuntimeVersion true -noCompact true -noNetFx20 true \
        -noNetFx35 true -noNetFx45 true -noNetFx451 true -noNetFx452 true \
        -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true \
        -noNetFx471 true -noVs2005 true -noVs2008 true -noVs2012 true \
        -noVs2013 true -noVs2015 true -noVs2017 true \
        -whatIf true -verbose true -confirm true -install true -debug true \
        -wow64 true -directory [file nativename [getBuildDirectory false]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"







|
|







209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224

  set code [catch {
    testClrExec $installerExeFile [list -eventflags Wait -stdout output \
        -success Success] -debugPriority Lowest -tracePriority MediumHigh \
        -noRuntimeVersion true -noCompact true -noNetFx20 true \
        -noNetFx35 true -noNetFx45 true -noNetFx451 true -noNetFx452 true \
        -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true \
        -noNetFx471 true -noNetFx472 true -noVs2005 true -noVs2008 true \
        -noVs2012 true -noVs2013 true -noVs2015 true -noVs2017 true \
        -whatIf true -verbose true -confirm true -install true -debug true \
        -wow64 true -directory [file nativename [getBuildDirectory false]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268

  set code [catch {
    testClrExec $installerExeFile [list -eventflags Wait -stdout output \
        -success Success] -debugPriority Lowest -tracePriority MediumHigh \
        -noRuntimeVersion true -noCompact true -noNetFx20 true \
        -noNetFx35 true -noNetFx45 true -noNetFx451 true -noNetFx452 true \
        -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true \
        -noNetFx471 true -noVs2005 true -noVs2008 true -noVs2012 true \
        -noVs2013 true -noVs2015 true -noVs2017 true \
        -whatIf true -verbose true -confirm true -install false -debug true \
        -wow64 true -directory [file nativename [getBuildDirectory false]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"







|
|







253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268

  set code [catch {
    testClrExec $installerExeFile [list -eventflags Wait -stdout output \
        -success Success] -debugPriority Lowest -tracePriority MediumHigh \
        -noRuntimeVersion true -noCompact true -noNetFx20 true \
        -noNetFx35 true -noNetFx45 true -noNetFx451 true -noNetFx452 true \
        -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true \
        -noNetFx471 true -noNetFx472 true -noVs2005 true -noVs2008 true \
        -noVs2012 true -noVs2013 true -noVs2015 true -noVs2017 true \
        -whatIf true -verbose true -confirm true -install false -debug true \
        -wow64 true -directory [file nativename [getBuildDirectory false]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312

  set code [catch {
    testClrExec $installerExeFile [list -eventflags Wait -stdout output \
        -success Success] -debugPriority Lowest -tracePriority MediumHigh \
        -noRuntimeVersion true -noCompact true -noNetFx20 true \
        -noNetFx35 true -noNetFx40 true -noNetFx451 true -noNetFx452 true \
        -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true \
        -noNetFx471 true -noVs2005 true -noVs2008 true -noVs2010 true \
        -noVs2013 true -noVs2015 true -noVs2017 true \
        -whatIf true -verbose true -confirm true -install true -debug true \
        -wow64 true -configVersion 4.0.30319 \
        -directory [file nativename [getBuildDirectory false]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]








|
|







297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312

  set code [catch {
    testClrExec $installerExeFile [list -eventflags Wait -stdout output \
        -success Success] -debugPriority Lowest -tracePriority MediumHigh \
        -noRuntimeVersion true -noCompact true -noNetFx20 true \
        -noNetFx35 true -noNetFx40 true -noNetFx451 true -noNetFx452 true \
        -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true \
        -noNetFx471 true -noNetFx472 true -noVs2005 true -noVs2008 true \
        -noVs2010 true -noVs2013 true -noVs2015 true -noVs2017 true \
        -whatIf true -verbose true -confirm true -install true -debug true \
        -wow64 true -configVersion 4.0.30319 \
        -directory [file nativename [getBuildDirectory false]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357

  set code [catch {
    testClrExec $installerExeFile [list -eventflags Wait -stdout output \
        -success Success] -debugPriority Lowest -tracePriority MediumHigh \
        -noRuntimeVersion true -noCompact true -noNetFx20 true \
        -noNetFx35 true -noNetFx40 true -noNetFx451 true -noNetFx452 true \
        -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true \
        -noNetFx471 true -noVs2005 true -noVs2008 true -noVs2010 true \
        -noVs2013 true -noVs2015 true -noVs2017 true \
        -whatIf true -verbose true -confirm true -install false -debug true \
        -wow64 true -configVersion 4.0.30319 \
        -directory [file nativename [getBuildDirectory false]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]








|
|







342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357

  set code [catch {
    testClrExec $installerExeFile [list -eventflags Wait -stdout output \
        -success Success] -debugPriority Lowest -tracePriority MediumHigh \
        -noRuntimeVersion true -noCompact true -noNetFx20 true \
        -noNetFx35 true -noNetFx40 true -noNetFx451 true -noNetFx452 true \
        -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true \
        -noNetFx471 true -noNetFx472 true -noVs2005 true -noVs2008 true \
        -noVs2010 true -noVs2013 true -noVs2015 true -noVs2017 true \
        -whatIf true -verbose true -confirm true -install false -debug true \
        -wow64 true -configVersion 4.0.30319 \
        -directory [file nativename [getBuildDirectory false]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402

  set code [catch {
    testClrExec $installerExeFile [list -eventflags Wait -stdout output \
        -success Success] -debugPriority Lowest -tracePriority MediumHigh \
        -noRuntimeVersion true -noCompact true -noNetFx20 true \
        -noNetFx35 true -noNetFx40 true -noNetFx45 true -noNetFx452 true \
        -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true \
        -noNetFx471 true -noVs2005 true -noVs2008 true -noVs2010 true \
        -noVs2012 true -noVs2015 true -noVs2017 true \
        -whatIf true -verbose true -confirm true -install true -debug true \
        -wow64 true -configVersion 4.0.30319 \
        -directory [file nativename [getBuildDirectory false]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]








|
|







387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402

  set code [catch {
    testClrExec $installerExeFile [list -eventflags Wait -stdout output \
        -success Success] -debugPriority Lowest -tracePriority MediumHigh \
        -noRuntimeVersion true -noCompact true -noNetFx20 true \
        -noNetFx35 true -noNetFx40 true -noNetFx45 true -noNetFx452 true \
        -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true \
        -noNetFx471 true -noNetFx472 true -noVs2005 true -noVs2008 true \
        -noVs2010 true -noVs2012 true -noVs2015 true -noVs2017 true \
        -whatIf true -verbose true -confirm true -install true -debug true \
        -wow64 true -configVersion 4.0.30319 \
        -directory [file nativename [getBuildDirectory false]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447

  set code [catch {
    testClrExec $installerExeFile [list -eventflags Wait -stdout output \
        -success Success] -debugPriority Lowest -tracePriority MediumHigh \
        -noRuntimeVersion true -noCompact true -noNetFx20 true \
        -noNetFx35 true -noNetFx40 true -noNetFx45 true -noNetFx452 true \
        -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true \
        -noNetFx471 true -noVs2005 true -noVs2008 true -noVs2010 true \
        -noVs2012 true -noVs2015 true -noVs2017 true \
        -whatIf true -verbose true -confirm true -install false -debug true \
        -wow64 true -configVersion 4.0.30319 \
        -directory [file nativename [getBuildDirectory false]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]








|
|







432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447

  set code [catch {
    testClrExec $installerExeFile [list -eventflags Wait -stdout output \
        -success Success] -debugPriority Lowest -tracePriority MediumHigh \
        -noRuntimeVersion true -noCompact true -noNetFx20 true \
        -noNetFx35 true -noNetFx40 true -noNetFx45 true -noNetFx452 true \
        -noNetFx46 true -noNetFx461 true -noNetFx462 true -noNetFx47 true \
        -noNetFx471 true -noNetFx472 true -noVs2005 true -noVs2008 true \
        -noVs2010 true -noVs2012 true -noVs2015 true -noVs2017 true \
        -whatIf true -verbose true -confirm true -install false -debug true \
        -wow64 true -configVersion 4.0.30319 \
        -directory [file nativename [getBuildDirectory false]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492

  set code [catch {
    testClrExec $installerExeFile [list -eventflags Wait -stdout output \
        -success Success] -debugPriority Lowest -tracePriority MediumHigh \
        -noRuntimeVersion true -noCompact true -noNetFx20 true \
        -noNetFx35 true -noNetFx40 true -noNetFx45 true -noNetFx451 true \
        -noNetFx452 true -noNetFx461 true -noNetFx462 true -noNetFx47 true \
        -noNetFx471 true -noVs2005 true -noVs2008 true -noVs2010 true \
        -noVs2012 true -noVs2013 true -noVs2017 true \
        -whatIf true -verbose true -confirm true -install true -debug true \
        -wow64 true -configVersion 4.0.30319 \
        -directory [file nativename [getBuildDirectory false]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]








|
|







477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492

  set code [catch {
    testClrExec $installerExeFile [list -eventflags Wait -stdout output \
        -success Success] -debugPriority Lowest -tracePriority MediumHigh \
        -noRuntimeVersion true -noCompact true -noNetFx20 true \
        -noNetFx35 true -noNetFx40 true -noNetFx45 true -noNetFx451 true \
        -noNetFx452 true -noNetFx461 true -noNetFx462 true -noNetFx47 true \
        -noNetFx471 true -noNetFx472 true -noVs2005 true -noVs2008 true \
        -noVs2010 true -noVs2012 true -noVs2013 true -noVs2017 true \
        -whatIf true -verbose true -confirm true -install true -debug true \
        -wow64 true -configVersion 4.0.30319 \
        -directory [file nativename [getBuildDirectory false]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537

  set code [catch {
    testClrExec $installerExeFile [list -eventflags Wait -stdout output \
        -success Success] -debugPriority Lowest -tracePriority MediumHigh \
        -noRuntimeVersion true -noCompact true -noNetFx20 true \
        -noNetFx35 true -noNetFx40 true -noNetFx45 true -noNetFx451 true \
        -noNetFx452 true -noNetFx461 true -noNetFx462 true -noNetFx47 true \
        -noNetFx471 true -noVs2005 true -noVs2008 true -noVs2010 true \
        -noVs2012 true -noVs2013 true -noVs2017 true \
        -whatIf true -verbose true -confirm true -install false -debug true \
        -wow64 true -configVersion 4.0.30319 \
        -directory [file nativename [getBuildDirectory false]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]








|
|







522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537

  set code [catch {
    testClrExec $installerExeFile [list -eventflags Wait -stdout output \
        -success Success] -debugPriority Lowest -tracePriority MediumHigh \
        -noRuntimeVersion true -noCompact true -noNetFx20 true \
        -noNetFx35 true -noNetFx40 true -noNetFx45 true -noNetFx451 true \
        -noNetFx452 true -noNetFx461 true -noNetFx462 true -noNetFx47 true \
        -noNetFx471 true -noNetFx472 true -noVs2005 true -noVs2008 true \
        -noVs2010 true -noVs2012 true -noVs2013 true -noVs2017 true \
        -whatIf true -verbose true -confirm true -install false -debug true \
        -wow64 true -configVersion 4.0.30319 \
        -directory [file nativename [getBuildDirectory false]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

Changes to Tests/tkt-a4d9c7ee94.eagle.
54
55
56
57
58
59
60
61

62
63
64
65
66
67
68
[haveConstraint buildFramework.netFx45] || \
[haveConstraint buildFramework.netFx451] || \
[haveConstraint buildFramework.netFx452] || \
[haveConstraint buildFramework.netFx46] || \
[haveConstraint buildFramework.netFx461] || \
[haveConstraint buildFramework.netFx462] || \
[haveConstraint buildFramework.netFx47] || \
[haveConstraint buildFramework.netFx471]} \

-result {0 {1581 1730 1833 2116 2139 2184 2903 3049 3801 6897 7960 8837 10019\
10038 11747 14450 19428 19713 20852 27403 27511 29202 30346 31406 32859 33607\
40222 44122 45839 48075 48084 48304 53404 55113 55439 60179 60601 72716 75234\
78759 80202 80909 85014 85251 90405 94025 94105 95008 95054 95060 98004 98052\
98104}}}

###############################################################################







|
>







54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
[haveConstraint buildFramework.netFx45] || \
[haveConstraint buildFramework.netFx451] || \
[haveConstraint buildFramework.netFx452] || \
[haveConstraint buildFramework.netFx46] || \
[haveConstraint buildFramework.netFx461] || \
[haveConstraint buildFramework.netFx462] || \
[haveConstraint buildFramework.netFx47] || \
[haveConstraint buildFramework.netFx471] || \
[haveConstraint buildFramework.netFx472]} \
-result {0 {1581 1730 1833 2116 2139 2184 2903 3049 3801 6897 7960 8837 10019\
10038 11747 14450 19428 19713 20852 27403 27511 29202 30346 31406 32859 33607\
40222 44122 45839 48075 48084 48304 53404 55113 55439 60179 60601 72716 75234\
78759 80202 80909 85014 85251 90405 94025 94105 95008 95054 95060 98004 98052\
98104}}}

###############################################################################
100
101
102
103
104
105
106
107

108
109
110
111
112
113
114
115
116
117
118
[haveConstraint buildFramework.netFx45] || \
[haveConstraint buildFramework.netFx451] || \
[haveConstraint buildFramework.netFx452] || \
[haveConstraint buildFramework.netFx46] || \
[haveConstraint buildFramework.netFx461] || \
[haveConstraint buildFramework.netFx462] || \
[haveConstraint buildFramework.netFx47] || \
[haveConstraint buildFramework.netFx471]} \

-result {0 {1581 1730 1833 2116 2139 2184 2903 3049 3801 6897 7960 8837 10019\
10038 11747 14450 19428 19713 20852 27403 27511 29202 30346 31406 32859 33607\
40222 44122 45839 48075 48084 48304 53404 55113 55439 60179 60601 72716 75234\
78759 80202 80909 85014 85251 90405 94025 94105 95008 95054 95060 98004 98052\
98104}}}

###############################################################################

runSQLiteTestFilesEpilogue
runSQLiteTestEpilogue
runTestEpilogue







|
>











101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
[haveConstraint buildFramework.netFx45] || \
[haveConstraint buildFramework.netFx451] || \
[haveConstraint buildFramework.netFx452] || \
[haveConstraint buildFramework.netFx46] || \
[haveConstraint buildFramework.netFx461] || \
[haveConstraint buildFramework.netFx462] || \
[haveConstraint buildFramework.netFx47] || \
[haveConstraint buildFramework.netFx471] || \
[haveConstraint buildFramework.netFx472]} \
-result {0 {1581 1730 1833 2116 2139 2184 2903 3049 3801 6897 7960 8837 10019\
10038 11747 14450 19428 19713 20852 27403 27511 29202 30346 31406 32859 33607\
40222 44122 45839 48075 48084 48304 53404 55113 55439 60179 60601 72716 75234\
78759 80202 80909 85014 85251 90405 94025 94105 95008 95054 95060 98004 98052\
98104}}}

###############################################################################

runSQLiteTestFilesEpilogue
runSQLiteTestEpilogue
runTestEpilogue
Changes to lib/System.Data.SQLite/common.eagle.
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
            2013 {
              return netFx451; # TODO: Or "netFx452"?
            }
            2015 {
              return netFx46; # TODO: Or "netFx461" / "netFx462"?
            }
            2017 {
              return netFx47; # TODO: Or "netFx471"?
            }
            NetStandard20 {
              return netStandard20
            }
            default {
              return netFx35; # TODO: Good "fallback" default?
            }







|







278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
            2013 {
              return netFx451; # TODO: Or "netFx452"?
            }
            2015 {
              return netFx46; # TODO: Or "netFx461" / "netFx462"?
            }
            2017 {
              return netFx47; # TODO: Or "netFx471" / "netFx472"?
            }
            NetStandard20 {
              return netStandard20
            }
            default {
              return netFx35; # TODO: Good "fallback" default?
            }
4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
        #       these files may be native and/or managed assemblies that are
        #       required to perform various tests.
        #
        set externalFileNames [list \
            [file join EntityFramework lib [string map [list Fx ""] \
            [string map [list netFx451 netFx45 netFx452 netFx45 netFx46 \
            netFx45 netFx461 netFx45 netFx462 netFx45 netFx47 netFx45 \
            netFx471 netFx45 netStandard20 netFx45] [getBuildNetFx]]] \
            EntityFramework.dll]]

        #
        # NOTE: Build the list of native assembly files that we handle.
        #
        set nativeFileNames [list]

        eval lappend nativeFileNames [getNativeLibraryFileNamesOnly]







|
|







4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
        #       these files may be native and/or managed assemblies that are
        #       required to perform various tests.
        #
        set externalFileNames [list \
            [file join EntityFramework lib [string map [list Fx ""] \
            [string map [list netFx451 netFx45 netFx452 netFx45 netFx46 \
            netFx45 netFx461 netFx45 netFx462 netFx45 netFx47 netFx45 \
            netFx471 netFx45 netFx472 netFx45 netStandard20 netFx45] \
            [getBuildNetFx]]] EntityFramework.dll]]

        #
        # NOTE: Build the list of native assembly files that we handle.
        #
        set nativeFileNames [list]

        eval lappend nativeFileNames [getNativeLibraryFileNamesOnly]
Changes to readme.htm.
209
210
211
212
213
214
215

216
217
218
219
220
221
222

<p>
    <b>1.0.109.0 - May XX, 2018 <font color="red">(release scheduled)</font></b>
</p>
<ul>
    <li>Updated to <a href="https://www.sqlite.org/releaselog/3_23_1.html">SQLite 3.23.1</a>.</li>
    <li>Prevent GetSchemaTable from throwing InvalidCastException. Fix for [baf42ee135].</li>

    <li>Add preliminary support for .NET Core 2.0 and the .NET Standard 2.0. Pursuant to [5c89cecd1b].</li>
    <li>Add simpler overload for the SQLiteBlob.Create method. Pursuant to [dfc8133ba2].</li>
    <li>Add GetFieldAffinity method to the SQLiteDataReader class.</li>
</ul>
<p>
    <b>1.0.108.0 - March 2, 2018</b>
</p>







>







209
210
211
212
213
214
215
216
217
218
219
220
221
222
223

<p>
    <b>1.0.109.0 - May XX, 2018 <font color="red">(release scheduled)</font></b>
</p>
<ul>
    <li>Updated to <a href="https://www.sqlite.org/releaselog/3_23_1.html">SQLite 3.23.1</a>.</li>
    <li>Prevent GetSchemaTable from throwing InvalidCastException. Fix for [baf42ee135].</li>
    <li>Add preliminary support for the .NET Framework 4.7.2.</li>
    <li>Add preliminary support for .NET Core 2.0 and the .NET Standard 2.0. Pursuant to [5c89cecd1b].</li>
    <li>Add simpler overload for the SQLiteBlob.Create method. Pursuant to [dfc8133ba2].</li>
    <li>Add GetFieldAffinity method to the SQLiteDataReader class.</li>
</ul>
<p>
    <b>1.0.108.0 - March 2, 2018</b>
</p>
Changes to testlinq/Program.cs.
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204

                              return 1;
                          }
                      }

                      return BinaryGuidTest(value);
                  }
#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471
              case "binaryguid2":
                  {
                      bool value = false;

                      if (args.Length > 1)
                      {
                          if (!bool.TryParse(args[1], out value))
                          {
                              Console.WriteLine(
                                  "cannot parse \"{0}\" as boolean",
                                  args[1]);

                              return 1;
                          }
                      }

                      return BinaryGuidTest2(value);
                  }
#endif
#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471
              case "round":
                  {
                      return RoundTest();
                  }
#endif
              case "complexprimarykey":
                  {







|



















|







170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204

                              return 1;
                          }
                      }

                      return BinaryGuidTest(value);
                  }
#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472
              case "binaryguid2":
                  {
                      bool value = false;

                      if (args.Length > 1)
                      {
                          if (!bool.TryParse(args[1], out value))
                          {
                              Console.WriteLine(
                                  "cannot parse \"{0}\" as boolean",
                                  args[1]);

                              return 1;
                          }
                      }

                      return BinaryGuidTest2(value);
                  }
#endif
#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472
              case "round":
                  {
                      return RoundTest();
                  }
#endif
              case "complexprimarykey":
                  {
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
                          territories.Regions = db.Regions.First();

                          db.AddObject("Territories", territories);
                      }

                      try
                      {
#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471
                          db.SaveChanges(SaveOptions.None);
#else
                          db.SaveChanges(false);
#endif
                      }
                      catch (Exception e)
                      {







|







492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
                          territories.Regions = db.Regions.First();

                          db.AddObject("Territories", territories);
                      }

                      try
                      {
#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472
                          db.SaveChanges(SaveOptions.None);
#else
                          db.SaveChanges(false);
#endif
                      }
                      catch (Exception e)
                      {
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
              }
          }
          else
          {
              using (northwindEFEntities db = new northwindEFEntities())
              {
                  bool once = false;
#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471
                  var query = from t in db.Territories
                    where territoryIds.AsQueryable<long>().Contains<long>(t.TerritoryID)
                    orderby t.TerritoryID
                    select t;

                  foreach (Territories territories in query)
                  {







|







515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
              }
          }
          else
          {
              using (northwindEFEntities db = new northwindEFEntities())
              {
                  bool once = false;
#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472
                  var query = from t in db.Territories
                    where territoryIds.AsQueryable<long>().Contains<long>(t.TerritoryID)
                    orderby t.TerritoryID
                    select t;

                  foreach (Territories territories in query)
                  {
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
          Environment.SetEnvironmentVariable(
              "AppendManifestToken_SQLiteProviderManifest",
              null);

          return 0;
      }

#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471
      //
      // NOTE: Used to test the BinaryGUID connection string property with
      //       the Contains() function (ticket [a4d9c7ee94]).  We cannot
      //       use the Contains extension method within a LINQ query with
      //       the .NET Framework 3.5.
      //
      private static int BinaryGuidTest2(bool binaryGuid)







|







728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
          Environment.SetEnvironmentVariable(
              "AppendManifestToken_SQLiteProviderManifest",
              null);

          return 0;
      }

#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472
      //
      // NOTE: Used to test the BinaryGUID connection string property with
      //       the Contains() function (ticket [a4d9c7ee94]).  We cannot
      //       use the Contains extension method within a LINQ query with
      //       the .NET Framework 3.5.
      //
      private static int BinaryGuidTest2(bool binaryGuid)
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
                  null);
          }

          Environment.SetEnvironmentVariable("SQLite_ForceLogPrepare", null);
          Trace.Listeners.Remove(listener);
      }

#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471
      //
      // NOTE: Used to test the ROUND fix (i.e. being able to properly handle
      //       the two argument form).
      //
      private static int RoundTest()
      {
            using (northwindEFEntities db = new northwindEFEntities())







|







921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
                  null);
          }

          Environment.SetEnvironmentVariable("SQLite_ForceLogPrepare", null);
          Trace.Listeners.Remove(listener);
      }

#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472
      //
      // NOTE: Used to test the ROUND fix (i.e. being able to properly handle
      //       the two argument form).
      //
      private static int RoundTest()
      {
            using (northwindEFEntities db = new northwindEFEntities())
Changes to testlinq/test.2012.csproj.
63
64
65
66
67
68
69
70

71
72
73
74
75
76
77
               Condition="'$(NetFx45)' != 'false' Or
                          '$(NetFx451)' != 'false' Or
                          '$(NetFx452)' != 'false' Or
                          '$(NetFx46)' != 'false' Or
                          '$(NetFx461)' != 'false' Or
                          '$(NetFx462)' != 'false' Or
                          '$(NetFx47)' != 'false' Or
                          '$(NetFx471)' != 'false'">

      <HintPath>$(SQLiteNetDir)\Externals\EntityFramework\lib\net45\EntityFramework.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Condition="'$(TargetFrameworkVersion)' == 'v3.5'"
             Include="NorthwindModel.Linq.2008.Designer.cs">
      <AutoGen>True</AutoGen>







|
>







63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
               Condition="'$(NetFx45)' != 'false' Or
                          '$(NetFx451)' != 'false' Or
                          '$(NetFx452)' != 'false' Or
                          '$(NetFx46)' != 'false' Or
                          '$(NetFx461)' != 'false' Or
                          '$(NetFx462)' != 'false' Or
                          '$(NetFx47)' != 'false' Or
                          '$(NetFx471)' != 'false' Or
                          '$(NetFx472)' != 'false'">
      <HintPath>$(SQLiteNetDir)\Externals\EntityFramework\lib\net45\EntityFramework.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Condition="'$(TargetFrameworkVersion)' == 'v3.5'"
             Include="NorthwindModel.Linq.2008.Designer.cs">
      <AutoGen>True</AutoGen>
Changes to testlinq/test.2013.csproj.
63
64
65
66
67
68
69
70

71
72
73
74
75
76
77
               Condition="'$(NetFx45)' != 'false' Or
                          '$(NetFx451)' != 'false' Or
                          '$(NetFx452)' != 'false' Or
                          '$(NetFx46)' != 'false' Or
                          '$(NetFx461)' != 'false' Or
                          '$(NetFx462)' != 'false' Or
                          '$(NetFx47)' != 'false' Or
                          '$(NetFx471)' != 'false'">

      <HintPath>$(SQLiteNetDir)\Externals\EntityFramework\lib\net45\EntityFramework.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Condition="'$(TargetFrameworkVersion)' == 'v3.5'"
             Include="NorthwindModel.Linq.2008.Designer.cs">
      <AutoGen>True</AutoGen>







|
>







63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
               Condition="'$(NetFx45)' != 'false' Or
                          '$(NetFx451)' != 'false' Or
                          '$(NetFx452)' != 'false' Or
                          '$(NetFx46)' != 'false' Or
                          '$(NetFx461)' != 'false' Or
                          '$(NetFx462)' != 'false' Or
                          '$(NetFx47)' != 'false' Or
                          '$(NetFx471)' != 'false' Or
                          '$(NetFx472)' != 'false'">
      <HintPath>$(SQLiteNetDir)\Externals\EntityFramework\lib\net45\EntityFramework.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Condition="'$(TargetFrameworkVersion)' == 'v3.5'"
             Include="NorthwindModel.Linq.2008.Designer.cs">
      <AutoGen>True</AutoGen>
Changes to testlinq/test.2015.csproj.
63
64
65
66
67
68
69
70

71
72
73
74
75
76
77
               Condition="'$(NetFx45)' != 'false' Or
                          '$(NetFx451)' != 'false' Or
                          '$(NetFx452)' != 'false' Or
                          '$(NetFx46)' != 'false' Or
                          '$(NetFx461)' != 'false' Or
                          '$(NetFx462)' != 'false' Or
                          '$(NetFx47)' != 'false' Or
                          '$(NetFx471)' != 'false'">

      <HintPath>$(SQLiteNetDir)\Externals\EntityFramework\lib\net45\EntityFramework.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Condition="'$(TargetFrameworkVersion)' == 'v3.5'"
             Include="NorthwindModel.Linq.2008.Designer.cs">
      <AutoGen>True</AutoGen>







|
>







63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
               Condition="'$(NetFx45)' != 'false' Or
                          '$(NetFx451)' != 'false' Or
                          '$(NetFx452)' != 'false' Or
                          '$(NetFx46)' != 'false' Or
                          '$(NetFx461)' != 'false' Or
                          '$(NetFx462)' != 'false' Or
                          '$(NetFx47)' != 'false' Or
                          '$(NetFx471)' != 'false' Or
                          '$(NetFx472)' != 'false'">
      <HintPath>$(SQLiteNetDir)\Externals\EntityFramework\lib\net45\EntityFramework.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Condition="'$(TargetFrameworkVersion)' == 'v3.5'"
             Include="NorthwindModel.Linq.2008.Designer.cs">
      <AutoGen>True</AutoGen>
Changes to testlinq/test.2017.csproj.
63
64
65
66
67
68
69
70

71
72
73
74
75
76
77
               Condition="'$(NetFx45)' != 'false' Or
                          '$(NetFx451)' != 'false' Or
                          '$(NetFx452)' != 'false' Or
                          '$(NetFx46)' != 'false' Or
                          '$(NetFx461)' != 'false' Or
                          '$(NetFx462)' != 'false' Or
                          '$(NetFx47)' != 'false' Or
                          '$(NetFx471)' != 'false'">

      <HintPath>$(SQLiteNetDir)\Externals\EntityFramework\lib\net45\EntityFramework.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Condition="'$(TargetFrameworkVersion)' == 'v3.5'"
             Include="NorthwindModel.Linq.2008.Designer.cs">
      <AutoGen>True</AutoGen>







|
>







63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
               Condition="'$(NetFx45)' != 'false' Or
                          '$(NetFx451)' != 'false' Or
                          '$(NetFx452)' != 'false' Or
                          '$(NetFx46)' != 'false' Or
                          '$(NetFx461)' != 'false' Or
                          '$(NetFx462)' != 'false' Or
                          '$(NetFx47)' != 'false' Or
                          '$(NetFx471)' != 'false' Or
                          '$(NetFx472)' != 'false'">
      <HintPath>$(SQLiteNetDir)\Externals\EntityFramework\lib\net45\EntityFramework.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Condition="'$(TargetFrameworkVersion)' == 'v3.5'"
             Include="NorthwindModel.Linq.2008.Designer.cs">
      <AutoGen>True</AutoGen>
Changes to tools/install/Installer.cs.
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
        #endregion
    }
    #endregion

    ///////////////////////////////////////////////////////////////////////////

    #region Installer Class
#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471
    [SecurityCritical()]
#else
    [SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode = true)]
#endif
    internal static class Installer
    {
        #region Unsafe Native Methods Class







|







208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
        #endregion
    }
    #endregion

    ///////////////////////////////////////////////////////////////////////////

    #region Installer Class
#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472
    [SecurityCritical()]
#else
    [SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode = true)]
#endif
    internal static class Installer
    {
        #region Unsafe Native Methods Class
3378
3379
3380
3381
3382
3383
3384

3385
3386
3387
3388
3389
3390
3391
                bool noNetFx451,
                bool noNetFx452,
                bool noNetFx46,
                bool noNetFx461,
                bool noNetFx462,
                bool noNetFx47,
                bool noNetFx471,

                bool noVs2005,
                bool noVs2008,
                bool noVs2010,
                bool noVs2012,
                bool noVs2013,
                bool noVs2015,
                bool noVs2017,







>







3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
                bool noNetFx451,
                bool noNetFx452,
                bool noNetFx46,
                bool noNetFx461,
                bool noNetFx462,
                bool noNetFx47,
                bool noNetFx471,
                bool noNetFx472,
                bool noVs2005,
                bool noVs2008,
                bool noVs2010,
                bool noVs2012,
                bool noVs2013,
                bool noVs2015,
                bool noVs2017,
3429
3430
3431
3432
3433
3434
3435

3436
3437
3438
3439
3440
3441
3442
                this.noNetFx451 = noNetFx451;
                this.noNetFx452 = noNetFx452;
                this.noNetFx46 = noNetFx46;
                this.noNetFx461 = noNetFx461;
                this.noNetFx462 = noNetFx462;
                this.noNetFx47 = noNetFx47;
                this.noNetFx471 = noNetFx471;

                this.noVs2005 = noVs2005;
                this.noVs2008 = noVs2008;
                this.noVs2010 = noVs2010;
                this.noVs2012 = noVs2012;
                this.noVs2013 = noVs2013;
                this.noVs2015 = noVs2015;
                this.noVs2017 = noVs2017;







>







3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
                this.noNetFx451 = noNetFx451;
                this.noNetFx452 = noNetFx452;
                this.noNetFx46 = noNetFx46;
                this.noNetFx461 = noNetFx461;
                this.noNetFx462 = noNetFx462;
                this.noNetFx47 = noNetFx47;
                this.noNetFx471 = noNetFx471;
                this.noNetFx472 = noNetFx472;
                this.noVs2005 = noVs2005;
                this.noVs2008 = noVs2008;
                this.noVs2010 = noVs2010;
                this.noVs2012 = noVs2012;
                this.noVs2013 = noVs2013;
                this.noVs2015 = noVs2015;
                this.noVs2017 = noVs2017;
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
                    linqFileName, ef6FileName, designerFileName, null, null,
                    null, TraceOps.DebugFormat, TraceOps.TraceFormat,
                    InstallFlags.Default, ProviderFlags.Default,
                    TracePriority.Default, TracePriority.Default, false, true,
                    false, false, false, false, false, false, false, false,
                    false, false, false, false, false, false, false, false,
                    false, false, false, false, false, false, false, false,
                    false, true, true, false, false, false);
            }

            ///////////////////////////////////////////////////////////////////

            [MethodImpl(MethodImplOptions.NoInlining)]
            public static bool FromArgs(
                string[] args,







|







3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
                    linqFileName, ef6FileName, designerFileName, null, null,
                    null, TraceOps.DebugFormat, TraceOps.TraceFormat,
                    InstallFlags.Default, ProviderFlags.Default,
                    TracePriority.Default, TracePriority.Default, false, true,
                    false, false, false, false, false, false, false, false,
                    false, false, false, false, false, false, false, false,
                    false, false, false, false, false, false, false, false,
                    false, false, true, true, false, false, false);
            }

            ///////////////////////////////////////////////////////////////////

            [MethodImpl(MethodImplOptions.NoInlining)]
            public static bool FromArgs(
                string[] args,
4256
4257
4258
4259
4260
4261
4262





















4263
4264
4265
4266
4267
4268
4269
                                if (strict)
                                    return false;

                                continue;
                            }

                            configuration.noNetFx471 = (bool)value;





















                        }
                        else if (MatchOption(newArg, "noRuntimeVersion"))
                        {
                            bool? value = ParseBoolean(text);

                            if (value == null)
                            {







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
                                if (strict)
                                    return false;

                                continue;
                            }

                            configuration.noNetFx471 = (bool)value;
                        }
                        else if (MatchOption(newArg, "noNetFx472"))
                        {
                            bool? value = ParseBoolean(text);

                            if (value == null)
                            {
                                error = TraceOps.DebugAndTrace(
                                    TracePriority.Lowest, debugCallback,
                                    traceCallback, String.Format(
                                    "Invalid {0} boolean value: {1}",
                                    ForDisplay(arg), ForDisplay(text)),
                                    traceCategory);

                                if (strict)
                                    return false;

                                continue;
                            }

                            configuration.noNetFx472 = (bool)value;
                        }
                        else if (MatchOption(newArg, "noRuntimeVersion"))
                        {
                            bool? value = ParseBoolean(text);

                            if (value == null)
                            {
4931
4932
4933
4934
4935
4936
4937

4938
4939
4940
4941
4942
4943
4944
                        configuration.noNetFx451 = true;
                        configuration.noNetFx452 = true;
                        configuration.noNetFx46 = true;
                        configuration.noNetFx461 = true;
                        configuration.noNetFx462 = true;
                        configuration.noNetFx47 = true;
                        configuration.noNetFx471 = true;

                        configuration.noVs2010 = true;
                        configuration.noVs2012 = true;
                        configuration.noVs2013 = true;
                        configuration.noVs2015 = true;
                        configuration.noVs2017 = true;

                        TraceOps.DebugAndTrace(TracePriority.Medium,







>







4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
                        configuration.noNetFx451 = true;
                        configuration.noNetFx452 = true;
                        configuration.noNetFx46 = true;
                        configuration.noNetFx461 = true;
                        configuration.noNetFx462 = true;
                        configuration.noNetFx47 = true;
                        configuration.noNetFx471 = true;
                        configuration.noNetFx472 = true;
                        configuration.noVs2010 = true;
                        configuration.noVs2012 = true;
                        configuration.noVs2013 = true;
                        configuration.noVs2015 = true;
                        configuration.noVs2017 = true;

                        TraceOps.DebugAndTrace(TracePriority.Medium,
5133
5134
5135
5136
5137
5138
5139
5140
5141
5142
5143
5144
5145
5146
5147
                //       assembly should be processed during the install.
                //       If the target is Visual Studio 2005, this must
                //       return zero.
                //
                return !noNetFx35 || !noNetFx40 || !noNetFx45 ||
                    !noNetFx451 || !noNetFx452 || !noNetFx46 ||
                    !noNetFx461 || !noNetFx462 || !noNetFx47 ||
                    !noNetFx471;
            }

            ///////////////////////////////////////////////////////////////////

            public bool IsEf6Supported(
                bool trace
                )







|







5157
5158
5159
5160
5161
5162
5163
5164
5165
5166
5167
5168
5169
5170
5171
                //       assembly should be processed during the install.
                //       If the target is Visual Studio 2005, this must
                //       return zero.
                //
                return !noNetFx35 || !noNetFx40 || !noNetFx45 ||
                    !noNetFx451 || !noNetFx452 || !noNetFx46 ||
                    !noNetFx461 || !noNetFx462 || !noNetFx47 ||
                    !noNetFx471 || !noNetFx472;
            }

            ///////////////////////////////////////////////////////////////////

            public bool IsEf6Supported(
                bool trace
                )
5186
5187
5188
5189
5190
5191
5192
5193

5194
5195
5196
5197
5198
5199
5200
                // NOTE: Return non-zero if the System.Data.SQLite.EF6
                //       assembly should be processed during the install.
                //       If the target is Visual Studio 2005 or Visual
                //       Studio 2008, this must return zero.
                //
                if (noNetFx40 &&
                    noNetFx45 && noNetFx451 && noNetFx452 && noNetFx46 &&
                    noNetFx461 && noNetFx462 && noNetFx47 && noNetFx471)

                {
                    return false;
                }

                //
                // NOTE: Also, if the EF6 core assembly is unavailable, this
                //       must return zero.







|
>







5210
5211
5212
5213
5214
5215
5216
5217
5218
5219
5220
5221
5222
5223
5224
5225
                // NOTE: Return non-zero if the System.Data.SQLite.EF6
                //       assembly should be processed during the install.
                //       If the target is Visual Studio 2005 or Visual
                //       Studio 2008, this must return zero.
                //
                if (noNetFx40 &&
                    noNetFx45 && noNetFx451 && noNetFx452 && noNetFx46 &&
                    noNetFx461 && noNetFx462 && noNetFx47 && noNetFx471 &&
                    noNetFx472)
                {
                    return false;
                }

                //
                // NOTE: Also, if the EF6 core assembly is unavailable, this
                //       must return zero.
5488
5489
5490
5491
5492
5493
5494




5495
5496
5497
5498
5499
5500
5501
                    traceCallback(String.Format(NameAndValueFormat,
                        "NoNetFx47", ForDisplay(noNetFx47)),
                        traceCategory);

                    traceCallback(String.Format(NameAndValueFormat,
                        "NoNetFx471", ForDisplay(noNetFx471)),
                        traceCategory);





                    traceCallback(String.Format(NameAndValueFormat,
                        "NoVs2005", ForDisplay(noVs2005)),
                        traceCategory);

                    traceCallback(String.Format(NameAndValueFormat,
                        "NoVs2008", ForDisplay(noVs2008)),







>
>
>
>







5513
5514
5515
5516
5517
5518
5519
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
                    traceCallback(String.Format(NameAndValueFormat,
                        "NoNetFx47", ForDisplay(noNetFx47)),
                        traceCategory);

                    traceCallback(String.Format(NameAndValueFormat,
                        "NoNetFx471", ForDisplay(noNetFx471)),
                        traceCategory);

                    traceCallback(String.Format(NameAndValueFormat,
                        "NoNetFx472", ForDisplay(noNetFx472)),
                        traceCategory);

                    traceCallback(String.Format(NameAndValueFormat,
                        "NoVs2005", ForDisplay(noVs2005)),
                        traceCategory);

                    traceCallback(String.Format(NameAndValueFormat,
                        "NoVs2008", ForDisplay(noVs2008)),
5997
5998
5999
6000
6001
6002
6003









6004
6005
6006
6007
6008
6009
6010

            private bool noNetFx471;
            public bool NoNetFx471
            {
                get { return noNetFx471; }
                set { noNetFx471 = value; }
            }










            ///////////////////////////////////////////////////////////////////

            private bool noVs2005;
            public bool NoVs2005
            {
                get { return noVs2005; }







>
>
>
>
>
>
>
>
>







6026
6027
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048

            private bool noNetFx471;
            public bool NoNetFx471
            {
                get { return noNetFx471; }
                set { noNetFx471 = value; }
            }

            ///////////////////////////////////////////////////////////////////

            private bool noNetFx472;
            public bool NoNetFx472
            {
                get { return noNetFx472; }
                set { noNetFx472 = value; }
            }

            ///////////////////////////////////////////////////////////////////

            private bool noVs2005;
            public bool NoVs2005
            {
                get { return noVs2005; }
6809
6810
6811
6812
6813
6814
6815








6816
6817
6818
6819
6820
6821
6822
                    // NOTE: The .NET Framework 4.7.1 does not have its own
                    //       directory; however, it still may have assembly
                    //       folders for use in Visual Studio, etc.
                    //
                    if ((configuration == null) || !configuration.NoNetFx471)
                        desktopVersionList.Add(new Version(4, 7, 1));









                    frameworkList.Versions.Add(".NETFramework",
                        desktopVersionList);
                }

                if ((configuration == null) || !configuration.NoCompact)
                {
                    frameworkList.Versions.Add(".NETCompactFramework",







>
>
>
>
>
>
>
>







6847
6848
6849
6850
6851
6852
6853
6854
6855
6856
6857
6858
6859
6860
6861
6862
6863
6864
6865
6866
6867
6868
                    // NOTE: The .NET Framework 4.7.1 does not have its own
                    //       directory; however, it still may have assembly
                    //       folders for use in Visual Studio, etc.
                    //
                    if ((configuration == null) || !configuration.NoNetFx471)
                        desktopVersionList.Add(new Version(4, 7, 1));

                    //
                    // NOTE: The .NET Framework 4.7.2 does not have its own
                    //       directory; however, it still may have assembly
                    //       folders for use in Visual Studio, etc.
                    //
                    if ((configuration == null) || !configuration.NoNetFx472)
                        desktopVersionList.Add(new Version(4, 7, 2));

                    frameworkList.Versions.Add(".NETFramework",
                        desktopVersionList);
                }

                if ((configuration == null) || !configuration.NoCompact)
                {
                    frameworkList.Versions.Add(".NETCompactFramework",
Changes to www/downloads.wiki.
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
  <p>
    Templates (13), (14), and (15) are used for the official NuGet packages.
  </p>

  <p>
    The <b>framework</b> in templates (5), (6), (7), (8), (9), and (10) will
    be one of netFx20, netFx35, netFx40, netFx45, netFx451, netFx452, netFx46,
    netFx461, netFx462, netFx47, netFx471.
  </p>

  <p>
    The <b>cpu</b> in templates (5) and (6) will be one of x86, x64, arm, ia64.
  </p>

  <p>







|







2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
  <p>
    Templates (13), (14), and (15) are used for the official NuGet packages.
  </p>

  <p>
    The <b>framework</b> in templates (5), (6), (7), (8), (9), and (10) will
    be one of netFx20, netFx35, netFx40, netFx45, netFx451, netFx452, netFx46,
    netFx461, netFx462, netFx47, netFx471, netFx472.
  </p>

  <p>
    The <b>cpu</b> in templates (5) and (6) will be one of x86, x64, arm, ia64.
  </p>

  <p>
Changes to www/news.wiki.
46
47
48
49
50
51
52

53
54
55
56
57
58
59

<p>
    <b>1.0.109.0 - May XX, 2018 <font color="red">(release scheduled)</font></b>
</p>
<ul>
    <li>Updated to [https://www.sqlite.org/releaselog/3_23_1.html|SQLite 3.23.1].</li>
    <li>Prevent GetSchemaTable from throwing InvalidCastException. Fix for [baf42ee135].</li>

    <li>Add preliminary support for .NET Core 2.0 and the .NET Standard 2.0. Pursuant to [5c89cecd1b].</li>
    <li>Add simpler overload for the SQLiteBlob.Create method. Pursuant to [dfc8133ba2].</li>
    <li>Add GetFieldAffinity method to the SQLiteDataReader class.</li>
</ul>
<p>
    <b>1.0.108.0 - March 2, 2018</b>
</p>







>







46
47
48
49
50
51
52
53
54
55
56
57
58
59
60

<p>
    <b>1.0.109.0 - May XX, 2018 <font color="red">(release scheduled)</font></b>
</p>
<ul>
    <li>Updated to [https://www.sqlite.org/releaselog/3_23_1.html|SQLite 3.23.1].</li>
    <li>Prevent GetSchemaTable from throwing InvalidCastException. Fix for [baf42ee135].</li>
    <li>Add preliminary support for the .NET Framework 4.7.2.</li>
    <li>Add preliminary support for .NET Core 2.0 and the .NET Standard 2.0. Pursuant to [5c89cecd1b].</li>
    <li>Add simpler overload for the SQLiteBlob.Create method. Pursuant to [dfc8133ba2].</li>
    <li>Add GetFieldAffinity method to the SQLiteDataReader class.</li>
</ul>
<p>
    <b>1.0.108.0 - March 2, 2018</b>
</p>