System.Data.SQLite

Check-in [d6b5423937]
Login

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

Overview
Comment:Add preliminary support for the .NET Framework 4.8.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: d6b54239376f951366c51177e098fa6416fd364d
User & Date: mistachkin 2020-03-10 03:44:00.192
Context
2020-05-30
14:28
Temporarily remove the preliminary support for the .NET Framework 4.8. check-in: 1911e60e5e user: mistachkin tags: trunk
2020-03-10
03:49
Attempt to use MSBuild v16.0, if available. check-in: f6aa557316 user: mistachkin tags: trunk
03:44
Add preliminary support for the .NET Framework 4.8. check-in: d6b5423937 user: mistachkin tags: trunk
2020-03-05
00:36
More work on tests. Rename the new environment variable. check-in: f6f755c1ee user: mistachkin tags: trunk
Changes
Unified Diff Ignore Whitespace Patch
Changes to Doc/Extra/Provider/version.html.
45
46
47
48
49
50
51

52
53
54
55
56
57
58
    <h1 class="heading">Version History</h1>
    <p><b>1.0.113.0 - March XX, 2020 <font color="red">(release scheduled)</font></b></p>
    <ul>
      <li>Updated to <a href="https://www.sqlite.org/releaselog/3_31_1.html">SQLite 3.31.1</a>.</li>
      <li>Include the &quot;LINQ&quot; partial classes in the primary managed assembly for .NET Standard 2.1. Fix for <a href="https://system.data.sqlite.org/index.html/info/ad28d8e026">[ad28d8e026]</a>.</li>
      <li>Add SQLite_ForceLogLifecycle environment variable to force logging of calls into key members pertaining to the lifecycle of connections and their associated classes (e.g. LINQ, EF6, etc).</li>
      <li>When using the (unsupported) legacy CryptoAPI based codec, skip encrypting page #1 because that can lead to database corruption and other malfunctions.</li>

    </ul>
    <p><b>1.0.112.0 - October 28, 2019</b></p>
    <ul>
      <li>Updated to <a href="https://www.sqlite.org/releaselog/3_30_1.html">SQLite 3.30.1</a>.</li>
      <li>Add preliminary support for .NET Core 3.0 and the .NET Standard 2.1. Pursuant to <a href="https://system.data.sqlite.org/index.html/info/ce75d320d0">[ce75d320d0]</a>.</li>
      <li>Updated to <a href="https://www.nuget.org/packages/EntityFramework/6.3.0">Entity Framework 6.3.0</a>.</li>
      <li>Add support for new DBCONFIG options from the SQLite core library. Pursuant to <a href="https://system.data.sqlite.org/index.html/info/03b6b0edd7">[03b6b0edd7]</a>.</li>







>







45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
    <h1 class="heading">Version History</h1>
    <p><b>1.0.113.0 - March XX, 2020 <font color="red">(release scheduled)</font></b></p>
    <ul>
      <li>Updated to <a href="https://www.sqlite.org/releaselog/3_31_1.html">SQLite 3.31.1</a>.</li>
      <li>Include the &quot;LINQ&quot; partial classes in the primary managed assembly for .NET Standard 2.1. Fix for <a href="https://system.data.sqlite.org/index.html/info/ad28d8e026">[ad28d8e026]</a>.</li>
      <li>Add SQLite_ForceLogLifecycle environment variable to force logging of calls into key members pertaining to the lifecycle of connections and their associated classes (e.g. LINQ, EF6, etc).</li>
      <li>When using the (unsupported) legacy CryptoAPI based codec, skip encrypting page #1 because that can lead to database corruption and other malfunctions.</li>
      <li>Add preliminary support for the .NET Framework 4.8.</li>
    </ul>
    <p><b>1.0.112.0 - October 28, 2019</b></p>
    <ul>
      <li>Updated to <a href="https://www.sqlite.org/releaselog/3_30_1.html">SQLite 3.30.1</a>.</li>
      <li>Add preliminary support for .NET Core 3.0 and the .NET Standard 2.1. Pursuant to <a href="https://system.data.sqlite.org/index.html/info/ce75d320d0">[ce75d320d0]</a>.</li>
      <li>Updated to <a href="https://www.nuget.org/packages/EntityFramework/6.3.0">Entity Framework 6.3.0</a>.</li>
      <li>Add support for new DBCONFIG options from the SQLite core library. Pursuant to <a href="https://system.data.sqlite.org/index.html/info/03b6b0edd7">[03b6b0edd7]</a>.</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 || 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";







|







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 || NET_48
        /// <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 && !NET_472
                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 && !NET_48
                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 || NET_472
            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 || NET_48
            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 || NET_472
            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 || NET_48
            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 || NET_472
                || 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 || NET_48
                || String.Equals(
                    value, Ef6ProviderName, StringComparison.Ordinal)
#endif
                ))
            {
                return true;
            }
Changes to Setup/build.bat.
338
339
340
341
342
343
344















