diff --git a/Build/build.ps1 b/Build/build.ps1
index 8aa8f63a..b4115408 100644
--- a/Build/build.ps1
+++ b/Build/build.ps1
@@ -59,7 +59,13 @@ task Build -depends Clean {
Write-Host -ForegroundColor Green "Building " $name
Write-Host -ForegroundColor Green "Signed " $sign
+
Write-Host
+ Write-Host "Restoring"
+ exec { .\Tools\NuGet\NuGet.exe restore ".\Src\$name.sln" | Out-Default } "Error restoring $name"
+
+ Write-Host
+ Write-Host "Building"
exec { msbuild "/t:Clean;Rebuild" /p:Configuration=Release "/p:Platform=Any CPU" /p:OutputPath=bin\Release\$finalDir\ /p:AssemblyOriginatorKeyFile=$signKeyPath "/p:SignAssembly=$sign" "/p:TreatWarningsAsErrors=$treatWarningsAsErrors" "/p:VisualStudioVersion=12.0" (GetConstants $build.Constants $sign) ".\Src\$name.sln" | Out-Default } "Error building $name"
}
}
diff --git a/Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs b/Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs
index 344abd11..41ad69f2 100644
--- a/Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs
+++ b/Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs
@@ -150,8 +150,8 @@ namespace Newtonsoft.Json.Tests.Bson
Assert.IsTrue(reader.Read());
Assert.AreEqual(JsonToken.Bytes, reader.TokenType);
- CollectionAssert.AreEqual(g.ToByteArray(), (byte[])reader.Value);
- Assert.AreEqual(typeof(byte[]), reader.ValueType);
+ Assert.AreEqual(g, reader.Value);
+ Assert.AreEqual(typeof(Guid), reader.ValueType);
Assert.IsTrue(reader.Read());
Assert.AreEqual(JsonToken.EndArray, reader.TokenType);
@@ -1603,5 +1603,33 @@ namespace Newtonsoft.Json.Tests.Bson
#endif
Assert.IsTrue(binder.BindToTypeCalled);
}
+
+ [Test]
+ public void GuidsShouldBeProperlyDeserialised()
+ {
+ Guid g = new Guid("822C0CE6-CC42-4753-A3C3-26F0684A4B88");
+
+ MemoryStream ms = new MemoryStream();
+ BsonWriter writer = new BsonWriter(ms);
+ writer.WriteStartObject();
+ writer.WritePropertyName("TheGuid");
+ writer.WriteValue(g);
+ writer.WriteEndObject();
+ writer.Flush();
+
+ byte[] bytes = ms.ToArray();
+
+ BsonReader reader = new BsonReader(new MemoryStream(bytes));
+ Assert.IsTrue(reader.Read());
+ Assert.IsTrue(reader.Read());
+
+ Assert.IsTrue(reader.Read());
+ Assert.AreEqual(JsonToken.Bytes, reader.TokenType);
+ Assert.AreEqual(typeof(Guid), reader.ValueType);
+ Assert.AreEqual(g, (Guid)reader.Value);
+
+ Assert.IsTrue(reader.Read());
+ Assert.IsFalse(reader.Read());
+ }
}
}
\ No newline at end of file
diff --git a/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs b/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs
index 2e06b80c..ccd41e58 100644
--- a/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs
+++ b/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs
@@ -406,7 +406,7 @@ namespace Newtonsoft.Json.Tests.Converters
[Test]
public void XmlDocumentTypeSerialize()
{
- string xml = @"00-16.310Dow Jones2014-04-17 15:50:370016460.4902014-04-17 15:50:3716408.54016368.14016424.140-0.099016424.8500DJII013618870011309.0009302.2800
009.290NASDAQ2014-04-17 15:40:01004110.4602014-04-17 15:40:014095.5204064.7004080.3000.22704086.2300COMP017842101004371.7103154.9600
Couldn't find ticker: SPIC?2";
+ string xml = @"00-16.310Dow Jones2014-04-17 15:50:370016460.4902014-04-17 15:50:3716408.54016368.14016424.140-0.099016424.8500DJII013618870011309.0009302.2800
009.290NASDAQ2014-04-17 15:40:01004110.4602014-04-17 15:40:014095.5204064.7004080.3000.22704086.2300COMP017842101004371.7103154.9600
Couldn't find ticker: SPIC?2";
string expected = @"{
""?xml"": {
@@ -416,7 +416,7 @@ namespace Newtonsoft.Json.Tests.Converters
""!DOCTYPE"": {
""@name"": ""STOCKQUOTE"",
""@public"": ""-//W3C//DTD StockQuote 1.5//EN"",
- ""@system"": ""http://www.irxml.org/dtd/stockquote_1.5.dtd""
+ ""@system"": ""http://www.idontexistnopenopewhatnope123.org/dtd/stockquote_1.5.dtd""
},
""STOCKQUOTE"": {
""@ROWCOUNT"": ""2"",
@@ -480,6 +480,7 @@ namespace Newtonsoft.Json.Tests.Converters
}";
XmlDocument doc1 = new XmlDocument();
+ doc1.XmlResolver = null;
doc1.LoadXml(xml);
string json1 = JsonConvert.SerializeXmlNode(doc1, Formatting.Indented);
diff --git a/Src/Newtonsoft.Json.Tests/Properties/AssemblyInfo.cs b/Src/Newtonsoft.Json.Tests/Properties/AssemblyInfo.cs
index dd92fe1a..eac7b865 100644
--- a/Src/Newtonsoft.Json.Tests/Properties/AssemblyInfo.cs
+++ b/Src/Newtonsoft.Json.Tests/Properties/AssemblyInfo.cs
@@ -75,4 +75,4 @@ using System.Security;
// by using the '*' as shown below:
[assembly: AssemblyVersion("6.0.0.0")]
-[assembly: AssemblyFileVersion("6.0.3.17312")]
+[assembly: AssemblyFileVersion("6.0.3.17414")]
diff --git a/Src/Newtonsoft.Json/Bson/BsonReader.cs b/Src/Newtonsoft.Json/Bson/BsonReader.cs
index 2a68d583..a5b286d6 100644
--- a/Src/Newtonsoft.Json/Bson/BsonReader.cs
+++ b/Src/Newtonsoft.Json/Bson/BsonReader.cs
@@ -536,7 +536,14 @@ namespace Newtonsoft.Json.Bson
break;
}
case BsonType.Binary:
- SetToken(JsonToken.Bytes, ReadBinary());
+ BsonBinaryType binaryType;
+ byte[] data = ReadBinary(out binaryType);
+
+ object value = (binaryType != BsonBinaryType.Uuid)
+ ? data
+ : (object)new Guid(data);
+
+ SetToken(JsonToken.Bytes, value);
break;
case BsonType.Undefined:
SetToken(JsonToken.Undefined);
@@ -602,11 +609,11 @@ namespace Newtonsoft.Json.Bson
}
}
- private byte[] ReadBinary()
+ private byte[] ReadBinary(out BsonBinaryType binaryType)
{
int dataLength = ReadInt32();
- BsonBinaryType binaryType = (BsonBinaryType)ReadByte();
+ binaryType = (BsonBinaryType)ReadByte();
#pragma warning disable 612,618
// the old binary type has the data length repeated in the data for some reason
diff --git a/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs b/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs
index 67ba7454..8e8570f9 100644
--- a/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs
+++ b/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs
@@ -1261,6 +1261,9 @@ namespace Newtonsoft.Json.Converters
throw new JsonSerializationException("XmlNodeConverter only supports deserializing XmlDocuments");
XmlDocument d = new XmlDocument();
+ // prevent http request when resolving any DTD references
+ d.XmlResolver = null;
+
document = new XmlDocumentWrapper(d);
rootNode = document;
}
diff --git a/Src/Newtonsoft.Json/Properties/AssemblyInfo.cs b/Src/Newtonsoft.Json/Properties/AssemblyInfo.cs
index 917f8b38..6db7afc1 100644
--- a/Src/Newtonsoft.Json/Properties/AssemblyInfo.cs
+++ b/Src/Newtonsoft.Json/Properties/AssemblyInfo.cs
@@ -91,5 +91,5 @@ using System.Security;
// by using the '*' as shown below:
[assembly: AssemblyVersion("6.0.0.0")]
-[assembly: AssemblyFileVersion("6.0.3.17312")]
+[assembly: AssemblyFileVersion("6.0.3.17414")]
[assembly: CLSCompliant(true)]