diff --git a/Build/build.ps1 b/Build/build.ps1
index b1672e9c..53b1624d 100644
--- a/Build/build.ps1
+++ b/Build/build.ps1
@@ -27,6 +27,7 @@
@{Name = "Newtonsoft.Json.Roslyn"; TestsName = "Newtonsoft.Json.Tests.Roslyn"; BuildFunction = "NetCliBuild"; TestsFunction = "NetCliTests"; NuGetDir = "netstandard1.0,netstandard1.3"; Framework=$null; Enabled=$true},
@{Name = "Newtonsoft.Json"; TestsName = "Newtonsoft.Json.Tests"; BuildFunction = "MSBuildBuild"; TestsFunction = "NUnitTests"; NuGetDir = "net45"; Framework="net-4.0"; Enabled=$true},
@{Name = "Newtonsoft.Json.Portable"; TestsName = "Newtonsoft.Json.Tests.Portable"; BuildFunction = "MSBuildBuild"; TestsFunction = "NUnitTests"; NuGetDir = "portable-net45+win8+wpa81+wp8"; Framework="net-4.0"; Enabled=$true},
+ @{Name = "Newtonsoft.Json.Portable40"; TestsName = "Newtonsoft.Json.Tests.Portable40"; BuildFunction = "MSBuildBuild"; TestsFunction = "NUnitTests"; NuGetDir = "portable-net40+win8+wpa81+wp8+sl5"; Framework="net-4.0"; Enabled=$true},
@{Name = "Newtonsoft.Json.Net40"; TestsName = "Newtonsoft.Json.Tests.Net40"; BuildFunction = "MSBuildBuild"; TestsFunction = "NUnitTests"; NuGetDir = "net40"; Framework="net-4.0"; Enabled=$true},
@{Name = "Newtonsoft.Json.Net35"; TestsName = "Newtonsoft.Json.Tests.Net35"; BuildFunction = "MSBuildBuild"; TestsFunction = "NUnitTests"; NuGetDir = "net35"; Framework="net-2.0"; Enabled=$true},
@{Name = "Newtonsoft.Json.Net20"; TestsName = "Newtonsoft.Json.Tests.Net20"; BuildFunction = "MSBuildBuild"; TestsFunction = "NUnitTests"; NuGetDir = "net20"; Framework="net-2.0"; Enabled=$true}
diff --git a/Src/Newtonsoft.Json.Portable40.sln b/Src/Newtonsoft.Json.Portable40.sln
new file mode 100644
index 00000000..0529cddc
--- /dev/null
+++ b/Src/Newtonsoft.Json.Portable40.sln
@@ -0,0 +1,28 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.23107.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.Portable40", "Newtonsoft.Json\Newtonsoft.Json.Portable40.csproj", "{959F7F85-C98B-4876-971A-9036224578E4}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Newtonsoft.Json.Tests.Portable40", "Newtonsoft.Json.Tests\Newtonsoft.Json.Tests.Portable40.csproj", "{3E6E2335-B079-4B5B-A65A-9D586914BCBB}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {959F7F85-C98B-4876-971A-9036224578E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {959F7F85-C98B-4876-971A-9036224578E4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {959F7F85-C98B-4876-971A-9036224578E4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {959F7F85-C98B-4876-971A-9036224578E4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3E6E2335-B079-4B5B-A65A-9D586914BCBB}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/Src/Newtonsoft.Json.Tests/Bson/BsonReaderAsyncTests.cs b/Src/Newtonsoft.Json.Tests/Bson/BsonReaderAsyncTests.cs
index 827b1a1b..289e91fa 100644
--- a/Src/Newtonsoft.Json.Tests/Bson/BsonReaderAsyncTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Bson/BsonReaderAsyncTests.cs
@@ -24,7 +24,7 @@
#endregion
#pragma warning disable 618
-#if !(NET20 || NET35 || NET40)
+#if !(NET20 || NET35 || NET40 || PORTABLE40)
using System;
using System.Collections.Generic;
using System.Globalization;
diff --git a/Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs b/Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs
index 9269e0d7..b92bc9e8 100644
--- a/Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs
@@ -1491,7 +1491,7 @@ namespace Newtonsoft.Json.Tests.Bson
Assert.AreEqual(badText, (string)o["test"]);
}
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE || PORTABLE40) || NETSTANDARD1_3
public class BigIntegerTestClass
{
public BigInteger Blah { get; set; }
diff --git a/Src/Newtonsoft.Json.Tests/Bson/BsonWriterAsyncTests.cs b/Src/Newtonsoft.Json.Tests/Bson/BsonWriterAsyncTests.cs
index a0cc4cde..627e1e77 100644
--- a/Src/Newtonsoft.Json.Tests/Bson/BsonWriterAsyncTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Bson/BsonWriterAsyncTests.cs
@@ -24,7 +24,7 @@
#endregion
#pragma warning disable 618
-#if !(NET20 || NET35 || NET40)
+#if !(NET20 || NET35 || NET40 || PORTABLE40)
using System;
#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
using System.Numerics;
diff --git a/Src/Newtonsoft.Json.Tests/Bson/BsonWriterTests.cs b/Src/Newtonsoft.Json.Tests/Bson/BsonWriterTests.cs
index 614b0e13..d7bb8bfd 100644
--- a/Src/Newtonsoft.Json.Tests/Bson/BsonWriterTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Bson/BsonWriterTests.cs
@@ -798,7 +798,7 @@ namespace Newtonsoft.Json.Tests.Bson
Assert.AreEqual(c.AGuid, c2.AGuid.ToString());
}
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE || PORTABLE40) || NETSTANDARD1_3
[Test]
public void WriteBigInteger()
{
diff --git a/Src/Newtonsoft.Json.Tests/Converters/BinaryConverterTests.cs b/Src/Newtonsoft.Json.Tests/Converters/BinaryConverterTests.cs
index a0d6c2dd..391a5900 100644
--- a/Src/Newtonsoft.Json.Tests/Converters/BinaryConverterTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Converters/BinaryConverterTests.cs
@@ -55,7 +55,7 @@ namespace Newtonsoft.Json.Tests.Converters
public byte[] NullByteArray { get; set; }
}
-#if !(NET20 || PORTABLE || DNXCORE50)
+#if !(NET20 || PORTABLE || PORTABLE40 || DNXCORE50)
[Test]
public void DeserializeBinaryClass()
{
@@ -121,7 +121,7 @@ namespace Newtonsoft.Json.Tests.Converters
}", json);
}
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || PORTABLE40 || DNXCORE50)
public class SqlBinaryClass
{
public SqlBinary SqlBinary { get; set; }
diff --git a/Src/Newtonsoft.Json.Tests/Converters/DataSetConverterTests.cs b/Src/Newtonsoft.Json.Tests/Converters/DataSetConverterTests.cs
index 93df7c4f..41b8528e 100644
--- a/Src/Newtonsoft.Json.Tests/Converters/DataSetConverterTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Converters/DataSetConverterTests.cs
@@ -23,7 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
using System;
using Newtonsoft.Json.Converters;
#if DNXCORE50
diff --git a/Src/Newtonsoft.Json.Tests/Converters/DataTableConverterTests.cs b/Src/Newtonsoft.Json.Tests/Converters/DataTableConverterTests.cs
index 5b008df2..1539564e 100644
--- a/Src/Newtonsoft.Json.Tests/Converters/DataTableConverterTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Converters/DataTableConverterTests.cs
@@ -28,7 +28,7 @@ using System.Text;
using Newtonsoft.Json.Bson;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Linq;
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
using System;
using System.Collections.Generic;
#if DNXCORE50
@@ -486,7 +486,7 @@ namespace Newtonsoft.Json.Tests.Converters
StringAssert.AreEqual(@"null", json);
}
-#if !(NET20 || PORTABLE)
+#if !(NET20 || PORTABLE || PORTABLE40)
[Test]
public void DeserializedTypedDataTableWithConverter()
{
diff --git a/Src/Newtonsoft.Json.Tests/Converters/ExpandoObjectConverterTests.cs b/Src/Newtonsoft.Json.Tests/Converters/ExpandoObjectConverterTests.cs
index d58d747e..dec67f4a 100644
--- a/Src/Newtonsoft.Json.Tests/Converters/ExpandoObjectConverterTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Converters/ExpandoObjectConverterTests.cs
@@ -23,7 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
-#if !(NET35 || NET20)
+#if !(NET35 || NET20 || PORTABLE40)
using System;
using System.Collections.Generic;
using System.Dynamic;
diff --git a/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs b/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs
index 86c29532..c0a529ec 100644
--- a/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs
+++ b/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs
@@ -23,6 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
+#if !(DNXCORE50 || PORTABLE40)
using System.Globalization;
#if NET20
using Newtonsoft.Json.Utilities.LinqBridge;
@@ -2705,7 +2706,7 @@ namespace Newtonsoft.Json.Tests.Converters
Assert.AreEqual(@"AsdAAAadad", xmlBack.OuterXml);
}
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE || PORTABLE40) || NETSTANDARD1_3
[Test]
public void DeserializeBigInteger()
{
@@ -2990,4 +2991,5 @@ namespace Newtonsoft.Json.Tests.Converters
}
#endif
}
-}
\ No newline at end of file
+}
+#endif
\ No newline at end of file
diff --git a/Src/Newtonsoft.Json.Tests/DemoTests.cs b/Src/Newtonsoft.Json.Tests/DemoTests.cs
index b296ed03..3ac7c76f 100644
--- a/Src/Newtonsoft.Json.Tests/DemoTests.cs
+++ b/Src/Newtonsoft.Json.Tests/DemoTests.cs
@@ -24,7 +24,7 @@
#endregion
using System;
-#if !(NET20 || NET35 || NET40 || PORTABLE || DNXCORE50)
+#if !(NET20 || NET35 || NET40 || PORTABLE || PORTABLE40 || DNXCORE50)
using System.Buffers;
#endif
using System.Collections.Generic;
@@ -592,7 +592,7 @@ namespace Newtonsoft.Json.Tests
}", json);
}
-#if !(NET20 || NET35 || NET40 || PORTABLE || DNXCORE50)
+#if !(NET20 || NET35 || NET40 || PORTABLE || PORTABLE40 || DNXCORE50)
[Test]
public void ArrayPooling()
{
@@ -610,7 +610,7 @@ namespace Newtonsoft.Json.Tests
}
#endif
-#if !(NET20 || NET35 || NET40 || PORTABLE || DNXCORE50)
+#if !(NET20 || NET35 || NET40 || PORTABLE || PORTABLE40 || DNXCORE50)
[Test]
public async Task AsyncDemo()
{
@@ -634,7 +634,7 @@ namespace Newtonsoft.Json.Tests
#endif
}
-#if !(NET20 || NET35 || NET40 || PORTABLE || DNXCORE50)
+#if !(NET20 || NET35 || NET40 || PORTABLE || PORTABLE40 || DNXCORE50)
public class JsonArrayPool : IArrayPool
{
public static readonly JsonArrayPool Instance = new JsonArrayPool();
diff --git a/Src/Newtonsoft.Json.Tests/ExceptionTests.cs b/Src/Newtonsoft.Json.Tests/ExceptionTests.cs
index a028afde..6714c48e 100644
--- a/Src/Newtonsoft.Json.Tests/ExceptionTests.cs
+++ b/Src/Newtonsoft.Json.Tests/ExceptionTests.cs
@@ -105,7 +105,7 @@ namespace Newtonsoft.Json.Tests
}
#pragma warning restore 618
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || PORTABLE40 || DNXCORE50)
[Test]
public void BinarySerializeException()
{
diff --git a/Src/Newtonsoft.Json.Tests/JsonConvertTest.cs b/Src/Newtonsoft.Json.Tests/JsonConvertTest.cs
index 42e984dc..bd73abfa 100644
--- a/Src/Newtonsoft.Json.Tests/JsonConvertTest.cs
+++ b/Src/Newtonsoft.Json.Tests/JsonConvertTest.cs
@@ -30,7 +30,7 @@ using System.Collections.ObjectModel;
using System.Globalization;
using System.IO;
using Newtonsoft.Json.Schema;
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE40 || PORTABLE) || NETSTANDARD1_3
using System.Numerics;
#endif
using System.Runtime.Serialization;
@@ -609,7 +609,7 @@ namespace Newtonsoft.Json.Tests
value = null;
Assert.AreEqual("null", JsonConvert.ToString(value));
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
value = DBNull.Value;
Assert.AreEqual("null", JsonConvert.ToString(value));
#endif
@@ -1111,7 +1111,7 @@ namespace Newtonsoft.Json.Tests
writer.Flush();
}
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE40 || PORTABLE) || NETSTANDARD1_3
[Test]
public void IntegerLengthOverflows()
{
@@ -1661,7 +1661,7 @@ namespace Newtonsoft.Json.Tests
Assert.IsNotNull(actual);
}
-#if !(NET40 || NET35 || NET20)
+#if !(NET40 || NET35 || NET20 || PORTABLE40)
[Test]
public void ShouldNotPopulateReadOnlyDictionaryObjectWithNonDefaultConstructor()
{
diff --git a/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/ExceptionHandlingAsyncTests.cs b/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/ExceptionHandlingAsyncTests.cs
index c21f7bde..27a50fd3 100644
--- a/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/ExceptionHandlingAsyncTests.cs
+++ b/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/ExceptionHandlingAsyncTests.cs
@@ -23,7 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
-#if !(NET20 || NET35 || NET40)
+#if !(NET20 || NET35 || NET40 || PORTABLE40)
using System;
using System.Globalization;
diff --git a/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/ExceptionHandlingTests.cs b/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/ExceptionHandlingTests.cs
index cbf6b06e..dcf57cda 100644
--- a/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/ExceptionHandlingTests.cs
+++ b/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/ExceptionHandlingTests.cs
@@ -28,7 +28,7 @@ using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using Newtonsoft.Json.Linq;
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE40 || PORTABLE) || NETSTANDARD1_3
using System.Numerics;
#endif
using System.Text;
@@ -616,7 +616,7 @@ namespace Newtonsoft.Json.Tests.JsonTextReaderTests
}
}
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE40 || PORTABLE) || NETSTANDARD1_3
[Test]
public void ReadInt64Overflow()
{
@@ -638,7 +638,7 @@ namespace Newtonsoft.Json.Tests.JsonTextReaderTests
}
#endif
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE40 || PORTABLE) || NETSTANDARD1_3
[Test]
public void ReadInt64Overflow_Negative()
{
diff --git a/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/FloatAsyncTests.cs b/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/FloatAsyncTests.cs
index 77bb2e6a..ee48f234 100644
--- a/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/FloatAsyncTests.cs
+++ b/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/FloatAsyncTests.cs
@@ -23,7 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
-#if !(NET20 || NET35 || NET40)
+#if !(NET20 || NET35 || NET40 || PORTABLE40)
using System;
#if DNXCORE50
diff --git a/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/FloatTests.cs b/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/FloatTests.cs
index 53ac297c..19dd9558 100644
--- a/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/FloatTests.cs
+++ b/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/FloatTests.cs
@@ -28,7 +28,7 @@ using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using Newtonsoft.Json.Linq;
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE40 || PORTABLE) || NETSTANDARD1_3
using System.Numerics;
#endif
using System.Text;
diff --git a/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/MiscAsyncTests.cs b/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/MiscAsyncTests.cs
index 69c1cf2f..112368ae 100644
--- a/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/MiscAsyncTests.cs
+++ b/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/MiscAsyncTests.cs
@@ -23,7 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
-#if !(NET20 || NET35 || NET40)
+#if !(NET20 || NET35 || NET40 || PORTABLE40)
using System;
using System.Globalization;
diff --git a/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/MiscTests.cs b/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/MiscTests.cs
index c47b9aab..7f72970f 100644
--- a/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/MiscTests.cs
+++ b/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/MiscTests.cs
@@ -28,7 +28,7 @@ using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using Newtonsoft.Json.Linq;
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE40 || PORTABLE) || NETSTANDARD1_3
using System.Numerics;
#endif
using System.Text;
diff --git a/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/ParseAsyncTests.cs b/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/ParseAsyncTests.cs
index c5147187..5225eaaa 100644
--- a/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/ParseAsyncTests.cs
+++ b/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/ParseAsyncTests.cs
@@ -23,7 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
-#if !(NET20 || NET35 || NET40)
+#if !(NET20 || NET35 || NET40 || PORTABLE40)
using System;
using System.Text;
diff --git a/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/ParseTests.cs b/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/ParseTests.cs
index c7ffab91..675b91dd 100644
--- a/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/ParseTests.cs
+++ b/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/ParseTests.cs
@@ -28,7 +28,7 @@ using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using Newtonsoft.Json.Linq;
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE40 || PORTABLE) || NETSTANDARD1_3
using System.Numerics;
#endif
using System.Text;
diff --git a/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/ReadAsyncTests.cs b/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/ReadAsyncTests.cs
index a88ba40e..42349002 100644
--- a/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/ReadAsyncTests.cs
+++ b/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/ReadAsyncTests.cs
@@ -23,7 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
-#if !(NET20 || NET35 || NET40)
+#if !(NET20 || NET35 || NET40 || PORTABLE40)
using System;
using System.Globalization;
@@ -56,7 +56,7 @@ namespace Newtonsoft.Json.Tests.JsonTextReaderTests
#endif
public class ReadAsyncTests : TestFixtureBase
{
-#if !(PORTABLE || NET35 || NET20)
+#if !(PORTABLE || PORTABLE40 || NET35 || NET20)
[Test]
public async Task ReadAsBooleanAsync()
{
diff --git a/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/ReadTests.cs b/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/ReadTests.cs
index 33c1c17c..55539c0d 100644
--- a/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/ReadTests.cs
+++ b/Src/Newtonsoft.Json.Tests/JsonTextReaderTests/ReadTests.cs
@@ -28,7 +28,7 @@ using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using Newtonsoft.Json.Linq;
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE40 || PORTABLE) || NETSTANDARD1_3
using System.Numerics;
#endif
using System.Text;
@@ -61,7 +61,7 @@ namespace Newtonsoft.Json.Tests.JsonTextReaderTests
#endif
public class ReadTests : TestFixtureBase
{
-#if !(PORTABLE || NET35 || NET20)
+#if !(PORTABLE || PORTABLE40 || NET35 || NET20)
[Test]
public void ReadAsBoolean()
{
@@ -1194,7 +1194,7 @@ third line", jsonTextReader.Value);
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE40 || PORTABLE) || NETSTANDARD1_3
[Test]
public void ReadBigInteger()
{
diff --git a/Src/Newtonsoft.Json.Tests/JsonTextWriterAsyncTests.cs b/Src/Newtonsoft.Json.Tests/JsonTextWriterAsyncTests.cs
index 4e6f3010..88017a75 100644
--- a/Src/Newtonsoft.Json.Tests/JsonTextWriterAsyncTests.cs
+++ b/Src/Newtonsoft.Json.Tests/JsonTextWriterAsyncTests.cs
@@ -23,7 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
-#if !(NET20 || NET35 || NET40)
+#if !(NET20 || NET35 || NET40 || PORTABLE40)
using System;
using System.Collections.Generic;
diff --git a/Src/Newtonsoft.Json.Tests/JsonTextWriterTest.cs b/Src/Newtonsoft.Json.Tests/JsonTextWriterTest.cs
index e5ea2512..99c9d386 100644
--- a/Src/Newtonsoft.Json.Tests/JsonTextWriterTest.cs
+++ b/Src/Newtonsoft.Json.Tests/JsonTextWriterTest.cs
@@ -134,7 +134,7 @@ namespace Newtonsoft.Json.Tests
Assert.AreEqual(1, arrayPool.FreeArrays.Count);
}
-#if !(NET20 || NET35 || NET40 || PORTABLE || DNXCORE50)
+#if !(NET20 || NET35 || NET40 || PORTABLE || PORTABLE40 || DNXCORE50)
[Test]
public void BufferErroringWithInvalidSize()
{
diff --git a/Src/Newtonsoft.Json.Tests/JsonValidatingReaderTests.cs b/Src/Newtonsoft.Json.Tests/JsonValidatingReaderTests.cs
index b4bc1cd2..4376c358 100644
--- a/Src/Newtonsoft.Json.Tests/JsonValidatingReaderTests.cs
+++ b/Src/Newtonsoft.Json.Tests/JsonValidatingReaderTests.cs
@@ -353,7 +353,7 @@ namespace Newtonsoft.Json.Tests
Assert.IsNotNull(validationEventArgs);
}
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE || PORTABLE40) || NETSTANDARD1_3
[Test]
public void IntegerGreaterThanMaximumValue_BigInteger()
{
@@ -606,7 +606,7 @@ namespace Newtonsoft.Json.Tests
Assert.IsNotNull(validationEventArgs);
}
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE || PORTABLE40) || NETSTANDARD1_3
[Test]
public void BigIntegerDivisibleBy_Success()
{
diff --git a/Src/Newtonsoft.Json.Tests/Linq/ComponentModel/BindingTests.cs b/Src/Newtonsoft.Json.Tests/Linq/ComponentModel/BindingTests.cs
index df75b3d4..3461dadf 100644
--- a/Src/Newtonsoft.Json.Tests/Linq/ComponentModel/BindingTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Linq/ComponentModel/BindingTests.cs
@@ -23,7 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || PORTABLE40 || DNXCORE50)
using NUnit.Framework;
using System.Web.UI;
using Newtonsoft.Json.Linq;
diff --git a/Src/Newtonsoft.Json.Tests/Linq/ComponentModel/JPropertyDescriptorTests.cs b/Src/Newtonsoft.Json.Tests/Linq/ComponentModel/JPropertyDescriptorTests.cs
index aa11f930..96aee34e 100644
--- a/Src/Newtonsoft.Json.Tests/Linq/ComponentModel/JPropertyDescriptorTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Linq/ComponentModel/JPropertyDescriptorTests.cs
@@ -23,7 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || PORTABLE40 || DNXCORE50)
using NUnit.Framework;
using Newtonsoft.Json.Linq;
diff --git a/Src/Newtonsoft.Json.Tests/Linq/DynamicTests.cs b/Src/Newtonsoft.Json.Tests/Linq/DynamicTests.cs
index ae894415..83129134 100644
--- a/Src/Newtonsoft.Json.Tests/Linq/DynamicTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Linq/DynamicTests.cs
@@ -24,7 +24,7 @@
#endregion
using System.Diagnostics;
-#if !(NET35 || NET20)
+#if !(NET35 || NET20 || PORTABLE40)
using System;
using System.Collections.Generic;
using System.Dynamic;
diff --git a/Src/Newtonsoft.Json.Tests/Linq/JArrayTests.cs b/Src/Newtonsoft.Json.Tests/Linq/JArrayTests.cs
index cf5fd278..49c8bee4 100644
--- a/Src/Newtonsoft.Json.Tests/Linq/JArrayTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Linq/JArrayTests.cs
@@ -431,7 +431,7 @@ Parameter name: index");
}
}
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
[Test]
public void ITypedListGetItemProperties()
{
diff --git a/Src/Newtonsoft.Json.Tests/Linq/JConstructorAsyncTests.cs b/Src/Newtonsoft.Json.Tests/Linq/JConstructorAsyncTests.cs
index 710913d0..3ed7a9c5 100644
--- a/Src/Newtonsoft.Json.Tests/Linq/JConstructorAsyncTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Linq/JConstructorAsyncTests.cs
@@ -23,7 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
-#if !(NET20 || NET35 || NET40)
+#if !(NET20 || NET35 || NET40 || PORTABLE40)
using Newtonsoft.Json.Linq;
#if DNXCORE50
diff --git a/Src/Newtonsoft.Json.Tests/Linq/JObjectAsyncTests.cs b/Src/Newtonsoft.Json.Tests/Linq/JObjectAsyncTests.cs
index 046de582..4a440088 100644
--- a/Src/Newtonsoft.Json.Tests/Linq/JObjectAsyncTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Linq/JObjectAsyncTests.cs
@@ -23,7 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
-#if !(NET20 || NET35 || NET40)
+#if !(NET20 || NET35 || NET40 || PORTABLE40)
using System.Collections.Generic;
using Newtonsoft.Json.Tests.TestObjects;
diff --git a/Src/Newtonsoft.Json.Tests/Linq/JObjectTests.cs b/Src/Newtonsoft.Json.Tests/Linq/JObjectTests.cs
index 83425456..3bd1acee 100644
--- a/Src/Newtonsoft.Json.Tests/Linq/JObjectTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Linq/JObjectTests.cs
@@ -58,7 +58,7 @@ namespace Newtonsoft.Json.Tests.Linq
[TestFixture]
public class JObjectTests : TestFixtureBase
{
-#if !(NET35 || NET20)
+#if !(NET35 || NET20 || PORTABLE40)
[Test]
public void EmbedJValueStringInNewJObject()
{
@@ -716,7 +716,7 @@ Parameter name: arrayIndex");
Assert.AreEqual(p4, l[1]);
}
-#if !(NET20 || PORTABLE)
+#if !(NET20 || PORTABLE || PORTABLE40)
[Test]
public void PropertyChanging()
{
@@ -1259,7 +1259,7 @@ Parameter name: arrayIndex");
}, "Can not add property Test3 to Newtonsoft.Json.Linq.JObject. Property with the same name already exists on object.");
}
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
[Test]
public void IBindingListSortDirection()
{
@@ -1454,7 +1454,7 @@ Parameter name: arrayIndex");
}
#endif
-#if !(NET20 || NET35)
+#if !(NET20 || NET35 || PORTABLE40)
[Test]
public void CollectionChanged()
{
@@ -1583,7 +1583,7 @@ Parameter name: arrayIndex");
Assert.AreEqual("Name2", value);
}
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
[Test]
public void WriteObjectNullDBNullValue()
{
@@ -1695,7 +1695,7 @@ Parameter name: arrayIndex");
}, "Unexpected end of content while loading JObject. Path 'short.error.code', line 6, position 14.");
}
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
[Test]
public void GetProperties()
{
diff --git a/Src/Newtonsoft.Json.Tests/Linq/JPropertyAsyncTests.cs b/Src/Newtonsoft.Json.Tests/Linq/JPropertyAsyncTests.cs
index 5a81846c..15a12ab5 100644
--- a/Src/Newtonsoft.Json.Tests/Linq/JPropertyAsyncTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Linq/JPropertyAsyncTests.cs
@@ -23,7 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
-#if !(NET20 || NET35 || NET40)
+#if !(NET20 || NET35 || NET40 || PORTABLE40)
using Newtonsoft.Json.Linq;
#if DNXCORE50
diff --git a/Src/Newtonsoft.Json.Tests/Linq/JPropertyTests.cs b/Src/Newtonsoft.Json.Tests/Linq/JPropertyTests.cs
index c9f65ea9..49b74c61 100644
--- a/Src/Newtonsoft.Json.Tests/Linq/JPropertyTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Linq/JPropertyTests.cs
@@ -61,7 +61,7 @@ namespace Newtonsoft.Json.Tests.Linq
Assert.AreEqual(p, p.Value.Parent);
}
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
[Test]
public void ListChanged()
{
diff --git a/Src/Newtonsoft.Json.Tests/Linq/JTokenAsyncTests.cs b/Src/Newtonsoft.Json.Tests/Linq/JTokenAsyncTests.cs
index c8162b60..b8a3b8cc 100644
--- a/Src/Newtonsoft.Json.Tests/Linq/JTokenAsyncTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Linq/JTokenAsyncTests.cs
@@ -23,7 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
-#if !(NET20 || NET35 || NET40)
+#if !(NET20 || NET35 || NET40 || PORTABLE40)
using System;
using System.Threading.Tasks;
diff --git a/Src/Newtonsoft.Json.Tests/Linq/JTokenReaderAsyncTests.cs b/Src/Newtonsoft.Json.Tests/Linq/JTokenReaderAsyncTests.cs
index 6832cb3f..ba601184 100644
--- a/Src/Newtonsoft.Json.Tests/Linq/JTokenReaderAsyncTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Linq/JTokenReaderAsyncTests.cs
@@ -23,7 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
-#if !(NET20 || NET35 || NET40)
+#if !(NET20 || NET35 || NET40 || PORTABLE40)
using System;
using System.Text;
diff --git a/Src/Newtonsoft.Json.Tests/Linq/JTokenReaderTest.cs b/Src/Newtonsoft.Json.Tests/Linq/JTokenReaderTest.cs
index 4a259979..0fe86bd2 100644
--- a/Src/Newtonsoft.Json.Tests/Linq/JTokenReaderTest.cs
+++ b/Src/Newtonsoft.Json.Tests/Linq/JTokenReaderTest.cs
@@ -35,7 +35,7 @@ using NUnit.Framework;
#endif
using Newtonsoft.Json;
using System.IO;
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE40 || PORTABLE) || NETSTANDARD1_3
using System.Numerics;
#endif
using Newtonsoft.Json.Linq;
@@ -47,7 +47,7 @@ namespace Newtonsoft.Json.Tests.Linq
[TestFixture]
public class JTokenReaderTest : TestFixtureBase
{
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE40 || PORTABLE) || NETSTANDARD1_3
[Test]
public void ConvertBigIntegerToDouble()
{
@@ -872,7 +872,7 @@ namespace Newtonsoft.Json.Tests.Linq
Assert.AreEqual(1d, reader.ReadAsDouble());
}
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE40 || PORTABLE) || NETSTANDARD1_3
[Test]
public void ReadAsBoolean_BigInteger_Success()
{
diff --git a/Src/Newtonsoft.Json.Tests/Linq/JTokenTests.cs b/Src/Newtonsoft.Json.Tests/Linq/JTokenTests.cs
index f0a475ff..1a5a1630 100644
--- a/Src/Newtonsoft.Json.Tests/Linq/JTokenTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Linq/JTokenTests.cs
@@ -369,7 +369,7 @@ namespace Newtonsoft.Json.Tests.Linq
Assert.AreEqual(5, (int)(new JValue(StringComparison.OrdinalIgnoreCase)));
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE || PORTABLE40) || NETSTANDARD1_3
string bigIntegerText = "1234567899999999999999999999999999999999999999999999999999999999999990";
Assert.AreEqual(BigInteger.Parse(bigIntegerText), (new JValue(BigInteger.Parse(bigIntegerText))).Value);
@@ -449,7 +449,7 @@ namespace Newtonsoft.Json.Tests.Linq
#endif
ExceptionAssert.Throws(() => { var i = (Uri)new JValue(true); }, "Can not convert Boolean to Uri.");
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE || PORTABLE40) || NETSTANDARD1_3
ExceptionAssert.Throws(() => { var i = (new JValue(new Uri("http://www.google.com"))).ToObject(); }, "Can not convert Uri to BigInteger.");
ExceptionAssert.Throws(() => { var i = (JValue.CreateNull()).ToObject(); }, "Can not convert Null to BigInteger.");
ExceptionAssert.Throws(() => { var i = (new JValue(Guid.NewGuid())).ToObject(); }, "Can not convert Guid to BigInteger.");
@@ -524,7 +524,7 @@ namespace Newtonsoft.Json.Tests.Linq
Assert.IsTrue(JToken.DeepEquals(new JValue((DateTimeOffset?)null), (JValue)(DateTimeOffset?)null));
#endif
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE || PORTABLE40) || NETSTANDARD1_3
// had to remove implicit casting to avoid user reference to System.Numerics.dll
Assert.IsTrue(JToken.DeepEquals(new JValue(new BigInteger(1)), new JValue(new BigInteger(1))));
Assert.IsTrue(JToken.DeepEquals(new JValue((BigInteger?)null), new JValue((BigInteger?)null)));
@@ -1147,7 +1147,7 @@ namespace Newtonsoft.Json.Tests.Linq
Assert.IsTrue(a.DeepEquals(a2));
}
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
[Test]
public void Clone()
{
diff --git a/Src/Newtonsoft.Json.Tests/Linq/JTokenWriterAsyncTests.cs b/Src/Newtonsoft.Json.Tests/Linq/JTokenWriterAsyncTests.cs
index d65dbdcb..5fe39c15 100644
--- a/Src/Newtonsoft.Json.Tests/Linq/JTokenWriterAsyncTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Linq/JTokenWriterAsyncTests.cs
@@ -23,7 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
-#if !(NET20 || NET35 || NET40)
+#if !(NET20 || NET35 || NET40 || PORTABLE40)
using System;
#if !PORTABLE || NETSTANDARD1_3
diff --git a/Src/Newtonsoft.Json.Tests/Linq/JTokenWriterTest.cs b/Src/Newtonsoft.Json.Tests/Linq/JTokenWriterTest.cs
index 1ab23b41..8134ff6e 100644
--- a/Src/Newtonsoft.Json.Tests/Linq/JTokenWriterTest.cs
+++ b/Src/Newtonsoft.Json.Tests/Linq/JTokenWriterTest.cs
@@ -25,7 +25,7 @@
using System;
using System.Collections.Generic;
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE || PORTABLE40) || NETSTANDARD1_3
using System.Numerics;
#endif
using System.Text;
@@ -120,7 +120,7 @@ namespace Newtonsoft.Json.Tests.Linq
jsonWriter.WriteValue("DVD read/writer");
Assert.AreEqual(WriteState.Array, jsonWriter.WriteState);
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE || PORTABLE40) || NETSTANDARD1_3
jsonWriter.WriteValue(new BigInteger(123));
Assert.AreEqual(WriteState.Array, jsonWriter.WriteState);
#endif
@@ -172,7 +172,7 @@ namespace Newtonsoft.Json.Tests.Linq
Assert.AreEqual(WriteState.Array, jsonWriter.WriteState);
Assert.AreEqual(a[a.Count - 1], jsonWriter.CurrentToken);
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE || PORTABLE40) || NETSTANDARD1_3
jsonWriter.WriteValue(new BigInteger(123));
Assert.AreEqual(WriteState.Array, jsonWriter.WriteState);
Assert.AreEqual(a[a.Count - 1], jsonWriter.CurrentToken);
@@ -205,7 +205,7 @@ namespace Newtonsoft.Json.Tests.Linq
/*fail*/]", writer.Token.ToString());
}
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE || PORTABLE40) || NETSTANDARD1_3
[Test]
public void WriteBigInteger()
{
diff --git a/Src/Newtonsoft.Json.Tests/Linq/JValueAsyncTests.cs b/Src/Newtonsoft.Json.Tests/Linq/JValueAsyncTests.cs
index 541c1ced..9a28890b 100644
--- a/Src/Newtonsoft.Json.Tests/Linq/JValueAsyncTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Linq/JValueAsyncTests.cs
@@ -23,7 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
-#if !(NET20 || NET35 || NET40)
+#if !(NET20 || NET35 || NET40 || PORTABLE40)
using System;
using System.IO;
diff --git a/Src/Newtonsoft.Json.Tests/Linq/JValueTests.cs b/Src/Newtonsoft.Json.Tests/Linq/JValueTests.cs
index 0b329c29..7a731775 100644
--- a/Src/Newtonsoft.Json.Tests/Linq/JValueTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Linq/JValueTests.cs
@@ -150,7 +150,7 @@ namespace Newtonsoft.Json.Tests.Linq
Assert.AreEqual("Pie", v.Value);
Assert.AreEqual(JTokenType.String, v.Type);
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
v.Value = DBNull.Value;
Assert.AreEqual(DBNull.Value, v.Value);
Assert.AreEqual(JTokenType.Null, v.Type);
@@ -179,7 +179,7 @@ namespace Newtonsoft.Json.Tests.Linq
Assert.AreEqual(g, v.Value);
Assert.AreEqual(JTokenType.Guid, v.Type);
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE || PORTABLE40) || NETSTANDARD1_3
BigInteger i = BigInteger.Parse("123456789999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999990");
v.Value = i;
Assert.AreEqual(i, v.Value);
@@ -239,13 +239,13 @@ namespace Newtonsoft.Json.Tests.Linq
v = new JValue(new Guid("B282ADE7-C520-496C-A448-4084F6803DE5"));
Assert.AreEqual("b282ade7-c520-496c-a448-4084f6803de5", v.ToString(null, CultureInfo.InvariantCulture));
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE || PORTABLE40) || NETSTANDARD1_3
v = new JValue(BigInteger.Parse("123456789999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999990"));
Assert.AreEqual("123456789999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999990", v.ToString(null, CultureInfo.InvariantCulture));
#endif
}
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE || PORTABLE40) || NETSTANDARD1_3
[Test]
public void JValueParse()
{
@@ -513,7 +513,7 @@ namespace Newtonsoft.Json.Tests.Linq
Assert.AreEqual(Int32.MaxValue, Convert.ToInt32(new JValue(Int32.MaxValue)));
}
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE || PORTABLE40) || NETSTANDARD1_3
[Test]
public void ConvertsToInt32_BigInteger()
{
@@ -641,7 +641,7 @@ namespace Newtonsoft.Json.Tests.Linq
}
#endif
-#if !(NET35 || NET20)
+#if !(PORTABLE40 || NET35 || NET20)
[Test]
public void ExpicitConversionTest()
{
@@ -675,7 +675,7 @@ namespace Newtonsoft.Json.Tests.Linq
v = new JValue(new Uri("http://www.google.com"));
Assert.AreEqual(TypeCode.Object, v.GetTypeCode());
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE || PORTABLE40) || NETSTANDARD1_3
v = new JValue(new BigInteger(3));
Assert.AreEqual(TypeCode.Object, v.GetTypeCode());
#endif
@@ -709,7 +709,7 @@ namespace Newtonsoft.Json.Tests.Linq
Assert.AreEqual("2013", v.ToString("yyyy"));
}
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE || PORTABLE40) || NETSTANDARD1_3
[Test]
public void ToStringNewTypes()
{
@@ -796,7 +796,7 @@ namespace Newtonsoft.Json.Tests.Linq
}", json);
}
-#if !(NET20 || NET35)
+#if !(NET20 || NET35 || PORTABLE40)
[Test]
public void EnumTests()
{
diff --git a/Src/Newtonsoft.Json.Tests/Linq/JsonPath/JPathExecuteTests.cs b/Src/Newtonsoft.Json.Tests/Linq/JsonPath/JPathExecuteTests.cs
index b14b0081..b2f9e17b 100644
--- a/Src/Newtonsoft.Json.Tests/Linq/JsonPath/JPathExecuteTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Linq/JsonPath/JPathExecuteTests.cs
@@ -26,7 +26,7 @@
using System;
using System.Collections.Generic;
using System.Text;
-#if !(PORTABLE || NET35 || NET20) || NETSTANDARD1_3
+#if !(PORTABLE || PORTABLE40 || NET35 || NET20) || NETSTANDARD1_3
using System.Numerics;
#endif
using Newtonsoft.Json.Linq.JsonPath;
@@ -738,7 +738,7 @@ namespace Newtonsoft.Json.Tests.Linq.JsonPath
Assert.IsTrue(JToken.DeepEquals(new JObject(new JProperty("hi", 3)), t[1]));
}
-#if !(PORTABLE || DNXCORE50 || NET35 || NET20) || NETSTANDARD1_3
+#if !(PORTABLE || DNXCORE50 || PORTABLE40 || NET35 || NET20) || NETSTANDARD1_3
[Test]
public void GreaterQueryBigInteger()
{
diff --git a/Src/Newtonsoft.Json.Tests/Linq/LinqToJsonAsyncTests.cs b/Src/Newtonsoft.Json.Tests/Linq/LinqToJsonAsyncTests.cs
index 9399a48b..fbcb8087 100644
--- a/Src/Newtonsoft.Json.Tests/Linq/LinqToJsonAsyncTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Linq/LinqToJsonAsyncTests.cs
@@ -23,7 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
-#if !(NET20 || NET35 || NET40)
+#if !(NET20 || NET35 || NET40 || PORTABLE40)
using System;
using System.Collections.Generic;
diff --git a/Src/Newtonsoft.Json.Tests/Linq/LinqToJsonTest.cs b/Src/Newtonsoft.Json.Tests/Linq/LinqToJsonTest.cs
index f652abad..6105664d 100644
--- a/Src/Newtonsoft.Json.Tests/Linq/LinqToJsonTest.cs
+++ b/Src/Newtonsoft.Json.Tests/Linq/LinqToJsonTest.cs
@@ -1185,7 +1185,7 @@ keyword such as type of business.""
Assert.AreEqual(new DateTime(2000, 10, 15, 5, 5, 5, DateTimeKind.Utc), d);
}
-#if !(NET20 || NET35)
+#if !(NET20 || NET35 || PORTABLE40)
[Test]
public void CovariantIJEnumerable()
{
diff --git a/Src/Newtonsoft.Json.Tests/LinqToSql/LinqToSqlClassesSerializationTests.cs b/Src/Newtonsoft.Json.Tests/LinqToSql/LinqToSqlClassesSerializationTests.cs
index 5600d56d..09568bfa 100644
--- a/Src/Newtonsoft.Json.Tests/LinqToSql/LinqToSqlClassesSerializationTests.cs
+++ b/Src/Newtonsoft.Json.Tests/LinqToSql/LinqToSqlClassesSerializationTests.cs
@@ -23,7 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
-#if !(DNXCORE50 || NET20)
+#if !(DNXCORE50 || PORTABLE40 || PORTABLE40 || NET20)
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
diff --git a/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Portable40.csproj b/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Portable40.csproj
new file mode 100644
index 00000000..84dd07e5
--- /dev/null
+++ b/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Portable40.csproj
@@ -0,0 +1,449 @@
+
+
+
+ Debug
+ AnyCPU
+ 9.0.30729
+ 2.0
+ {3E6E2335-B079-4B5B-A65A-9D586914BCBB}
+ Library
+ Properties
+ Newtonsoft.Json.Tests
+ Newtonsoft.Json.Tests
+
+
+
+
+
+
+
+
+
+
+ 3.5
+
+
+ v4.0
+ false
+
+
+ publish\
+ true
+ Disk
+ false
+ Foreground
+ 7
+ Days
+ false
+ false
+ true
+ 0
+ 1.0.0.%2a
+ false
+ false
+ true
+
+
+
+
+ true
+ full
+ false
+ bin\Debug\Portable40\
+ obj\Debug\Portable40\
+ TRACE;DEBUG;PORTABLE40
+ prompt
+ 4
+ AllRules.ruleset
+ false
+
+
+ pdbonly
+ true
+ bin\Release\Portable40\
+ obj\Release\Portable40\
+ TRACE;PORTABLE40
+ prompt
+ 4
+ AllRules.ruleset
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+ True
+ FileSystemEntityModel.edmx
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ EntityModelCodeGenerator
+ FileSystemEntityModel.Designer.cs
+
+
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+
+
+ False
+ .NET Framework 3.5 SP1 Client Profile
+ false
+
+
+ False
+ .NET Framework 3.5 SP1
+ true
+
+
+ False
+ Windows Installer 3.1
+ true
+
+
+
+
+ {959f7f85-c98b-4876-971a-9036224578e4}
+ Newtonsoft.Json.Portable40
+
+
+
+
+ PreserveNewest
+
+
+
+
+ PreserveNewest
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Portable40.project.json b/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Portable40.project.json
new file mode 100644
index 00000000..c46b1171
--- /dev/null
+++ b/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Portable40.project.json
@@ -0,0 +1,12 @@
+{
+ "dependencies": {
+ "FSharp.Core": "4.0.0.1",
+ "NUnit": "2.6.2"
+ },
+ "frameworks": {
+ "net40": {}
+ },
+ "runtimes": {
+ "win": {}
+ }
+}
\ No newline at end of file
diff --git a/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Roslyn.csproj b/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Roslyn.csproj
index a92fb3b1..687afd41 100644
--- a/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Roslyn.csproj
+++ b/Src/Newtonsoft.Json.Tests/Newtonsoft.Json.Tests.Roslyn.csproj
@@ -115,6 +115,6 @@
- NETSTANDARD1_3;DNXCORE50;PORTABLE;$(AdditionalConstants)
+ NETSTANDARD1_1;DNXCORE50;PORTABLE;$(AdditionalConstants)
\ No newline at end of file
diff --git a/Src/Newtonsoft.Json.Tests/Properties/AssemblyInfo.cs b/Src/Newtonsoft.Json.Tests/Properties/AssemblyInfo.cs
index d99bb40e..f95e2fbe 100644
--- a/Src/Newtonsoft.Json.Tests/Properties/AssemblyInfo.cs
+++ b/Src/Newtonsoft.Json.Tests/Properties/AssemblyInfo.cs
@@ -34,7 +34,9 @@ using System.Security;
#if NETSTANDARD1_0
[assembly: AssemblyTitle("Json.NET Tests .NET Standard 1.0")]
#elif NETSTANDARD1_3
-[assembly: AssemblyTitle("Json.NET Tests .NET Standard 1.3")]
+[assembly: AssemblyTitle("Json.NET Tests .NET Standard 1.1")]
+#elif PORTABLE40
+[assembly: AssemblyTitle("Json.NET Tests Portable .NET 4.0")]
#elif PORTABLE
[assembly: AssemblyTitle("Json.NET Tests Portable")]
#elif NET20
diff --git a/Src/Newtonsoft.Json.Tests/Schema/ExtensionsTests.cs b/Src/Newtonsoft.Json.Tests/Schema/ExtensionsTests.cs
index 30adc416..c2d25ab2 100644
--- a/Src/Newtonsoft.Json.Tests/Schema/ExtensionsTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Schema/ExtensionsTests.cs
@@ -204,7 +204,7 @@ namespace Newtonsoft.Json.Tests.Schema
#if !NET20
GenerateSchemaAndSerializeFromType(new NullableDateTimeTestClass());
#endif
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
GenerateSchemaAndSerializeFromType(new DataSet());
#endif
GenerateSchemaAndSerializeFromType(new object());
@@ -212,7 +212,7 @@ namespace Newtonsoft.Json.Tests.Schema
GenerateSchemaAndSerializeFromType("Hi");
GenerateSchemaAndSerializeFromType(new DateTime(2000, 12, 29, 23, 59, 0, DateTimeKind.Utc));
GenerateSchemaAndSerializeFromType(TimeSpan.FromTicks(1000000));
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
GenerateSchemaAndSerializeFromType(DBNull.Value);
#endif
GenerateSchemaAndSerializeFromType(new JsonPropertyWithHandlingValues());
diff --git a/Src/Newtonsoft.Json.Tests/Schema/JsonSchemaGeneratorTests.cs b/Src/Newtonsoft.Json.Tests/Schema/JsonSchemaGeneratorTests.cs
index f13ad3f9..eea1b403 100644
--- a/Src/Newtonsoft.Json.Tests/Schema/JsonSchemaGeneratorTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Schema/JsonSchemaGeneratorTests.cs
@@ -93,7 +93,7 @@ namespace Newtonsoft.Json.Tests.Schema
Assert.IsTrue(o.IsValid(schema));
}
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
[Test]
public void Generate_DefaultValueAttributeTestClass()
{
@@ -312,7 +312,7 @@ namespace Newtonsoft.Json.Tests.Schema
Assert.IsTrue(v.IsValid(schema));
}
-#if !(PORTABLE || DNXCORE50) || NETSTANDARD1_3
+#if !(PORTABLE || DNXCORE50 || PORTABLE40) || NETSTANDARD1_3
[Test]
public void GenerateSchemaForISerializable()
{
@@ -327,7 +327,7 @@ namespace Newtonsoft.Json.Tests.Schema
}
#endif
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
[Test]
public void GenerateSchemaForDBNull()
{
@@ -340,7 +340,7 @@ namespace Newtonsoft.Json.Tests.Schema
}
#endif
-#if !(PORTABLE || DNXCORE50) || NETSTANDARD1_3
+#if !(PORTABLE || DNXCORE50 || PORTABLE40) || NETSTANDARD1_3
public class CustomDirectoryInfoMapper : DefaultContractResolver
{
public CustomDirectoryInfoMapper()
@@ -479,7 +479,7 @@ namespace Newtonsoft.Json.Tests.Schema
generator.UndefinedSchemaIdHandling = UndefinedSchemaIdHandling.UseTypeName;
generator.ContractResolver = new CamelCasePropertyNamesContractResolver()
{
-#if !(PORTABLE || DNXCORE50) || NETSTANDARD1_3
+#if !(PORTABLE || DNXCORE50 || PORTABLE40) || NETSTANDARD1_3
IgnoreSerializableAttribute = true
#endif
};
@@ -524,7 +524,7 @@ namespace Newtonsoft.Json.Tests.Schema
}", json);
}
-#if !(PORTABLE || DNXCORE50) || NETSTANDARD1_3
+#if !(PORTABLE || DNXCORE50 || PORTABLE40) || NETSTANDARD1_3
[Test]
public void GenerateSchemaSerializable()
{
@@ -837,7 +837,7 @@ namespace Newtonsoft.Json.Tests.Schema
{
}
-#if !(PORTABLE || DNXCORE50) || NETSTANDARD1_3
+#if !(PORTABLE || DNXCORE50 || PORTABLE40) || NETSTANDARD1_3
[Serializable]
public sealed class SerializableTestObject
{
diff --git a/Src/Newtonsoft.Json.Tests/Serialization/CamelCaseNamingStrategyTests.cs b/Src/Newtonsoft.Json.Tests/Serialization/CamelCaseNamingStrategyTests.cs
index 9e3c6ef1..ee13c53d 100644
--- a/Src/Newtonsoft.Json.Tests/Serialization/CamelCaseNamingStrategyTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Serialization/CamelCaseNamingStrategyTests.cs
@@ -159,7 +159,7 @@ namespace Newtonsoft.Json.Tests.Serialization
}", json);
}
-#if !(NET35 || NET20)
+#if !(NET35 || NET20 || PORTABLE40)
[Test]
public void DynamicCamelCasePropertyNames()
{
diff --git a/Src/Newtonsoft.Json.Tests/Serialization/CamelCasePropertyNamesContractResolverTests.cs b/Src/Newtonsoft.Json.Tests/Serialization/CamelCasePropertyNamesContractResolverTests.cs
index 9a466113..620c0deb 100644
--- a/Src/Newtonsoft.Json.Tests/Serialization/CamelCasePropertyNamesContractResolverTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Serialization/CamelCasePropertyNamesContractResolverTests.cs
@@ -119,7 +119,7 @@ namespace Newtonsoft.Json.Tests.Serialization
string json = o.ToString();
}
-#if !(PORTABLE)
+#if !(PORTABLE || PORTABLE40)
#pragma warning disable 618
[Test]
public void MemberSearchFlags()
@@ -196,7 +196,7 @@ namespace Newtonsoft.Json.Tests.Serialization
}", json);
}
-#if !(NET35 || NET20)
+#if !(NET35 || NET20 || PORTABLE40)
[Test]
public void DynamicCamelCasePropertyNames()
{
diff --git a/Src/Newtonsoft.Json.Tests/Serialization/ContractResolverTests.cs b/Src/Newtonsoft.Json.Tests/Serialization/ContractResolverTests.cs
index ad35cc3a..ed55bca6 100644
--- a/Src/Newtonsoft.Json.Tests/Serialization/ContractResolverTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Serialization/ContractResolverTests.cs
@@ -115,7 +115,7 @@ namespace Newtonsoft.Json.Tests.Serialization
[TestFixture]
public class ContractResolverTests : TestFixtureBase
{
-#if !(PORTABLE) || NETSTANDARD1_3
+#if !(PORTABLE || PORTABLE40) || NETSTANDARD1_3
[Test]
public void ResolveSerializableContract()
{
@@ -573,7 +573,7 @@ namespace Newtonsoft.Json.Tests.Serialization
}", startingWithB);
}
-#if !(PORTABLE)
+#if !(PORTABLE || PORTABLE40)
#pragma warning disable 618
[Test]
public void SerializeCompilerGeneratedMembers()
diff --git a/Src/Newtonsoft.Json.Tests/Serialization/DependencyInjectionTests.cs b/Src/Newtonsoft.Json.Tests/Serialization/DependencyInjectionTests.cs
index 57d88129..06306b76 100644
--- a/Src/Newtonsoft.Json.Tests/Serialization/DependencyInjectionTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Serialization/DependencyInjectionTests.cs
@@ -23,7 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
-#if !(NET40 || NET35 || NET20 || DNXCORE50 || PORTABLE)
+#if !(NET40 || NET35 || NET20 || DNXCORE50 || PORTABLE || PORTABLE40)
using Autofac;
using Newtonsoft.Json.Serialization;
using Newtonsoft.Json.Tests.TestObjects;
diff --git a/Src/Newtonsoft.Json.Tests/Serialization/DynamicTests.cs b/Src/Newtonsoft.Json.Tests/Serialization/DynamicTests.cs
index 495aa4a4..84096969 100644
--- a/Src/Newtonsoft.Json.Tests/Serialization/DynamicTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Serialization/DynamicTests.cs
@@ -23,7 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
-#if !(NET35 || NET20)
+#if !(NET35 || NET20 || PORTABLE40)
using System;
using System.Collections;
using System.Collections.Generic;
@@ -101,7 +101,7 @@ namespace Newtonsoft.Json.Tests.Serialization
Assert.AreEqual(dynamicObject.ChildObject.Text, d.ChildObject.Text);
}
-#if !(PORTABLE)
+#if !(PORTABLE || PORTABLE40)
[Test]
public void SerializeDynamicObjectWithObjectTracking()
{
diff --git a/Src/Newtonsoft.Json.Tests/Serialization/EntitiesSerializationTests.cs b/Src/Newtonsoft.Json.Tests/Serialization/EntitiesSerializationTests.cs
index 813693a0..f3af3b15 100644
--- a/Src/Newtonsoft.Json.Tests/Serialization/EntitiesSerializationTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Serialization/EntitiesSerializationTests.cs
@@ -23,7 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
-#if !(NET35 || NET20 || PORTABLE || DNXCORE50)
+#if !(NET35 || NET20 || PORTABLE || DNXCORE50 || PORTABLE40)
using Newtonsoft.Json.Serialization;
using System;
using System.Collections.Generic;
diff --git a/Src/Newtonsoft.Json.Tests/Serialization/ImmutableCollectionsTests.cs b/Src/Newtonsoft.Json.Tests/Serialization/ImmutableCollectionsTests.cs
index 4e032af1..81876c5d 100644
--- a/Src/Newtonsoft.Json.Tests/Serialization/ImmutableCollectionsTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Serialization/ImmutableCollectionsTests.cs
@@ -23,7 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
-#if !(NET20 || NET35 || NET40)
+#if !(NET20 || NET35 || NET40 || PORTABLE40)
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
diff --git a/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerCollectionsTests.cs b/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerCollectionsTests.cs
index 5ac3e4ec..6c54d628 100644
--- a/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerCollectionsTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerCollectionsTests.cs
@@ -27,7 +27,7 @@ using System;
using System.Collections;
using System.Collections.Specialized;
using System.Runtime.Serialization;
-#if !(NET35 || NET20 || PORTABLE)
+#if !(NET35 || NET20 || PORTABLE || PORTABLE40)
using System.Collections.Concurrent;
#endif
using System.Collections.Generic;
@@ -54,7 +54,7 @@ using Assert = Newtonsoft.Json.Tests.XUnitAssert;
#else
using NUnit.Framework;
#endif
-#if !NET20
+#if !NET20 && !PORTABLE40
using System.Xml.Linq;
#endif
@@ -353,7 +353,7 @@ namespace Newtonsoft.Json.Tests.Serialization
}
#endif
-#if !(NET35 || NET20 || PORTABLE)
+#if !(NET35 || NET20 || PORTABLE || PORTABLE40)
public class SomeObject
{
public string Text1 { get; set; }
@@ -640,7 +640,7 @@ namespace Newtonsoft.Json.Tests.Serialization
Assert.AreEqual("string!", l[0]);
}
-#if !(NET40 || NET35 || NET20)
+#if !(NET40 || NET35 || NET20 || PORTABLE40)
[Test]
public void DeserializeReadOnlyListInterface()
{
@@ -995,7 +995,7 @@ namespace Newtonsoft.Json.Tests.Serialization
Assert.AreEqual(3, v2["Third"]);
}
-#if !(NET35 || NET20 || PORTABLE)
+#if !(NET35 || NET20 || PORTABLE || PORTABLE40)
[Test]
public void DeserializeConcurrentDictionary()
{
@@ -1073,7 +1073,7 @@ namespace Newtonsoft.Json.Tests.Serialization
ExceptionAssert.Throws(() => { JsonConvert.DeserializeObject>>>(json); }, "Cannot convert null value to KeyValuePair. Path '[0]', line 1, position 6.");
}
-#if !(NET40 || NET35 || NET20)
+#if !(NET40 || NET35 || NET20 || PORTABLE40)
public class PopulateReadOnlyTestClass
{
public IList NonReadOnlyList { get; set; }
@@ -1916,7 +1916,7 @@ namespace Newtonsoft.Json.Tests.Serialization
Assert.AreEqual("Product 1", p1.Name);
}
-#if !(NET40 || NET35 || NET20)
+#if !(NET40 || NET35 || NET20 || PORTABLE40)
[Test]
public void ReadOnlyIntegerList()
{
@@ -1966,7 +1966,7 @@ namespace Newtonsoft.Json.Tests.Serialization
}, "Unable to find a constructor to use for type Newtonsoft.Json.Tests.Serialization.ReadOnlyCollectionWithArrayArgument`1[System.Double]. Path '', line 1, position 1.");
}
-#if !NET20
+#if !NET20 && !PORTABLE40
[Test]
public void NonDefaultConstructor_DuplicateKeyInDictionary_Replace()
{
@@ -2085,7 +2085,7 @@ namespace Newtonsoft.Json.Tests.Serialization
}
}
-#if !NET20
+#if !NET20 && !PORTABLE40
public class CASResponce
{
//
@@ -2389,7 +2389,7 @@ namespace Newtonsoft.Json.Tests.Serialization
}
}
-#if !(NET40 || NET35 || NET20)
+#if !(NET40 || NET35 || NET20 || PORTABLE40)
public class ReadOnlyIntegerList : IReadOnlyCollection
{
private readonly List _list;
diff --git a/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs b/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs
index 8c3efc3d..73c211d2 100644
--- a/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs
+++ b/Src/Newtonsoft.Json.Tests/Serialization/JsonSerializerTest.cs
@@ -331,7 +331,7 @@ namespace Newtonsoft.Json.Tests.Serialization
}
}
-#if !(PORTABLE || NET20 || NET35)
+#if !(PORTABLE || PORTABLE40 || NET20 || NET35)
[Test]
public void LargeIntegerAsString()
{
@@ -392,7 +392,7 @@ namespace Newtonsoft.Json.Tests.Serialization
@"Error converting value {null} to type 'System.Boolean'. Path '[0]', line 1, position 3.");
}
-#if !(PORTABLE || NET35 || NET20)
+#if !(PORTABLE || PORTABLE40 || NET35 || NET20)
[Test]
public void DeserializeBooleans()
{
@@ -842,7 +842,7 @@ namespace Newtonsoft.Json.Tests.Serialization
Assert.AreEqual("Name!", c2.Name);
}
-#if !(NET20 || NET35)
+#if !(NET20 || NET35 || PORTABLE40)
[Test]
public void SerializeValueTuple()
{
@@ -1058,7 +1058,7 @@ namespace Newtonsoft.Json.Tests.Serialization
public int ChildId;
}
-#if !(NET20 || NET35 || PORTABLE)
+#if !(NET20 || NET35 || PORTABLE40 || PORTABLE)
[Test]
public void ReadIntegerWithError()
{
@@ -1426,7 +1426,7 @@ namespace Newtonsoft.Json.Tests.Serialization
serializer.TraceWriter = traceWriter;
Assert.AreEqual(traceWriter, serializer.TraceWriter);
-#if !(PORTABLE || NET20 || DNXCORE50)
+#if !(PORTABLE || PORTABLE40 || NET20 || DNXCORE50)
#pragma warning disable 618
serializer.TypeNameAssemblyFormat = FormatterAssemblyStyle.Full;
Assert.AreEqual(FormatterAssemblyStyle.Full, serializer.TypeNameAssemblyFormat);
@@ -1541,7 +1541,7 @@ namespace Newtonsoft.Json.Tests.Serialization
settings.TraceWriter = traceWriter;
Assert.AreEqual(traceWriter, settings.TraceWriter);
-#if !(PORTABLE || NET20 || DNXCORE50)
+#if !(PORTABLE || PORTABLE40 || NET20 || DNXCORE50)
#pragma warning disable 618
settings.TypeNameAssemblyFormat = FormatterAssemblyStyle.Full;
Assert.AreEqual(FormatterAssemblyStyle.Full, settings.TypeNameAssemblyFormat);
@@ -1663,7 +1663,7 @@ namespace Newtonsoft.Json.Tests.Serialization
serializerProxy.TraceWriter = traceWriter;
Assert.AreEqual(traceWriter, serializerProxy.TraceWriter);
-#if !(PORTABLE || NET20 || DNXCORE50)
+#if !(PORTABLE || PORTABLE40 || NET20 || DNXCORE50)
#pragma warning disable 618
serializerProxy.TypeNameAssemblyFormat = FormatterAssemblyStyle.Full;
Assert.AreEqual(FormatterAssemblyStyle.Full, serializerProxy.TypeNameAssemblyFormat);
@@ -1684,7 +1684,7 @@ namespace Newtonsoft.Json.Tests.Serialization
Assert.AreEqual(TypeNameHandling.All, serializerProxy.TypeNameHandling);
}
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || PORTABLE40 || DNXCORE50)
[Test]
public void DeserializeISerializableIConvertible()
{
@@ -2847,7 +2847,7 @@ keyword such as type of business.""
ConverableMembers c = JsonConvert.DeserializeObject(json);
Assert.AreEqual("string", c.String);
Assert.AreEqual(double.MaxValue, c.Double);
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
Assert.AreEqual(DBNull.Value, c.DBNull);
#endif
}
@@ -4098,7 +4098,7 @@ Path '', line 1, position 1.");
@"Unexpected character encountered while parsing value: [. Path '', line 1, position 1.");
}
-#if !(NET35 || NET20)
+#if !(NET35 || NET20 || PORTABLE40)
[Test]
public void CannotDeserializeArrayIntoDynamic()
{
@@ -4194,7 +4194,7 @@ Path '', line 1, position 1.");
{
ContractResolver = new DefaultContractResolver
{
-#if !(PORTABLE || DNXCORE50) || NETSTANDARD1_3
+#if !(PORTABLE || DNXCORE50 || PORTABLE40) || NETSTANDARD1_3
IgnoreSerializableAttribute = true
#endif
}
@@ -4211,7 +4211,7 @@ Path '', line 1, position 1.");
{
ContractResolver = new DefaultContractResolver
{
-#if !(PORTABLE || DNXCORE50) || NETSTANDARD1_3
+#if !(PORTABLE || DNXCORE50 || PORTABLE40) || NETSTANDARD1_3
IgnoreSerializableAttribute = true
#endif
}
@@ -4228,7 +4228,7 @@ Path '', line 1, position 1.");
{
ContractResolver = new DefaultContractResolver
{
-#if !(PORTABLE || DNXCORE50) || NETSTANDARD1_3
+#if !(PORTABLE || DNXCORE50 || PORTABLE40) || NETSTANDARD1_3
IgnoreSerializableAttribute = true
#endif
}
@@ -4245,7 +4245,7 @@ Path '', line 1, position 1.");
{
ContractResolver = new DefaultContractResolver
{
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
IgnoreSerializableAttribute = true
#endif
}
@@ -5020,7 +5020,7 @@ Path '', line 1, position 1.");
Assert.AreEqual("value", newModelStateDictionary["key"]);
}
-#if !(PORTABLE || DNXCORE50) || NETSTANDARD1_3
+#if !(PORTABLE || DNXCORE50 || PORTABLE40) || NETSTANDARD1_3
#if DEBUG
[Test]
public void SerializeISerializableInPartialTrustWithIgnoreInterface()
@@ -5439,7 +5439,7 @@ Path '', line 1, position 1.");
}
#endif
-#if !(NET20)
+#if !(NET20 || PORTABLE40)
[Test]
public void SerializeDeserializeXNodeProperties()
{
@@ -5470,7 +5470,7 @@ Path '', line 1, position 1.");
}
#endif
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
[Test]
public void SerializeDeserializeXmlNodeProperties()
{
@@ -5954,7 +5954,7 @@ Path '', line 1, position 1.");
}", json);
}
-#if !(NET35 || NET20)
+#if !(NET35 || NET20 || PORTABLE40)
[Test]
public void SerializeExpandoObject()
{
@@ -6872,7 +6872,7 @@ Path '', line 1, position 1.");
}
}
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
[Test]
public void SerializeException1()
{
@@ -8050,7 +8050,7 @@ Path '', line 1, position 1.");
Assert.AreEqual("", s);
}
-#if !(PORTABLE || DNXCORE50) || NETSTANDARD1_3
+#if !(PORTABLE || DNXCORE50 || PORTABLE40) || NETSTANDARD1_3
[Test]
public void SerializeAndDeserializeWithAttributes()
{
@@ -8253,7 +8253,7 @@ lines.*/
ExceptionAssert.Throws(() => { s.Deserialize>(new JsonTextReader(new StringReader(json))); }, "Additional text encountered after finished reading JSON content: {. Path '', line 7, position 0.");
}
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
[Test]
public void DeserializeException()
{
@@ -8481,7 +8481,7 @@ This is just junk, though.";
Assert.AreEqual("[1.1,0.0,0.0]", json);
}
-#if !(NET20 || NET35 || NET40)
+#if !(NET20 || NET35 || NET40 || PORTABLE40)
#if !PORTABLE || NETSTANDARD1_3
[Test]
public void DeserializeReadOnlyListWithBigInteger()
@@ -8540,7 +8540,7 @@ This is just junk, though.";
Action doStuff = () => { obj = JsonConvert.DeserializeObject>(json); };
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
doStuff();
Assert.AreEqual(500, obj.Item1);
#else
@@ -8571,7 +8571,7 @@ This is just junk, though.";
}
#endif
-#if !(PORTABLE || NET35 || NET20 || DNXCORE50)
+#if !(PORTABLE || NET35 || NET20 || PORTABLE40 || DNXCORE50)
[Test]
public void SerializeTupleWithSerializableAttribute()
{
@@ -8789,7 +8789,7 @@ This is just junk, though.";
ExceptionAssert.Throws(() => JsonConvert.DeserializeObject>("[1]"), "Cannot deserialize readonly or fixed size list: Newtonsoft.Json.Tests.Serialization.JsonSerializerTest+NoConstructorReadOnlyCollection`1[System.Int32]. Path '', line 1, position 1.");
}
-#if !(NET40 || NET35 || NET20)
+#if !(NET40 || NET35 || NET20 || PORTABLE40)
public class NoConstructorReadOnlyDictionary : ReadOnlyDictionary
{
public NoConstructorReadOnlyDictionary()
@@ -8805,7 +8805,7 @@ This is just junk, though.";
}
#endif
-#if !(PORTABLE || NET35 || NET20) || NETSTANDARD1_3
+#if !(PORTABLE || NET35 || NET20 || PORTABLE40) || NETSTANDARD1_3
[Test]
public void ReadTooLargeInteger()
{
@@ -8848,7 +8848,7 @@ This is just junk, though.";
Assert.AreEqual(@"{""First"":""One"",""Second"":2}", json);
-#if !(PORTABLE || DNXCORE50) || NETSTANDARD1_3
+#if !(PORTABLE || DNXCORE50 || PORTABLE40) || NETSTANDARD1_3
DefaultContractResolver r = new DefaultContractResolver();
r.IgnoreSerializableAttribute = false;
@@ -8964,7 +8964,7 @@ This is just junk, though.";
Assert.AreEqual(1234567890.123456m, d);
}
-#if !(PORTABLE || DNXCORE50) || NETSTANDARD1_3
+#if !(PORTABLE || DNXCORE50 || PORTABLE40) || NETSTANDARD1_3
[Test]
public void DontSerializeStaticFields()
{
@@ -8988,7 +8988,7 @@ This is just junk, though.";
}
#endif
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE || PORTABLE40) || NETSTANDARD1_3
[Test]
public void SerializeBigInteger()
{
@@ -9128,7 +9128,7 @@ This is just junk, though.";
]", json);
}
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || PORTABLE40 || DNXCORE50)
[Test]
public void SerializeDictionaryWithStructKey()
{
@@ -9145,7 +9145,7 @@ This is just junk, though.";
}
#endif
-#if !(PORTABLE || DNXCORE50) || NETSTANDARD1_0 || NETSTANDARD1_3
+#if !(PORTABLE || PORTABLE40 || DNXCORE50) || NETSTANDARD1_0 || NETSTANDARD1_3
[Test]
public void SerializeDictionaryWithStructKey_Custom()
{
@@ -9332,7 +9332,7 @@ This is just junk, though.";
Assert.AreEqual(jane, john.Spouse);
}
-#if !(NET35 || NET20 || PORTABLE)
+#if !(NET35 || NET20 || PORTABLE || PORTABLE40)
[Test]
public void TypeConverterOnInterface()
{
@@ -9910,7 +9910,7 @@ This is just junk, though.";
Assert.AreEqual("derived", d.DerivedProperty);
}
-#if !(NET20 || NET35 || PORTABLE)
+#if !(NET20 || NET35 || PORTABLE || PORTABLE40)
[Test]
public void DeserializeNullableUnsignedLong()
{
@@ -10292,7 +10292,7 @@ This is just junk, though.";
public string Project { get; }
}
-#if !(PORTABLE || DNXCORE50) || NETSTANDARD1_3
+#if !(PORTABLE || DNXCORE50 || PORTABLE40) || NETSTANDARD1_3
public class ISerializableTestObject : ISerializable
{
internal string _stringValue;
diff --git a/Src/Newtonsoft.Json.Tests/Serialization/MetadataPropertyHandlingTests.cs b/Src/Newtonsoft.Json.Tests/Serialization/MetadataPropertyHandlingTests.cs
index b9bdac77..3ecd9794 100644
--- a/Src/Newtonsoft.Json.Tests/Serialization/MetadataPropertyHandlingTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Serialization/MetadataPropertyHandlingTests.cs
@@ -339,7 +339,7 @@ namespace Newtonsoft.Json.Tests.Serialization
Assert.IsTrue(JToken.DeepEquals(t1, t2));
}
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
[Test]
public void DeserializeGenericObjectListWithTypeName()
{
diff --git a/Src/Newtonsoft.Json.Tests/Serialization/ReferenceLoopHandlingTests.cs b/Src/Newtonsoft.Json.Tests/Serialization/ReferenceLoopHandlingTests.cs
index b9a5663a..56163d4d 100644
--- a/Src/Newtonsoft.Json.Tests/Serialization/ReferenceLoopHandlingTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Serialization/ReferenceLoopHandlingTests.cs
@@ -151,7 +151,7 @@ namespace Newtonsoft.Json.Tests.Serialization
}", json);
}
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
public class MainClass : ISerializable
{
public ChildClass Child { get; set; }
@@ -210,7 +210,7 @@ namespace Newtonsoft.Json.Tests.Serialization
}
#endif
-#if !(NET20 || NET35)
+#if !(NET20 || NET35 || PORTABLE40)
public class DictionaryDynamicObject : DynamicObject
{
public IDictionary Values { get; private set; }
diff --git a/Src/Newtonsoft.Json.Tests/Serialization/SerializationErrorHandlingTests.cs b/Src/Newtonsoft.Json.Tests/Serialization/SerializationErrorHandlingTests.cs
index 97b6227b..aeb5e3d3 100644
--- a/Src/Newtonsoft.Json.Tests/Serialization/SerializationErrorHandlingTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Serialization/SerializationErrorHandlingTests.cs
@@ -741,7 +741,7 @@ namespace Newtonsoft.Json.Tests.Serialization
Assert.AreEqual(@"Unexpected end when deserializing object. Path 'events2.code', line 1, position 49.", errors[1]);
}
-#if !(NET35 || NET20)
+#if !(NET35 || NET20 || PORTABLE40)
[Test]
public void ErrorHandlingEndOfContentDynamic()
{
diff --git a/Src/Newtonsoft.Json.Tests/Serialization/SnakeCaseNamingStrategyTests.cs b/Src/Newtonsoft.Json.Tests/Serialization/SnakeCaseNamingStrategyTests.cs
index 8dbeac53..d1584693 100644
--- a/Src/Newtonsoft.Json.Tests/Serialization/SnakeCaseNamingStrategyTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Serialization/SnakeCaseNamingStrategyTests.cs
@@ -159,7 +159,7 @@ namespace Newtonsoft.Json.Tests.Serialization
}", json);
}
-#if !(NET35 || NET20)
+#if !(NET35 || NET20 || PORTABLE40)
[Test]
public void DynamicSnakeCasePropertyNames()
{
diff --git a/Src/Newtonsoft.Json.Tests/Serialization/TraceWriterTests.cs b/Src/Newtonsoft.Json.Tests/Serialization/TraceWriterTests.cs
index 97e35f32..5510937a 100644
--- a/Src/Newtonsoft.Json.Tests/Serialization/TraceWriterTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Serialization/TraceWriterTests.cs
@@ -4,7 +4,7 @@ using System.Diagnostics;
using System.Globalization;
using System.IO;
using Newtonsoft.Json.Linq;
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE || PORTABLE40) || NETSTANDARD1_3
using System.Numerics;
#endif
using System.Runtime.Serialization;
@@ -41,7 +41,7 @@ namespace Newtonsoft.Json.Tests.Serialization
[TestFixture]
public class TraceWriterTests : TestFixtureBase
{
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
[Test]
public void DiagnosticsTraceWriterTest()
{
@@ -730,7 +730,7 @@ Newtonsoft.Json Error: 0 : Error!
Assert.IsTrue(traceWriter.TraceRecords[9].Message.StartsWith("Finished deserializing System.Collections.Generic.List`1[System.Object]. Path '$values'"));
}
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
[Test]
public void DeserializeISerializable()
{
@@ -936,7 +936,7 @@ Newtonsoft.Json Error: 0 : Error!
Assert.AreEqual(23, deserialized.FavoriteNumber);
}
-#if !(NET20 || NET35 || PORTABLE) || NETSTANDARD1_3
+#if !(NET20 || NET35 || PORTABLE || PORTABLE40) || NETSTANDARD1_3
[Test]
public void TraceJsonWriterTest()
{
diff --git a/Src/Newtonsoft.Json.Tests/Serialization/TypeNameHandlingTests.cs b/Src/Newtonsoft.Json.Tests/Serialization/TypeNameHandlingTests.cs
index 51513249..586d339f 100644
--- a/Src/Newtonsoft.Json.Tests/Serialization/TypeNameHandlingTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Serialization/TypeNameHandlingTests.cs
@@ -28,7 +28,7 @@ using Newtonsoft.Json.Utilities.LinqBridge;
#else
using System.Linq;
#endif
-#if !(PORTABLE)
+#if !(PORTABLE || PORTABLE40)
using System.Collections.ObjectModel;
#if !(NET35 || NET20)
using System.Dynamic;
@@ -1737,7 +1737,7 @@ namespace Newtonsoft.Json.Tests.Serialization
Assert.AreEqual(1, (int)j["MyProperty"]);
}
-#if !(NET35 || NET20)
+#if !(NET35 || NET20 || PORTABLE40)
[Test]
public void PropertyItemTypeNameHandlingDynamic()
{
@@ -2036,7 +2036,7 @@ namespace Newtonsoft.Json.Tests.Serialization
}
#endif
-#if !(NET20 || PORTABLE)
+#if !(NET20 || PORTABLE || PORTABLE40)
[Test]
public void DeserializeComplexGenericDictionary_Simple()
{
@@ -2329,7 +2329,7 @@ namespace Newtonsoft.Json.Tests.Serialization
public TypeNameHandlingTestObject Data { get; set; }
}
-#if !(NET35 || NET20)
+#if !(NET35 || NET20 || PORTABLE40)
public class PropertyItemTypeNameHandlingDynamic
{
[JsonProperty(ItemTypeNameHandling = TypeNameHandling.All)]
diff --git a/Src/Newtonsoft.Json.Tests/Serialization/WebApiIntegrationTests.cs b/Src/Newtonsoft.Json.Tests/Serialization/WebApiIntegrationTests.cs
index 2452055c..e61672ee 100644
--- a/Src/Newtonsoft.Json.Tests/Serialization/WebApiIntegrationTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Serialization/WebApiIntegrationTests.cs
@@ -59,7 +59,7 @@ namespace Newtonsoft.Json.Tests.Serialization
nonSerializedField = "Error"
};
-#if !(NET20 || NET35 || PORTABLE || DNXCORE50)
+#if !(NET20 || NET35 || PORTABLE || DNXCORE50 || PORTABLE40)
MemoryStream ms = new MemoryStream();
DataContractJsonSerializer dataContractJsonSerializer = new DataContractJsonSerializer(typeof(SerializableType));
dataContractJsonSerializer.WriteObject(ms, serializableType);
@@ -75,7 +75,7 @@ namespace Newtonsoft.Json.Tests.Serialization
{
ContractResolver = new DefaultContractResolver
{
-#if !(PORTABLE || DNXCORE50) || NETSTANDARD1_3
+#if !(PORTABLE || DNXCORE50 || PORTABLE40) || NETSTANDARD1_3
IgnoreSerializableAttribute = false
#endif
}
@@ -84,7 +84,7 @@ namespace Newtonsoft.Json.Tests.Serialization
Assert.AreEqual(expected, json);
}
-#if !(PORTABLE || DNXCORE50) || NETSTANDARD1_3
+#if !(PORTABLE || DNXCORE50 || PORTABLE40) || NETSTANDARD1_3
[Test]
public void SerializeInheritedType()
{
@@ -114,7 +114,7 @@ namespace Newtonsoft.Json.Tests.Serialization
}
}
-#if !(PORTABLE || DNXCORE50) || NETSTANDARD1_3
+#if !(PORTABLE || DNXCORE50 || PORTABLE40) || NETSTANDARD1_3
[Serializable]
#else
[JsonObject(MemberSerialization.Fields)]
@@ -138,7 +138,7 @@ namespace Newtonsoft.Json.Tests.Serialization
set { privateField = value; }
}
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
[NonSerialized]
#else
[JsonIgnore]
diff --git a/Src/Newtonsoft.Json.Tests/TestFixtureBase.cs b/Src/Newtonsoft.Json.Tests/TestFixtureBase.cs
index eea0c60b..18db21df 100644
--- a/Src/Newtonsoft.Json.Tests/TestFixtureBase.cs
+++ b/Src/Newtonsoft.Json.Tests/TestFixtureBase.cs
@@ -45,7 +45,7 @@ using NUnit.Framework;
#endif
using Newtonsoft.Json.Utilities;
using System.Collections;
-#if !(NET20 || NET35 || NET40)
+#if !(NET20 || NET35 || NET40 || PORTABLE40)
using System.Threading.Tasks;
#endif
#if NET20
@@ -388,7 +388,7 @@ namespace Newtonsoft.Json.Tests
}
}
-#if !(NET20 || NET35 || NET40)
+#if !(NET20 || NET35 || NET40 || PORTABLE40)
public static async Task ThrowsAsync(Func action, params string[] possibleMessages)
where TException : Exception
{
diff --git a/Src/Newtonsoft.Json.Tests/TestObjects/ConsoleWriter.cs b/Src/Newtonsoft.Json.Tests/TestObjects/ConsoleWriter.cs
index 920776f7..6807dbbb 100644
--- a/Src/Newtonsoft.Json.Tests/TestObjects/ConsoleWriter.cs
+++ b/Src/Newtonsoft.Json.Tests/TestObjects/ConsoleWriter.cs
@@ -27,7 +27,7 @@ using System.ComponentModel;
namespace Newtonsoft.Json.Tests.TestObjects
{
-#if !(NET35 || NET20 || PORTABLE)
+#if !(NET35 || NET20 || PORTABLE || PORTABLE40)
[TypeConverter(typeof(MyInterfaceConverter))]
internal class ConsoleWriter : IMyInterface
{
diff --git a/Src/Newtonsoft.Json.Tests/TestObjects/CustomerDataSet.cs b/Src/Newtonsoft.Json.Tests/TestObjects/CustomerDataSet.cs
index 3c009494..0d938b6c 100644
--- a/Src/Newtonsoft.Json.Tests/TestObjects/CustomerDataSet.cs
+++ b/Src/Newtonsoft.Json.Tests/TestObjects/CustomerDataSet.cs
@@ -23,7 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE40 || PORTABLE || DNXCORE50)
using System;
using System.Collections.Generic;
using System.Text;
diff --git a/Src/Newtonsoft.Json.Tests/TestObjects/IMyInterface.cs b/Src/Newtonsoft.Json.Tests/TestObjects/IMyInterface.cs
index 5dc56551..4d72a87f 100644
--- a/Src/Newtonsoft.Json.Tests/TestObjects/IMyInterface.cs
+++ b/Src/Newtonsoft.Json.Tests/TestObjects/IMyInterface.cs
@@ -27,7 +27,7 @@ using System.ComponentModel;
namespace Newtonsoft.Json.Tests.TestObjects
{
-#if !(NET35 || NET20 || PORTABLE)
+#if !(NET35 || NET20 || PORTABLE || PORTABLE40)
[TypeConverter(typeof(MyInterfaceConverter))]
internal interface IMyInterface
{
diff --git a/Src/Newtonsoft.Json.Tests/TestObjects/MyInterfaceConverter.cs b/Src/Newtonsoft.Json.Tests/TestObjects/MyInterfaceConverter.cs
index d5a3446f..7994dd7b 100644
--- a/Src/Newtonsoft.Json.Tests/TestObjects/MyInterfaceConverter.cs
+++ b/Src/Newtonsoft.Json.Tests/TestObjects/MyInterfaceConverter.cs
@@ -35,7 +35,7 @@ using System.Linq;
namespace Newtonsoft.Json.Tests.TestObjects
{
-#if !(NET35 || NET20 || PORTABLE)
+#if !(NET35 || NET20 || PORTABLE || PORTABLE40)
internal class MyInterfaceConverter : TypeConverter
{
private readonly List _writers = new List
diff --git a/Src/Newtonsoft.Json.Tests/TestObjects/TraceWriter.cs b/Src/Newtonsoft.Json.Tests/TestObjects/TraceWriter.cs
index 7e9a00c0..17f5014a 100644
--- a/Src/Newtonsoft.Json.Tests/TestObjects/TraceWriter.cs
+++ b/Src/Newtonsoft.Json.Tests/TestObjects/TraceWriter.cs
@@ -25,7 +25,7 @@
namespace Newtonsoft.Json.Tests.TestObjects
{
-#if !(NET35 || NET20 || PORTABLE)
+#if !(NET35 || NET20 || PORTABLE || PORTABLE40)
internal class TraceWriter : IMyInterface
{
public string Name
diff --git a/Src/Newtonsoft.Json.Tests/TestObjects/TypeConverterJsonConverter.cs b/Src/Newtonsoft.Json.Tests/TestObjects/TypeConverterJsonConverter.cs
index 2db02c32..956c480c 100644
--- a/Src/Newtonsoft.Json.Tests/TestObjects/TypeConverterJsonConverter.cs
+++ b/Src/Newtonsoft.Json.Tests/TestObjects/TypeConverterJsonConverter.cs
@@ -34,7 +34,7 @@ using Newtonsoft.Json.Utilities;
namespace Newtonsoft.Json.Tests.TestObjects
{
-#if !(NET35 || NET20 || PORTABLE)
+#if !(NET35 || NET20 || PORTABLE || PORTABLE40)
internal class TypeConverterJsonConverter : JsonConverter
{
private TypeConverter GetConverter(Type type)
diff --git a/Src/Newtonsoft.Json.Tests/Utilities/DynamicReflectionDelegateFactoryTests.cs b/Src/Newtonsoft.Json.Tests/Utilities/DynamicReflectionDelegateFactoryTests.cs
index 4a8c9a63..b3abbbce 100644
--- a/Src/Newtonsoft.Json.Tests/Utilities/DynamicReflectionDelegateFactoryTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Utilities/DynamicReflectionDelegateFactoryTests.cs
@@ -23,7 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
using System;
using System.Diagnostics;
using System.Reflection;
diff --git a/Src/Newtonsoft.Json.Tests/Utilities/ReflectionUtilsTests.cs b/Src/Newtonsoft.Json.Tests/Utilities/ReflectionUtilsTests.cs
index c1ea0def..b1dc6afa 100644
--- a/Src/Newtonsoft.Json.Tests/Utilities/ReflectionUtilsTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Utilities/ReflectionUtilsTests.cs
@@ -23,7 +23,7 @@
// OTHER DEALINGS IN THE SOFTWARE.
#endregion
-#if !(PORTABLE || DNXCORE50)
+#if !(PORTABLE || DNXCORE50 || PORTABLE40)
using System;
using System.Collections.Generic;
using System.Runtime.Serialization.Formatters;
diff --git a/Src/Newtonsoft.Json/Newtonsoft.Json.Portable40.csproj b/Src/Newtonsoft.Json/Newtonsoft.Json.Portable40.csproj
new file mode 100644
index 00000000..94ae5982
--- /dev/null
+++ b/Src/Newtonsoft.Json/Newtonsoft.Json.Portable40.csproj
@@ -0,0 +1,270 @@
+
+
+
+ Debug
+ AnyCPU
+ {959F7F85-C98B-4876-971A-9036224578E4}
+ Library
+ Properties
+ Newtonsoft.Json
+ Newtonsoft.Json
+ v4.0
+ Profile328
+ 512
+ {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ 10.0
+
+
+
+
+ 4.0
+ PORTABLE40;HAVE_CHAR_TO_LOWER_WITH_CULTURE;HAVE_DATA_CONTRACTS;HAVE_DATE_TIME_OFFSET;HAVE_DB_NULL_TYPE_CODE;HAVE_FSHARP_TYPES;HAVE_FULL_REFLECTION;HAVE_GUID_TRY_PARSE;HAVE_ICONVERTIBLE;HAVE_IGNORE_DATA_MEMBER_ATTRIBUTE;HAVE_IMMUTABLE_COLLECTIONS;HAVE_ISET;HAVE_LINQ;HAVE_MEMORY_BARRIER;HAVE_OBSOLETE_FORMATTER_ASSEMBLY_STYLE;HAVE_SECURITY_SAFE_CRITICAL_ATTRIBUTE;HAVE_SERIALIZATION_BINDER_BIND_TO_NAME;HAVE_STRING_JOIN_WITH_ENUMERABLE;HAVE_TIME_SPAN_PARSE_WITH_CULTURE;HAVE_TIME_SPAN_TO_STRING_WITH_CULTURE;HAVE_TIME_ZONE_INFO;HAVE_VARIANT_TYPE_PARAMETERS;HAVE_VERSION_TRY_PARSE
+
+
+ true
+ full
+ false
+ bin\Debug\Portable40\
+ obj\Debug\Portable40\
+ TRACE;DEBUG;CODE_ANALYSIS;$(DefineConstants);$(AdditionalConstants)
+ prompt
+ 4
+ true
+ Newtonsoft.Json.ruleset
+
+
+ pdbonly
+ true
+ bin\Release\Portable40\
+ obj\Release\Portable40\
+ TRACE;CODE_ANALYSIS;$(DefineConstants);$(AdditionalConstants)
+ prompt
+ 4
+ bin\Release\Portable40\Newtonsoft.Json.xml
+ true
+ Newtonsoft.Json.ruleset
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Src/Newtonsoft.Json/Newtonsoft.Json.Portable40.project.json b/Src/Newtonsoft.Json/Newtonsoft.Json.Portable40.project.json
new file mode 100644
index 00000000..c78108a4
--- /dev/null
+++ b/Src/Newtonsoft.Json/Newtonsoft.Json.Portable40.project.json
@@ -0,0 +1,8 @@
+{
+ "frameworks": {
+ ".NETPortable,Version=v4.0,Profile=Profile328": {}
+ },
+ "runtimes": {
+ "win": {}
+ }
+}
\ No newline at end of file
diff --git a/Src/Newtonsoft.Json/Newtonsoft.Json.Roslyn.csproj b/Src/Newtonsoft.Json/Newtonsoft.Json.Roslyn.csproj
index ea3ba861..8956865b 100644
--- a/Src/Newtonsoft.Json/Newtonsoft.Json.Roslyn.csproj
+++ b/Src/Newtonsoft.Json/Newtonsoft.Json.Roslyn.csproj
@@ -1,6 +1,6 @@
- net45;net40;net35;net20;netstandard1.0;netstandard1.3;portable-net45+win8+wpa81+wp8
+ net45;net40;net35;net20;netstandard1.0;netstandard1.3;portable-net45+win8+wpa81+wp8;portable-net40+win8+wpa81+wp8+sl5
netstandard1.0;netstandard1.3
10.0.1
beta1
@@ -36,9 +36,6 @@
NET20;HAVE_ADO_NET;HAVE_APP_DOMAIN;HAVE_BINARY_FORMATTER;HAVE_BINARY_SERIALIZATION;HAVE_BINARY_EXCEPTION_SERIALIZATION;HAVE_CAS;HAVE_CHAR_TO_LOWER_WITH_CULTURE;HAVE_CHAR_TO_STRING_WITH_CULTURE;HAVE_COM_ATTRIBUTES;HAVE_COMPONENT_MODEL;HAVE_DB_NULL_TYPE_CODE;HAVE_EMPTY_TYPES;HAVE_FULL_REFLECTION;HAVE_ICLONEABLE;HAVE_ICONVERTIBLE;HAVE_MEMORY_BARRIER;HAVE_NON_SERIALIZED_ATTRIBUTE;HAVE_REFLECTION_EMIT;HAVE_STREAM_READER_WRITER_CLOSE;HAVE_TRACE_WRITER;HAVE_TYPE_DESCRIPTOR;HAVE_UNICODE_SURROGATE_DETECTION;HAVE_XML_DOCUMENT;HAVE_XML_DOCUMENT_TYPE;$(AdditionalConstants)
-
-
-
@@ -57,6 +54,14 @@
Json.NET .NET Standard 1.3
NETSTANDARD1_3;PORTABLE;HAVE_ASYNC;HAVE_BIG_INTEGER;HAVE_BINARY_SERIALIZATION;HAVE_COVARIANT_GENERICS;HAVE_DATA_CONTRACTS;HAVE_DATE_TIME_OFFSET;HAVE_DYNAMIC;HAVE_EXPRESSIONS;HAVE_FSHARP_TYPES;HAVE_GUID_TRY_PARSE;HAVE_HASH_SET;HAVE_IGNORE_DATA_MEMBER_ATTRIBUTE;HAVE_IMMUTABLE_COLLECTIONS;HAVE_INOTIFY_COLLECTION_CHANGED;HAVE_ISET;HAVE_LINQ;HAVE_METHOD_IMPL_ATTRIBUTE;HAVE_NON_SERIALIZED_ATTRIBUTE;HAVE_READ_ONLY_COLLECTIONS;HAVE_REFLECTION_BINDER;HAVE_SERIALIZATION_BINDER_BIND_TO_NAME;HAVE_STRING_JOIN_WITH_ENUMERABLE;HAVE_TIME_SPAN_PARSE_WITH_CULTURE;HAVE_TIME_SPAN_TO_STRING_WITH_CULTURE;HAVE_TIME_ZONE_INFO;HAVE_TYPE_DESCRIPTOR;HAVE_UNICODE_SURROGATE_DETECTION;HAVE_VARIANT_TYPE_PARAMETERS;HAVE_VERSION_TRY_PARSE;HAVE_XLINQ;HAVE_OBSOLETE_FORMATTER_ASSEMBLY_STYLE;HAVE_XML_DOCUMENT;$(AdditionalConstants)
+
+ PORTABLE40;HAVE_CHAR_TO_LOWER_WITH_CULTURE;HAVE_DATA_CONTRACTS;HAVE_DATE_TIME_OFFSET;HAVE_DB_NULL_TYPE_CODE;HAVE_FSHARP_TYPES;HAVE_FULL_REFLECTION;HAVE_GUID_TRY_PARSE;HAVE_ICONVERTIBLE;HAVE_IGNORE_DATA_MEMBER_ATTRIBUTE;HAVE_IMMUTABLE_COLLECTIONS;HAVE_ISET;HAVE_LINQ;HAVE_MEMORY_BARRIER;HAVE_OBSOLETE_FORMATTER_ASSEMBLY_STYLE;HAVE_SECURITY_SAFE_CRITICAL_ATTRIBUTE;HAVE_SERIALIZATION_BINDER_BIND_TO_NAME;HAVE_STRING_JOIN_WITH_ENUMERABLE;HAVE_TIME_SPAN_PARSE_WITH_CULTURE;HAVE_TIME_SPAN_TO_STRING_WITH_CULTURE;HAVE_TIME_ZONE_INFO;HAVE_VARIANT_TYPE_PARAMETERS;HAVE_VERSION_TRY_PARSE;$(AdditionalConstants)
+ .NETPortable
+ v4.0
+ Profile328
+ .NETPortable,Version=v0.0,Profile=Profile328
+ $(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets
+
PORTABLE;HAVE_ASYNC;HAVE_COVARIANT_GENERICS;HAVE_DATA_CONTRACTS;HAVE_DATE_TIME_OFFSET;HAVE_DYNAMIC;HAVE_EXPRESSIONS;HAVE_FSHARP_TYPES;HAVE_GUID_TRY_PARSE;HAVE_IGNORE_DATA_MEMBER_ATTRIBUTE;HAVE_IMMUTABLE_COLLECTIONS;HAVE_ISET;HAVE_LINQ;HAVE_METHOD_IMPL_ATTRIBUTE;HAVE_READ_ONLY_COLLECTIONS;HAVE_REFLECTION_BINDER;HAVE_SERIALIZATION_BINDER_BIND_TO_NAME;HAVE_STRING_JOIN_WITH_ENUMERABLE;HAVE_TIME_SPAN_PARSE_WITH_CULTURE;HAVE_TIME_SPAN_TO_STRING_WITH_CULTURE;HAVE_TIME_ZONE_INFO;HAVE_VARIANT_TYPE_PARAMETERS;HAVE_VERSION_TRY_PARSE;HAVE_XLINQ;HAVE_INOTIFY_COLLECTION_CHANGED;HAVE_OBSOLETE_FORMATTER_ASSEMBLY_STYLE;$(AdditionalConstants)
.NETPortable
diff --git a/Src/Newtonsoft.Json/Properties/AssemblyInfo.cs b/Src/Newtonsoft.Json/Properties/AssemblyInfo.cs
index ddea4be2..e3058aea 100644
--- a/Src/Newtonsoft.Json/Properties/AssemblyInfo.cs
+++ b/Src/Newtonsoft.Json/Properties/AssemblyInfo.cs
@@ -36,6 +36,8 @@ using System.Security;
[assembly: AssemblyTitle("Json.NET .NET Standard 1.0")]
#elif NETSTANDARD1_3
[assembly: AssemblyTitle("Json.NET .NET Standard 1.3")]
+#elif PORTABLE40
+[assembly: AssemblyTitle("Json.NET Portable .NET 4.0")]
#elif PORTABLE
[assembly: AssemblyTitle("Json.NET Portable")]
#elif DOTNET
diff --git a/Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs b/Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs
index 2df9afcd..0fee0df3 100644
--- a/Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs
+++ b/Src/Newtonsoft.Json/Serialization/DefaultContractResolver.cs
@@ -1337,7 +1337,7 @@ namespace Newtonsoft.Json.Serialization
// warning - this method use to cause errors with Intellitrace. Retest in VS Ultimate after changes
IValueProvider valueProvider;
-#if !(PORTABLE || DOTNET)
+#if !(PORTABLE40 || PORTABLE || DOTNET)
if (DynamicCodeGeneration)
{
valueProvider = new DynamicValueProvider(member);
@@ -1346,8 +1346,10 @@ namespace Newtonsoft.Json.Serialization
{
valueProvider = new ReflectionValueProvider(member);
}
-#else
+#elif !(PORTABLE40)
valueProvider = new ExpressionValueProvider(member);
+#else
+ valueProvider = new ReflectionValueProvider(member);
#endif
return valueProvider;
diff --git a/Src/Newtonsoft.Json/Serialization/DefaultSerializationBinder.cs b/Src/Newtonsoft.Json/Serialization/DefaultSerializationBinder.cs
index 2588f97b..b43e4b0b 100644
--- a/Src/Newtonsoft.Json/Serialization/DefaultSerializationBinder.cs
+++ b/Src/Newtonsoft.Json/Serialization/DefaultSerializationBinder.cs
@@ -62,7 +62,7 @@ namespace Newtonsoft.Json.Serialization
{
Assembly assembly;
-#if !(DOTNET || PORTABLE)
+#if !(DOTNET || PORTABLE40 || PORTABLE)
// look, I don't like using obsolete methods as much as you do but this is the only way
// Assembly.Load won't check the GAC for a partial name
#pragma warning disable 618,612
diff --git a/Src/Newtonsoft.Json/Serialization/JsonTypeReflector.cs b/Src/Newtonsoft.Json/Serialization/JsonTypeReflector.cs
index 0eb77ea9..242fb583 100644
--- a/Src/Newtonsoft.Json/Serialization/JsonTypeReflector.cs
+++ b/Src/Newtonsoft.Json/Serialization/JsonTypeReflector.cs
@@ -480,9 +480,9 @@ namespace Newtonsoft.Json.Serialization
{
if (_fullyTrusted == null)
{
-#if (DOTNET || PORTABLE)
+#if (DOTNET || PORTABLE || PORTABLE40)
_fullyTrusted = true;
-#elif !(NET20 || NET35)
+#elif !(NET20 || NET35 || PORTABLE40)
AppDomain appDomain = AppDomain.CurrentDomain;
_fullyTrusted = appDomain.IsHomogenous && appDomain.IsFullyTrusted;
@@ -507,7 +507,7 @@ namespace Newtonsoft.Json.Serialization
{
get
{
-#if !(PORTABLE || DOTNET)
+#if !(PORTABLE40 || PORTABLE || DOTNET)
if (DynamicCodeGeneration)
{
return DynamicReflectionDelegateFactory.Instance;
diff --git a/Src/Newtonsoft.Json/SerializationBinder.cs b/Src/Newtonsoft.Json/SerializationBinder.cs
index 791c6df6..b3e480f0 100644
--- a/Src/Newtonsoft.Json/SerializationBinder.cs
+++ b/Src/Newtonsoft.Json/SerializationBinder.cs
@@ -1,5 +1,5 @@
-#if (DOTNET || PORTABLE)
+#if (DOTNET || PORTABLE40 || PORTABLE)
using System;
using System.Reflection;
diff --git a/Src/Newtonsoft.Json/Utilities/DateTimeUtils.cs b/Src/Newtonsoft.Json/Utilities/DateTimeUtils.cs
index 441d717a..807c3a1a 100644
--- a/Src/Newtonsoft.Json/Utilities/DateTimeUtils.cs
+++ b/Src/Newtonsoft.Json/Utilities/DateTimeUtils.cs
@@ -58,7 +58,7 @@ namespace Newtonsoft.Json.Utilities
#endif
}
-#if !(PORTABLE)
+#if !(PORTABLE40 || PORTABLE)
public static XmlDateTimeSerializationMode ToSerializationMode(DateTimeKind kind)
{
switch (kind)
diff --git a/Src/Newtonsoft.Json/Utilities/ReflectionUtils.cs b/Src/Newtonsoft.Json/Utilities/ReflectionUtils.cs
index a67c90d9..03a445df 100644
--- a/Src/Newtonsoft.Json/Utilities/ReflectionUtils.cs
+++ b/Src/Newtonsoft.Json/Utilities/ReflectionUtils.cs
@@ -43,7 +43,7 @@ using Newtonsoft.Json.Serialization;
namespace Newtonsoft.Json.Utilities
{
-#if (DOTNET || PORTABLE)
+#if (DOTNET || PORTABLE || PORTABLE40)
internal enum MemberTypes
{
Property = 0,
@@ -790,11 +790,13 @@ namespace Newtonsoft.Json.Utilities
return (attributeType != null) ? Attribute.GetCustomAttributes(mi, attributeType, inherit) : Attribute.GetCustomAttributes(mi, inherit);
}
+#if !PORTABLE40
Module m = provider as Module;
if (m != null)
{
return (attributeType != null) ? Attribute.GetCustomAttributes(m, attributeType, inherit) : Attribute.GetCustomAttributes(m, inherit);
}
+#endif
ParameterInfo p = provider as ParameterInfo;
if (p != null)
@@ -802,10 +804,14 @@ namespace Newtonsoft.Json.Utilities
return (attributeType != null) ? Attribute.GetCustomAttributes(p, attributeType, inherit) : Attribute.GetCustomAttributes(p, inherit);
}
+#if !PORTABLE40
ICustomAttributeProvider customAttributeProvider = (ICustomAttributeProvider)attributeProvider;
object[] result = (attributeType != null) ? customAttributeProvider.GetCustomAttributes(attributeType, inherit) : customAttributeProvider.GetCustomAttributes(inherit);
return (Attribute[])result;
+#else
+ throw new Exception("Cannot get attributes from '{0}'.".FormatWith(CultureInfo.InvariantCulture, provider));
+#endif
}
#else
public static T[] GetAttributes(object attributeProvider, bool inherit) where T : Attribute
diff --git a/Src/Newtonsoft.Json/Utilities/TypeExtensions.cs b/Src/Newtonsoft.Json/Utilities/TypeExtensions.cs
index bdc29c56..7467f63c 100644
--- a/Src/Newtonsoft.Json/Utilities/TypeExtensions.cs
+++ b/Src/Newtonsoft.Json/Utilities/TypeExtensions.cs
@@ -107,7 +107,7 @@ namespace Newtonsoft.Json.Utilities
public static MemberTypes MemberType(this MemberInfo memberInfo)
{
-#if !(DOTNET || PORTABLE)
+#if !(DOTNET || PORTABLE || PORTABLE40)
return memberInfo.MemberType;
#else
if (memberInfo is PropertyInfo)
@@ -214,7 +214,7 @@ namespace Newtonsoft.Json.Utilities
#endif
}
-#if (DOTNET || PORTABLE)
+#if (PORTABLE40 || DOTNET || PORTABLE)
public static PropertyInfo GetProperty(this Type type, string name, BindingFlags bindingFlags, object placeholder1, Type propertyType, IList indexParameters, object placeholder2)
{
IEnumerable propertyInfos = type.GetProperties(bindingFlags);