345
346
347
348
349
350
351
  %_AECHO% Forcing the use of the .NET Framework 4.7.2...
  IF NOT DEFINED YEAR (
    IF DEFINED NETFX472YEAR (
      SET YEAR=%NETFX472YEAR%
    ) ELSE (
      SET YEAR=2017
    )















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








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







338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
  %_AECHO% Forcing the use of the .NET Framework 4.7.2...
  IF NOT DEFINED YEAR (
    IF DEFINED NETFX472YEAR (
      SET YEAR=%NETFX472YEAR%
    ) ELSE (
      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 NETFX48ONLY (
  %_AECHO% Forcing the use of the .NET Framework 4.8...
  IF NOT DEFINED YEAR (
    IF DEFINED NETFX48YEAR (
      SET YEAR=%NETFX48YEAR%
    ) ELSE (
      SET YEAR=2017
    )
  )
  CALL :fn_CheckFrameworkDir v4.0.30319
  CALL :fn_CheckMsBuildDir 14.0
  CALL :fn_CheckVisualStudioMsBuildDir 15.0 15.0
  GOTO setup_buildToolDir
)

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 -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








|


|


|


|
|


|


|






|


|


|
|


|


|


|







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 -noNetFx48 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 -noNetFx48 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 -noNetFx48 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 -noNetFx48 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 -noNetFx48 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 -noNetFx48 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 -noNetFx48 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 -noNetFx48 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 -noNetFx48 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 -noNetFx48 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 -noNetFx48 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 -noNetFx48 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 -noNetFx48 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 -noNetFx48 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.
356
357
358
359
360
361
362

363
364
365
366
367
368
369
  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_netStandard21.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







>







356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
  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_netFx48.bat
  Setup/set_netStandard20.bat
  Setup/set_netStandard21.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
2258
2259
2260
2261
2262
2263
2264






































































2265
2266
2267
2268
2269
2270
2271
    setupEf6Bundle setupX86Vs2017]

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

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







































































###############################################################################
################### Visual Studio 2017 / .NET Standard 2.0 ####################
############################### Binary Packages ###############################
###############################################################################

set manifests(sqlite-netStandard20-binary-.zip) [list sds binaryCore]







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







2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
    setupEf6Bundle setupX86Vs2017]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

###############################################################################
################### Visual Studio 2017 / .NET Standard 2.0 ####################
############################### Binary Packages ###############################
###############################################################################

set manifests(sqlite-netStandard20-binary-.zip) [list sds binaryCore]
Changes to Setup/set_common.bat.
92
93
94
95
96
97
98
99
100

101
102
103
104
105
106
107
  SET FRAMEWORK2015=netFx46
  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 NOT DEFINED FRAMEWORKNETSTANDARD21 (







|
|
>







92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
  SET FRAMEWORK2015=netFx46
  REM SET FRAMEWORK2015=netFx461
  REM SET FRAMEWORK2015=netFx462
)

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

IF NOT DEFINED FRAMEWORKNETSTANDARD20 (
  SET FRAMEWORKNETSTANDARD20=netStandard20
)

IF NOT DEFINED FRAMEWORKNETSTANDARD21 (
Added Setup/set_netFx48.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_netFx48.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=netFx48
)

:end_of_file
Changes to Setup/set_year_2005.bat.
17
18
19
20
21
22
23

24
25
26
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=
SET NETFX472ONLY=

SET BUILD_ARGS=

VERIFY > NUL







>



17
18
19
20
21
22
23
24
25
26
27
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=
SET NETFX472ONLY=
SET NETFX48ONLY=
SET BUILD_ARGS=

VERIFY > NUL
Changes to Setup/set_year_2008.bat.
17
18
19
20
21
22
23

24
25
26
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=
SET NETFX472ONLY=

SET BUILD_ARGS=

VERIFY > NUL







>



17
18
19
20
21
22
23
24
25
26
27
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=
SET NETFX472ONLY=
SET NETFX48ONLY=
SET BUILD_ARGS=

VERIFY > NUL
Changes to Setup/set_year_2010.bat.
17
18
19
20
21
22
23

24
25
26
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=
SET NETFX472ONLY=

SET BUILD_ARGS=

VERIFY > NUL







>



17
18
19
20
21
22
23
24
25
26
27
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=
SET NETFX472ONLY=
SET NETFX48ONLY=
SET BUILD_ARGS=

VERIFY > NUL
Changes to Setup/set_year_2012.bat.
17
18
19
20
21
22
23

24
25
26
27
28
29
30
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








>







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=
SET NETFX472ONLY=
SET NETFX48ONLY=

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.
17
18
19
20
21
22
23

24
25
26
27
28
29
30
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








>







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=
SET NETFX472ONLY=
SET NETFX48ONLY=

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.
17
18
19
20
21
22
23

24
25
26
27
28
29
30
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








>







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
SET NETFX452ONLY=
SET NETFX46ONLY=1
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=
SET NETFX472ONLY=
SET NETFX48ONLY=

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.
17
18
19
20
21
22
23

24
25
26
27
28
29
30
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








>







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=1
SET NETFX471ONLY=
SET NETFX472ONLY=
SET NETFX48ONLY=

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.
17
18
19
20
21
22
23

24
25
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=
SET NETFX472ONLY=


VERIFY > NUL







>


17
18
19
20
21
22
23
24
25
26
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=
SET NETFX472ONLY=
SET NETFX48ONLY=

VERIFY > NUL
Changes to Setup/set_year_NetStandard21.bat.
17
18
19
20
21
22
23

24
25
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=
SET NETFX472ONLY=


VERIFY > NUL







>


17
18
19
20
21
22
23
24
25
26
SET NETFX452ONLY=
SET NETFX46ONLY=
SET NETFX461ONLY=
SET NETFX462ONLY=
SET NETFX47ONLY=
SET NETFX471ONLY=
SET NETFX472ONLY=
SET NETFX48ONLY=

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 && !NET_472 && !NET_STANDARD_20 && !NET_STANDARD_21
[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 && !NET_48 && !NET_STANDARD_20 && !NET_STANDARD_21
[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 || NET_472 || NET_STANDARD_20 || NET_STANDARD_21
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 || NET_STANDARD_20 || NET_STANDARD_21
		[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 || NET_STANDARD_20 || NET_STANDARD_21
		[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 || NET_48 || NET_STANDARD_20 || NET_STANDARD_21
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 || NET_48 || NET_STANDARD_20 || NET_STANDARD_21
		[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 || NET_48 || NET_STANDARD_20 || NET_STANDARD_21
		[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 || NET_472 || NET_STANDARD_20 || NET_STANDARD_21
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 || NET_48 || NET_STANDARD_20 || NET_STANDARD_21
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 || NET_472 || NET_STANDARD_20 || NET_STANDARD_21
			[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 || NET_48 || NET_STANDARD_20 || NET_STANDARD_21
			[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.
1
2
3
4
5
6
7
8
9
10
11
/********************************************************
 * 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!
 ********************************************************/

#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
/********************************************************
 * 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!
 ********************************************************/

#if USE_ENTITY_FRAMEWORK_6
namespace System.Data.SQLite.EF6
#else
namespace System.Data.SQLite.Linq
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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
66
67
68
69
70
71
72
  {
#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 || NET_STANDARD_20 || NET_STANDARD_21
            "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);
    }
#endif

    private SqlChecker()
    {
    }

#if false
    /// <summary>
    /// SQLite doesn't support things like SKIP and a few other things.  
    /// So determine if the query has to be rewritten
    /// </summary>
    /// <remarks>
    /// Microsoft went to all the trouble of making things like SKIP work 
    /// on Sql Server 2000 by doing a rewrite of the commandtree.
    /// However, all that fancy stuff is hidden from us.  Thanks to 
    /// reflection however, we can go ahead and use the Sql 2000 rewriter code
    /// they made.
    /// </remarks>
    /// <param name="tree">The tree to inspect for a rewrite</param>
    /// <returns>Returns a new query tree if it needs rewriting</returns>
    internal static DbQueryCommandTree Rewrite(DbQueryCommandTree tree)
    {
      SqlChecker visitor = new SqlChecker();
      if (tree.Query.Accept<bool>(visitor))
      {
        tree = sql8rewriter.InvokeMember("Rewrite", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Static, null, null, new object[] { tree }) as DbQueryCommandTree;
      }      
      return tree;
    }
#endif

    public override bool Visit(DbAndExpression expression)
    {
      return VisitBinaryExpression(expression);







|















|



|

|











|







24
25
26
27
28
29
30
31
32
33
34
35
36
37
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
66
67
68
69
70
71
72
  {
#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 || NET_48 || NET_STANDARD_20 || NET_STANDARD_21
            "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);
    }
#endif

    private SqlChecker()
    {
    }

#if false
    /// <summary>
    /// SQLite doesn't support things like SKIP and a few other things.
    /// So determine if the query has to be rewritten
    /// </summary>
    /// <remarks>
    /// Microsoft went to all the trouble of making things like SKIP work
    /// on Sql Server 2000 by doing a rewrite of the commandtree.
    /// However, all that fancy stuff is hidden from us.  Thanks to
    /// reflection however, we can go ahead and use the Sql 2000 rewriter code
    /// they made.
    /// </remarks>
    /// <param name="tree">The tree to inspect for a rewrite</param>
    /// <returns>Returns a new query tree if it needs rewriting</returns>
    internal static DbQueryCommandTree Rewrite(DbQueryCommandTree tree)
    {
      SqlChecker visitor = new SqlChecker();
      if (tree.Query.Accept<bool>(visitor))
      {
        tree = sql8rewriter.InvokeMember("Rewrite", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Static, null, null, new object[] { tree }) as DbQueryCommandTree;
      }
      return tree;
    }
#endif

    public override bool Visit(DbAndExpression expression)
    {
      return VisitBinaryExpression(expression);
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 || NET_472 || NET_STANDARD_20 || NET_STANDARD_21
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 || NET_48 || NET_STANDARD_20 || NET_STANDARD_21
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 || NET_472 || NET_STANDARD_20 || NET_STANDARD_21
		[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 || NET_48 || NET_STANDARD_20 || NET_STANDARD_21
		[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 || NET_472 || NET_STANDARD_20 || NET_STANDARD_21
		[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 || NET_48 || NET_STANDARD_20 || NET_STANDARD_21
		[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.
65
66
67
68
69
70
71
72

73
74
75
76
77
78
79
                          '$(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\v6.2\lib\net45\EntityFramework.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Include="AssemblyInfo.cs" />
    <Compile Include="Properties\Resources.Designer.cs">
      <AutoGen>True</AutoGen>







|
>







65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
                          '$(NetFx451)' != 'false' Or
                          '$(NetFx452)' != 'false' Or
                          '$(NetFx46)' != 'false' Or
                          '$(NetFx461)' != 'false' Or
                          '$(NetFx462)' != 'false' Or
                          '$(NetFx47)' != 'false' Or
                          '$(NetFx471)' != 'false' Or
                          '$(NetFx472)' != 'false' Or
                          '$(NetFx48)' != 'false'">
      <HintPath>$(SQLiteNetDir)\Externals\EntityFramework\v6.2\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.
65
66
67
68
69
70
71
72

73
74
75
76
77
78
79
                          '$(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\v6.2\lib\net45\EntityFramework.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Include="AssemblyInfo.cs" />
    <Compile Include="Properties\Resources.Designer.cs">
      <AutoGen>True</AutoGen>







|
>







65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
                          '$(NetFx451)' != 'false' Or
                          '$(NetFx452)' != 'false' Or
                          '$(NetFx46)' != 'false' Or
                          '$(NetFx461)' != 'false' Or
                          '$(NetFx462)' != 'false' Or
                          '$(NetFx47)' != 'false' Or
                          '$(NetFx471)' != 'false' Or
                          '$(NetFx472)' != 'false' Or
                          '$(NetFx48)' != 'false'">
      <HintPath>$(SQLiteNetDir)\Externals\EntityFramework\v6.2\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.
65
66
67
68
69
70
71
72

73
74
75
76
77
78
79
                          '$(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\v6.2\lib\net45\EntityFramework.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Include="AssemblyInfo.cs" />
    <Compile Include="Properties\Resources.Designer.cs">
      <AutoGen>True</AutoGen>







|
>







65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
                          '$(NetFx451)' != 'false' Or
                          '$(NetFx452)' != 'false' Or
                          '$(NetFx46)' != 'false' Or
                          '$(NetFx461)' != 'false' Or
                          '$(NetFx462)' != 'false' Or
                          '$(NetFx47)' != 'false' Or
                          '$(NetFx471)' != 'false' Or
                          '$(NetFx472)' != 'false' Or
                          '$(NetFx48)' != 'false'">
      <HintPath>$(SQLiteNetDir)\Externals\EntityFramework\v6.2\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.2017.csproj.
63
64
65
66
67
68
69
70



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



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







|
>
>
>







63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
    <Reference Include="EntityFramework"
               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' Or
                          '$(NetFx48)' != 'false'">
      <HintPath>$(SQLiteNetDir)\Externals\EntityFramework\v6.3\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 || NET_472 || NET_STANDARD_20 || NET_STANDARD_21
[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 && !NET_STANDARD_20 && !NET_STANDARD_21
[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 || NET_STANDARD_20 || NET_STANDARD_21
//
// 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 || NET_48 || NET_STANDARD_20 || NET_STANDARD_21
[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 && !NET_48 && !NET_STANDARD_20 && !NET_STANDARD_21
[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 || NET_48 || NET_STANDARD_20 || NET_STANDARD_21
//
// 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.
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
    /// necessary for this class.
    /// </summary>
    private static void InitializeDbProviderServices()
    {
        PreInitialize();

        string version =
#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472 || NET_STANDARD_20 || NET_STANDARD_21
            "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);
    }







|







66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
    /// necessary for this class.
    /// </summary>
    private static void InitializeDbProviderServices()
    {
        PreInitialize();

        string version =
#if NET_40 || NET_45 || NET_451 || NET_452 || NET_46 || NET_461 || NET_462 || NET_47 || NET_471 || NET_472 || NET_48 || NET_STANDARD_20 || NET_STANDARD_21
            "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 || NET_472) && !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 || NET_48) && !PLATFORM_COMPACTFRAMEWORK
    private bool _buildingSchema;
#endif

    /// <summary>
    /// The user-defined functions registered on this connection
    /// </summary>
    protected Dictionary<SQLiteFunctionAttribute, SQLiteFunction> _functions;
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
              }

              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;







|







1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
              }

              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 || NET_48) && !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.
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
      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 || NET_STANDARD_20 || NET_STANDARD_21)
      //
      // NOTE: This type is only available on the
      //       .NET Framework 2.0 SP1 and later.
      //
      typeof(DateTimeOffset) // DateTimeOffset (27)
#else
      typeof(DateTime)       // DateTimeOffset (27)







|







1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
      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 || NET_48 || NET_STANDARD_20 || NET_STANDARD_21)
      //
      // 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.
139
140
141
142
143
144
145




146
147
148
149
150
151
152
#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",







>
>
>
>







139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#if NET_471
            "NET_471",
#endif

#if NET_472
            "NET_472",
#endif

#if NET_48
            "NET_48",
#endif

#if NET_COMPACT_20
            "NET_COMPACT_20",
#endif

#if NET_STANDARD_20
            "NET_STANDARD_20",
Changes to System.Data.SQLite/Targets/System.Data.SQLite.Properties.targets.
152
153
154
155
156
157
158











159
160
161
162
163
164
165
            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).
  -->







>
>
>
>
>
>
>
>
>
>
>







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
            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 Framework 4.8?  By
            default, this is disabled.  This must be enabled to successfully
            build the project using Visual Studio 2017 and/or the .NET
            Framework 4.8 (if necessary, it will typically be enabled from
            within the project file itself).
  -->
  <PropertyGroup Condition="'$(NetFx48)' != 'false'">
    <DefineConstants>$(DefineConstants);NET_48</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 || NET_472 || NET_STANDARD_20 || NET_STANDARD_21) && !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 || NET_48 || NET_STANDARD_20 || NET_STANDARD_21) && !PLATFORM_COMPACTFRAMEWORK
  using System.Runtime.Versioning;
#endif

  using System.Text;

#if !PLATFORM_COMPACTFRAMEWORK || COUNT_HANDLE
  using System.Threading;
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
      /// </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 || NET_STANDARD_20 || NET_STANDARD_21
              try
              {
                  if (assembly.IsDefined(
                          typeof(TargetFrameworkAttribute), false))
                  {
                      TargetFrameworkAttribute targetFramework =
                          (TargetFrameworkAttribute)







|







2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
      /// </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 || NET_48 || NET_STANDARD_20 || NET_STANDARD_21
              try
              {
                  if (assembly.IsDefined(
                          typeof(TargetFrameworkAttribute), false))
                  {
                      TargetFrameworkAttribute targetFramework =
                          (TargetFrameworkAttribute)
Changes to Targets/SQLite.NET.Settings.targets.
100
101
102
103
104
105
106





107
108
109
110
111
112
113
                     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>







>
>
>
>
>







100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
                     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')" />

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

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

  <PropertyGroup>
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.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.







>
>
>
>
>
>
>
>
>







256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
              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: Only use functionality available in the .NET Framework 4.8?  By
              default, this is disabled.  This must be enabled to successfully
              build the project using Visual Studio 2017 and/or the .NET
              Framework 4.8 (if necessary, it will typically be enabled from
              within the project file itself).
    -->
    <NetFx48 Condition="'$(NetFx48)' == ''">false</NetFx48>

    <!--
        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.
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.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                            **
  ******************************************************************************
  -->







>
>
>
>
>
>
>
>
>
>







384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
              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>

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

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

45
46
47
48
49
50
    <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>







>






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

47
48
49
50
51
      NOTE: If the per-user settings file exists, import it now.  The contained
            settings, if any, will override the default ones provided below.
  -->
  <Import Project="$(SQLiteNetDir)\Targets\SQLite.NET.Settings.targets.netFx40.user"
          Condition="('$(ConfigurationYear)' == '2010' Or
                      '$(ConfigurationYear)' == '2012' Or
                      '$(ConfigurationYear)' == '2013' Or
                      '$(ConfigurationYear)' == '2015') And

                     Exists('$(SQLiteNetDir)\Targets\SQLite.NET.Settings.targets.netFx40.user')" />

  <!--
  ******************************************************************************
  -->

  <PropertyGroup Condition="'$(ConfigurationYear)' == '2010' Or
                            '$(ConfigurationYear)' == '2012' Or
                            '$(ConfigurationYear)' == '2013' Or
                            '$(ConfigurationYear)' == '2015'">

    <NetFx20>false</NetFx20>
    <NetFx35>false</NetFx35>
    <NetFx40>true</NetFx40>
    <NetFx45>false</NetFx45>
    <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>







|
>









|
>












>





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
46
47
48
49
50
51
52
53
54
      NOTE: If the per-user settings file exists, import it now.  The contained
            settings, if any, will override the default ones provided below.
  -->
  <Import Project="$(SQLiteNetDir)\Targets\SQLite.NET.Settings.targets.netFx40.user"
          Condition="('$(ConfigurationYear)' == '2010' Or
                      '$(ConfigurationYear)' == '2012' Or
                      '$(ConfigurationYear)' == '2013' Or
                      '$(ConfigurationYear)' == '2015' Or
                      '$(ConfigurationYear)' == '2017') And
                     Exists('$(SQLiteNetDir)\Targets\SQLite.NET.Settings.targets.netFx40.user')" />

  <!--
  ******************************************************************************
  -->

  <PropertyGroup Condition="'$(ConfigurationYear)' == '2010' Or
                            '$(ConfigurationYear)' == '2012' Or
                            '$(ConfigurationYear)' == '2013' Or
                            '$(ConfigurationYear)' == '2015' Or
                            '$(ConfigurationYear)' == '2017'">
    <NetFx20>false</NetFx20>
    <NetFx35>false</NetFx35>
    <NetFx40>true</NetFx40>
    <NetFx45>false</NetFx45>
    <NetFx451>false</NetFx451>
    <NetFx452>false</NetFx452>
    <NetFx46>false</NetFx46>
    <NetFx461>false</NetFx461>
    <NetFx462>false</NetFx462>
    <NetFx47>false</NetFx47>
    <NetFx471>false</NetFx471>
    <NetFx472>false</NetFx472>
    <NetFx48>false</NetFx48>
    <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
53
54

  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 true]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"
  tlog $output
  tlog "\n---- END STDOUT OUTPUT\n"







|
|
|
>
|







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

  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 -noNetFx48 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 true]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"
  tlog $output
  tlog "\n---- END STDOUT OUTPUT\n"
81
82
83
84
85
86
87
88
89
90

91
92
93
94
95
96
97
98

  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 true]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"
  tlog $output
  tlog "\n---- END STDOUT OUTPUT\n"







|
|
|
>
|







82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100

  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 -noNetFx48 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 true]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"
  tlog $output
  tlog "\n---- END STDOUT OUTPUT\n"
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142

  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 true]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"
  tlog $output
  tlog "\n---- END STDOUT OUTPUT\n"







|
|
|
|







127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144

  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 -noNetFx48 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 true]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"
  tlog $output
  tlog "\n---- END STDOUT OUTPUT\n"
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186

  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 true]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"
  tlog $output
  tlog "\n---- END STDOUT OUTPUT\n"







|
|
|
|







171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188

  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 -noNetFx48 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 true]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"
  tlog $output
  tlog "\n---- END STDOUT OUTPUT\n"
213
214
215
216
217
218
219
220
221
222

223
224
225
226
227
228
229
230

  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 true]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"
  tlog $output
  tlog "\n---- END STDOUT OUTPUT\n"







|
|
|
>
|







215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233

  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 -noNetFx48 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 true]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"
  tlog $output
  tlog "\n---- END STDOUT OUTPUT\n"
258
259
260
261
262
263
264
265
266
267

268
269
270
271
272
273
274
275

  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 true]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"
  tlog $output
  tlog "\n---- END STDOUT OUTPUT\n"







|
|
|
>
|







261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279

  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 -noNetFx48 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 true]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"
  tlog $output
  tlog "\n---- END STDOUT OUTPUT\n"
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320

  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 true]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

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







|
|
|
|







307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324

  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 -noNetFx48 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 true]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"
  tlog $output
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366

  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 true]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

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







|
|
|
|







353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370

  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 -noNetFx48 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 true]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"
  tlog $output
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412

  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 true]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

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







|
|
|
|







399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416

  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 -noNetFx48 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 true]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"
  tlog $output
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458

  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 true]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

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







|
|
|
|







445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462

  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 -noNetFx48 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 true]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"
  tlog $output
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504

  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 true]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

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







|
|
|
|







491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508

  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 -noNetFx48 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 true]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"
  tlog $output
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550

  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 true]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

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







|
|
|
|







537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554

  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 -noNetFx48 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 true]] \
        -logFileName [appendArgs \" [file nativename $fileName] \"] \
        -traceFormat [appendArgs \" "#{0}: {2}" \"]
  } error]

  tlog "---- BEGIN STDOUT OUTPUT\n"
  tlog $output
Changes to Tests/tkt-a4d9c7ee94.eagle.
57
58
59
60
61
62
63
64

65
66
67
68
69
70
71
[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}}}

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







|
>







57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
[haveConstraint buildFramework.netFx451] || \
[haveConstraint buildFramework.netFx452] || \
[haveConstraint buildFramework.netFx46] || \
[haveConstraint buildFramework.netFx461] || \
[haveConstraint buildFramework.netFx462] || \
[haveConstraint buildFramework.netFx47] || \
[haveConstraint buildFramework.netFx471] || \
[haveConstraint buildFramework.netFx472] || \
[haveConstraint buildFramework.netFx48]} \
-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}}}

###############################################################################
106
107
108
109
110
111
112
113

114
115
116
117
118
119
120
121
122
123
124
[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







|
>











107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
[haveConstraint buildFramework.netFx451] || \
[haveConstraint buildFramework.netFx452] || \
[haveConstraint buildFramework.netFx46] || \
[haveConstraint buildFramework.netFx461] || \
[haveConstraint buildFramework.netFx462] || \
[haveConstraint buildFramework.netFx47] || \
[haveConstraint buildFramework.netFx471] || \
[haveConstraint buildFramework.netFx472] || \
[haveConstraint buildFramework.netFx48]} \
-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.
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
            2013 {
              return netFx451; # TODO: Or "netFx452"?
            }
            2015 {
              return netFx46; # TODO: Or "netFx461" / "netFx462"?
            }
            2017 {
              return netFx47; # TODO: Or "netFx471" / "netFx472"?
            }
            NetStandard20 {
              return netStandard20
            }
            NetStandard21 {
              return netStandard21
            }







|







309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
            2013 {
              return netFx451; # TODO: Or "netFx452"?
            }
            2015 {
              return netFx46; # TODO: Or "netFx461" / "netFx462"?
            }
            2017 {
              return netFx47; # TODO: Or "netFx471" / "netFx472" / "netFx48"?
            }
            NetStandard20 {
              return netStandard20
            }
            NetStandard21 {
              return netStandard21
            }
4966
4967
4968
4969
4970
4971
4972

4973
4974
4975
4976
4977
4978
4979
4980
              EntityFramework.dll]]
        } else {
          set externalFileNames [list \
              [file join EntityFramework v6.2 lib [string map [list \
              Fx ""] [string map [list netFx451 netFx45 netFx452 \
              netFx45 netFx46 netFx45 netFx461 netFx45 netFx462 \
              netFx45 netFx47 netFx45 netFx471 netFx45 netFx472 \

              netFx45] [getBuildNetFx]]] EntityFramework.dll]]
        }

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








>
|







4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
              EntityFramework.dll]]
        } else {
          set externalFileNames [list \
              [file join EntityFramework v6.2 lib [string map [list \
              Fx ""] [string map [list netFx451 netFx45 netFx452 \
              netFx45 netFx46 netFx45 netFx461 netFx45 netFx462 \
              netFx45 netFx47 netFx45 netFx471 netFx45 netFx472 \
              netFx45 netFx48 netFx45] [getBuildNetFx]]] \
              EntityFramework.dll]]
        }

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

5637
5638
5639
5640
5641
5642
5643
5644
5645
5646
5647

5648
5649
5650
5651
5652
5653
5654
5655
5656
            INTEROP_INCLUDE_CEROD INTEROP_INCLUDE_EXTRA INTEROP_INCLUDE_SEE \
            INTEROP_INCLUDE_ZIPVFS INTEROP_JSON1_EXTENSION \
            INTEROP_LEGACY_CLOSE INTEROP_LOG INTEROP_PERCENTILE_EXTENSION \
            INTEROP_REGEXP_EXTENSION INTEROP_SESSION_EXTENSION \
            INTEROP_SHA1_EXTENSION INTEROP_TEST_EXTENSION \
            INTEROP_TOTYPE_EXTENSION INTEROP_VIRTUAL_TABLE \
            NET_20 NET_35 NET_40 NET_45 NET_451 NET_452 NET_46 NET_461 \
            NET_462 NET_47 NET_471 NET_472 NET_COMPACT_20 NET_STANDARD_20 \
            NET_STANDARD_21 PLATFORM_COMPACTFRAMEWORK PRELOAD_NATIVE_LIBRARY \
            RETARGETABLE SQLITE_STANDARD THROW_ON_DISPOSED \
            TRACE TRACE_CONNECTION TRACE_DETECTION TRACE_HANDLE TRACE_PRELOAD \

            TRACE_SHARED TRACE_STATEMENT TRACE_WARNING TRACK_MEMORY_BYTES \
            USE_ENTITY_FRAMEWORK_6 USE_INTEROP_DLL USE_PREPARE_V2 WINDOWS] {
          #
          # NOTE: Check if the compile-time option is listed in the list of
          #       "define constants" kept track of by the managed assembly.
          #
          checkForSQLiteDefineConstant $::test_channel $defineConstant
        }








|
|
|
|
>
|
|







5638
5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
            INTEROP_INCLUDE_CEROD INTEROP_INCLUDE_EXTRA INTEROP_INCLUDE_SEE \
            INTEROP_INCLUDE_ZIPVFS INTEROP_JSON1_EXTENSION \
            INTEROP_LEGACY_CLOSE INTEROP_LOG INTEROP_PERCENTILE_EXTENSION \
            INTEROP_REGEXP_EXTENSION INTEROP_SESSION_EXTENSION \
            INTEROP_SHA1_EXTENSION INTEROP_TEST_EXTENSION \
            INTEROP_TOTYPE_EXTENSION INTEROP_VIRTUAL_TABLE \
            NET_20 NET_35 NET_40 NET_45 NET_451 NET_452 NET_46 NET_461 \
            NET_462 NET_47 NET_471 NET_472 NET_48 NET_COMPACT_20 \
            NET_STANDARD_20 NET_STANDARD_21 PLATFORM_COMPACTFRAMEWORK \
            PRELOAD_NATIVE_LIBRARY RETARGETABLE SQLITE_STANDARD \
            THROW_ON_DISPOSED TRACE TRACE_CONNECTION TRACE_DETECTION \
            TRACE_HANDLE TRACE_PRELOAD TRACE_SHARED TRACE_STATEMENT \
            TRACE_WARNING TRACK_MEMORY_BYTES USE_ENTITY_FRAMEWORK_6 \
            USE_INTEROP_DLL USE_PREPARE_V2 WINDOWS] {
          #
          # NOTE: Check if the compile-time option is listed in the list of
          #       "define constants" kept track of by the managed assembly.
          #
          checkForSQLiteDefineConstant $::test_channel $defineConstant
        }

Changes to readme.htm.
211
212
213
214
215
216
217

218
219
220
221
222
223
224
    <b>1.0.113.0 - March XX, 2020 <font color="red">(release scheduled)</font></b>
</p>
<ul>
    <li>Updated to <a href="https://www.sqlite.org/releaselog/3_31_1.html">SQLite 3.31.1</a>.</li>
    <li>Include the &quot;LINQ&quot; partial classes in the primary managed assembly for .NET Standard 2.1. Fix for [ad28d8e026].</li>
    <li>Add SQLite_ForceLogLifecycle environment variable to force logging of calls into key members pertaining to the lifecycle of connections and their associated classes (e.g. LINQ, EF6, etc).</li>
    <li>When using the (unsupported) legacy CryptoAPI based codec, skip encrypting page #1 because that can lead to database corruption and other malfunctions.</li>

</ul>
<p>
    <b>1.0.112.0 - October 28, 2019</b>
</p>
<ul>
    <li>Updated to <a href="https://www.sqlite.org/releaselog/3_30_1.html">SQLite 3.30.1</a>.</li>
    <li>Add preliminary support for .NET Core 3.0 and the .NET Standard 2.1. Pursuant to [ce75d320d0].</li>







>







211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
    <b>1.0.113.0 - March XX, 2020 <font color="red">(release scheduled)</font></b>
</p>
<ul>
    <li>Updated to <a href="https://www.sqlite.org/releaselog/3_31_1.html">SQLite 3.31.1</a>.</li>
    <li>Include the &quot;LINQ&quot; partial classes in the primary managed assembly for .NET Standard 2.1. Fix for [ad28d8e026].</li>
    <li>Add SQLite_ForceLogLifecycle environment variable to force logging of calls into key members pertaining to the lifecycle of connections and their associated classes (e.g. LINQ, EF6, etc).</li>
    <li>When using the (unsupported) legacy CryptoAPI based codec, skip encrypting page #1 because that can lead to database corruption and other malfunctions.</li>
    <li>Add preliminary support for the .NET Framework 4.8.</li>
</ul>
<p>
    <b>1.0.112.0 - October 28, 2019</b>
</p>
<ul>
    <li>Updated to <a href="https://www.sqlite.org/releaselog/3_30_1.html">SQLite 3.30.1</a>.</li>
    <li>Add preliminary support for .NET Core 3.0 and the .NET Standard 2.1. Pursuant to [ce75d320d0].</li>
Changes to testlinq/Program.cs.
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
205
206
207
208
209
210
211
212

                              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 || NET_STANDARD_21
              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 || NET_STANDARD_21
              case "round":
                  {
                      return RoundTest();
                  }
#endif
              case "complexprimarykey":
                  {







|



















|







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
205
206
207
208
209
210
211
212

                              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 || NET_48 || NET_STANDARD_21
              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 || NET_48 || NET_STANDARD_21
              case "round":
                  {
                      return RoundTest();
                  }
#endif
              case "complexprimarykey":
                  {
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
                          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 || NET_STANDARD_21
                          db.SaveChanges(SaveOptions.None);
#else
                          db.SaveChanges(false);
#endif
                      }
                      catch (Exception e)
                      {







|







500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
                          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 || NET_48 || NET_STANDARD_21
                          db.SaveChanges(SaveOptions.None);
#else
                          db.SaveChanges(false);
#endif
                      }
                      catch (Exception e)
                      {
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
              }
          }
          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 || NET_STANDARD_21
                  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)
                  {







|







523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
              }
          }
          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 || NET_48 || NET_STANDARD_21
                  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)
                  {
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
          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 || NET_STANDARD_21
      //
      // 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)







|







736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
          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 || NET_48 || NET_STANDARD_21
      //
      // 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)
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
                  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 || NET_STANDARD_21
      //
      // 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())







|







933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
                  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 || NET_48 || NET_STANDARD_21
      //
      // 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.
64
65
66
67
68
69
70
71

72
73
74
75
76
77
78
                          '$(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\v6.2\lib\net45\EntityFramework.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Condition="'$(TargetFrameworkVersion)' == 'v3.5'"
             Include="NorthwindModel.Linq.2008.Designer.cs">
      <AutoGen>True</AutoGen>







|
>







64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
                          '$(NetFx451)' != 'false' Or
                          '$(NetFx452)' != 'false' Or
                          '$(NetFx46)' != 'false' Or
                          '$(NetFx461)' != 'false' Or
                          '$(NetFx462)' != 'false' Or
                          '$(NetFx47)' != 'false' Or
                          '$(NetFx471)' != 'false' Or
                          '$(NetFx472)' != 'false' Or
                          '$(NetFx48)' != 'false'">
      <HintPath>$(SQLiteNetDir)\Externals\EntityFramework\v6.2\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.
64
65
66
67
68
69
70
71

72
73
74
75
76
77
78
                          '$(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\v6.2\lib\net45\EntityFramework.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Condition="'$(TargetFrameworkVersion)' == 'v3.5'"
             Include="NorthwindModel.Linq.2008.Designer.cs">
      <AutoGen>True</AutoGen>







|
>







64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
                          '$(NetFx451)' != 'false' Or
                          '$(NetFx452)' != 'false' Or
                          '$(NetFx46)' != 'false' Or
                          '$(NetFx461)' != 'false' Or
                          '$(NetFx462)' != 'false' Or
                          '$(NetFx47)' != 'false' Or
                          '$(NetFx471)' != 'false' Or
                          '$(NetFx472)' != 'false' Or
                          '$(NetFx48)' != 'false'">
      <HintPath>$(SQLiteNetDir)\Externals\EntityFramework\v6.2\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.
64
65
66
67
68
69
70
71

72
73
74
75
76
77
78
                          '$(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\v6.2\lib\net45\EntityFramework.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Condition="'$(TargetFrameworkVersion)' == 'v3.5'"
             Include="NorthwindModel.Linq.2008.Designer.cs">
      <AutoGen>True</AutoGen>







|
>







64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
                          '$(NetFx451)' != 'false' Or
                          '$(NetFx452)' != 'false' Or
                          '$(NetFx46)' != 'false' Or
                          '$(NetFx461)' != 'false' Or
                          '$(NetFx462)' != 'false' Or
                          '$(NetFx47)' != 'false' Or
                          '$(NetFx471)' != 'false' Or
                          '$(NetFx472)' != 'false' Or
                          '$(NetFx48)' != 'false'">
      <HintPath>$(SQLiteNetDir)\Externals\EntityFramework\v6.2\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.
64
65
66
67
68
69
70
71

72
73
74
75
76
77
78
                          '$(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\v6.3\lib\net45\EntityFramework.dll</HintPath>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Condition="'$(TargetFrameworkVersion)' == 'v3.5'"
             Include="NorthwindModel.Linq.2008.Designer.cs">
      <AutoGen>True</AutoGen>







|
>







64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
                          '$(NetFx451)' != 'false' Or
                          '$(NetFx452)' != 'false' Or
                          '$(NetFx46)' != 'false' Or
                          '$(NetFx461)' != 'false' Or
                          '$(NetFx462)' != 'false' Or
                          '$(NetFx47)' != 'false' Or
                          '$(NetFx471)' != 'false' Or
                          '$(NetFx472)' != 'false' Or
                          '$(NetFx48)' != 'false'">
      <HintPath>$(SQLiteNetDir)\Externals\EntityFramework\v6.3\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 || NET_472
    [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 || NET_48
    [SecurityCritical()]
#else
    [SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode = true)]
#endif
    internal static class Installer
    {
        #region Unsafe Native Methods Class
3379
3380
3381
3382
3383
3384
3385

3386
3387
3388
3389
3390
3391
3392
                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,







>







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

3438
3439
3440
3441
3442
3443
3444
                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;







>







3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
                this.noNetFx452 = noNetFx452;
                this.noNetFx46 = noNetFx46;
                this.noNetFx461 = noNetFx461;
                this.noNetFx462 = noNetFx462;
                this.noNetFx47 = noNetFx47;
                this.noNetFx471 = noNetFx471;
                this.noNetFx472 = noNetFx472;
                this.noNetFx48 = noNetFx48;
                this.noVs2005 = noVs2005;
                this.noVs2008 = noVs2008;
                this.noVs2010 = noVs2010;
                this.noVs2012 = noVs2012;
                this.noVs2013 = noVs2013;
                this.noVs2015 = noVs2015;
                this.noVs2017 = noVs2017;
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,







|







3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
                    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, false, true, true, false, false, false);
            }

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

            [MethodImpl(MethodImplOptions.NoInlining)]
            public static bool FromArgs(
                string[] args,
4279
4280
4281
4282
4283
4284
4285





















4286
4287
4288
4289
4290
4291
4292
                                if (strict)
                                    return false;

                                continue;
                            }

                            configuration.noNetFx472 = (bool)value;





















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

                            if (value == null)
                            {







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







4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
                                if (strict)
                                    return false;

                                continue;
                            }

                            configuration.noNetFx472 = (bool)value;
                        }
                        else if (MatchOption(newArg, "noNetFx48"))
                        {
                            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.noNetFx48 = (bool)value;
                        }
                        else if (MatchOption(newArg, "noRuntimeVersion"))
                        {
                            bool? value = ParseBoolean(text);

                            if (value == null)
                            {
4955
4956
4957
4958
4959
4960
4961

4962
4963
4964
4965
4966
4967
4968
                        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,







>







4978
4979
4980
4981
4982
4983
4984
4985
4986
4987
4988
4989
4990
4991
4992
                        configuration.noNetFx452 = true;
                        configuration.noNetFx46 = true;
                        configuration.noNetFx461 = true;
                        configuration.noNetFx462 = true;
                        configuration.noNetFx47 = true;
                        configuration.noNetFx471 = true;
                        configuration.noNetFx472 = true;
                        configuration.noNetFx48 = true;
                        configuration.noVs2010 = true;
                        configuration.noVs2012 = true;
                        configuration.noVs2013 = true;
                        configuration.noVs2015 = true;
                        configuration.noVs2017 = true;

                        TraceOps.DebugAndTrace(TracePriority.Medium,
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
                )







|







5181
5182
5183
5184
5185
5186
5187
5188
5189
5190
5191
5192
5193
5194
5195
                //       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 || !noNetFx48;
            }

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

            public bool IsEf6Supported(
                bool trace
                )
5211
5212
5213
5214
5215
5216
5217
5218
5219
5220
5221
5222
5223
5224
5225
                //       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.







|







5235
5236
5237
5238
5239
5240
5241
5242
5243
5244
5245
5246
5247
5248
5249
                //       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 && noNetFx48)
                {
                    return false;
                }

                //
                // NOTE: Also, if the EF6 core assembly is unavailable, this
                //       must return zero.
5517
5518
5519
5520
5521
5522
5523




5524
5525
5526
5527
5528
5529
5530
                    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)),







>
>
>
>







5541
5542
5543
5544
5545
5546
5547
5548
5549
5550
5551
5552
5553
5554
5555
5556
5557
5558
                    traceCallback(String.Format(NameAndValueFormat,
                        "NoNetFx471", ForDisplay(noNetFx471)),
                        traceCategory);

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

                    traceCallback(String.Format(NameAndValueFormat,
                        "NoNetFx48", ForDisplay(noNetFx48)),
                        traceCategory);

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

                    traceCallback(String.Format(NameAndValueFormat,
                        "NoVs2008", ForDisplay(noVs2008)),
6035
6036
6037
6038
6039
6040
6041









6042
6043
6044
6045
6046
6047
6048

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










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

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







>
>
>
>
>
>
>
>
>







6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081
6082
6083
6084
6085

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

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

            private bool noNetFx48;
            public bool NoNetFx48
            {
                get { return noNetFx48; }
                set { noNetFx48 = value; }
            }

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

            private bool noVs2005;
            public bool NoVs2005
            {
                get { return noVs2005; }
6855
6856
6857
6858
6859
6860
6861








6862
6863
6864
6865
6866
6867
6868
                    // 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",







>
>
>
>
>
>
>
>







6892
6893
6894
6895
6896
6897
6898
6899
6900
6901
6902
6903
6904
6905
6906
6907
6908
6909
6910
6911
6912
6913
                    // 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));

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

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

                if ((configuration == null) || !configuration.NoCompact)
                {
                    frameworkList.Versions.Add(".NETCompactFramework",
Changes to www/downloads.wiki.
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
  <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>







|







2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
  <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, netFx48.
  </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.
48
49
50
51
52
53
54

55
56
57
58
59
60
61
    <b>1.0.113.0 - March XX, 2020 <font color="red">(release scheduled)</font></b>
</p>
<ul>
    <li>Updated to [https://www.sqlite.org/releaselog/3_31_1.html|SQLite 3.31.1].</li>
    <li>Include the &quot;LINQ&quot; partial classes in the primary managed assembly for .NET Standard 2.1. Fix for [ad28d8e026].</li>
    <li>Add SQLite_ForceLogLifecycle environment variable to force logging of calls into key members pertaining to the lifecycle of connections and their associated classes (e.g. LINQ, EF6, etc).</li>
    <li>When using the (unsupported) legacy CryptoAPI based codec, skip encrypting page #1 because that can lead to database corruption and other malfunctions.</li>

</ul>
<p>
    <b>1.0.112.0 - October 28, 2019</b>
</p>
<ul>
    <li>Updated to [https://www.sqlite.org/releaselog/3_30_1.html|SQLite 3.30.1].</li>
    <li>Add preliminary support for .NET Core 3.0 and the .NET Standard 2.1. Pursuant to [ce75d320d0].</li>







>







48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
    <b>1.0.113.0 - March XX, 2020 <font color="red">(release scheduled)</font></b>
</p>
<ul>
    <li>Updated to [https://www.sqlite.org/releaselog/3_31_1.html|SQLite 3.31.1].</li>
    <li>Include the &quot;LINQ&quot; partial classes in the primary managed assembly for .NET Standard 2.1. Fix for [ad28d8e026].</li>
    <li>Add SQLite_ForceLogLifecycle environment variable to force logging of calls into key members pertaining to the lifecycle of connections and their associated classes (e.g. LINQ, EF6, etc).</li>
    <li>When using the (unsupported) legacy CryptoAPI based codec, skip encrypting page #1 because that can lead to database corruption and other malfunctions.</li>
    <li>Add preliminary support for the .NET Framework 4.8.</li>
</ul>
<p>
    <b>1.0.112.0 - October 28, 2019</b>
</p>
<ul>
    <li>Updated to [https://www.sqlite.org/releaselog/3_30_1.html|SQLite 3.30.1].</li>
    <li>Add preliminary support for .NET Core 3.0 and the .NET Standard 2.1. Pursuant to [ce75d320d0].</li>