Department of InformatiX
Microsoft .NET Micro Framework Tools & Resources


Final version, published on Microsoft Downloads on 10/24/2008, officially announced four days later at the Embedded Systems Conference In Boston.

For those not familiar with 3.0 release at all, here is a quick summary of what's new:

Breaking changes (since RC0):

Microsoft.SPOT.Hardware.UsbClient.Configuration.UsbInterface has ClassDescriptor[] classDescriptors field instead of single ClassDescriptor classDescriptor.
Protected System.IO.FileSystemInfo.FromFileTimeUtc(long fileTime) removed without replacement.
System.IO.StreamWriter.CurrentEncoding removed (use Encoding).

Multitargeting feature was postponed, you can develop only for version 3.0 with this SDK.

Other and internal changes:

The System.Ext.Console.Write(string) was implemented, and a Verbose was added which controls, whether the supplied string will be passed to Debug.Print method.
The Microsoft.SPOT.Ink.InkCanvas now initializes the DefaultDrawingAttributes in a constructor and checks for null in the OnStroke handler.
Microsoft.SPOT.IO.RemovableMedia is now static.
Microsoft.SPOT.IO.VolumeInfo has new FlushAll method, and the IsFormatted property now returns false, if the TotalSize of the volume is zero.
The Microsoft.SPOT.ResourceUtility now initializes the current UI culture in a try catch block. Microsoft.SPOT.IO.VolumeInfo has new FlushAll method, and the IsFormatted property now returns false, if the TotalSize of the volume is zero.
There is a new System.IO.IOException.IOExceptionErrorCode.TooManyOpenHandles enum member.
System.IO.Directory.Delete throws an unauthorized access exception if you want to delete a file or a read-only directory.
System.IO.File.GetAttributes throws a file not found exception if the file does not exist, and returns FileAttributes.Normal instead of zero. The Delete method throws a DirectoryNotFound exception, if the directory in specified file path does not exist.
The Systme.IO.MemoryStream has improved performance of WriteByte method and private EnsureCapacity no longer throws an exception when a lower than actual capacity is to be ensured.
Some updates in the path normalization algorithm.
System.IO.StreamReader.Read() now uses CurrentEncoding instead of hard-coded UTF-8.
System.IO.StreamWriter.Write(char) now uses Encoding to get byte instead of direct cast, yet still sends the first byte only.
Microsoft.SPOT.Security.SslStream.Read(byte[], int, int) now reads only data available, in case there are some.


Announced on Tuesday, October 7, 2008. This release is named Release Candidate 0, and includes these features in addition to the ones in previous beta:

Porting kit is still not available in this release. Don't forget to read the release notes!

Breaking changes:

System.Ext.Convert class removed, and its functionality was moved into System.Convert class in the mscrolib.dll assembly.
System.Ext.Guid removed, use System.Guid in the mscorlib.dll assembly.
USB related stuff, namely Microsoft.SPOT.Hardware.UsbClient class and its and nested UsbController and Configuration classes, were moved into new separate Microsoft.SPOT.Hardware.Usb.dll assembly.
Serial port related stuff, namely the System.IO.Ports.SerialPort class, was moved into new separate Microsoft.SPOT.Hardware.SerialPort.dll assembly.
Microsoft.SPOT.Hardware.HardwareProvider.GetLCDMetrics(out int width, out int height, out int, out int, out int) exchanged the first two parameters.
Members of the System.IO.Ports.BaudRate enum were renamed from Baud# to Baudrate#.
The Microsoft.SPOT.Hardware.SystemID class was nested into the Microsoft.SPOT.Hardware.SystemInfo class.
Microsoft.SPOT.IEvent replaced by Microsoft.SPOT.BaseEvent abstract class.
Microsoft.SPOT.IEventSource removed without replacement.
Static Microsoft.SPOT.Logging removed. Use the file system.
Microsot.SPOT.EventSink moved into Microsoft.SPOT.Hardware.dll assembly. The signature of InitializeForEventSource and OnEvent methods of Microsoft.SPOT.IEventListener was changed (the first one no longer takes parameters (without replacement), the latter now accepts BaseEvent).
Microsoft.SPOT.EventArgs moved into Microsoft.SPOT.Native.dll assembly.
The only Microsoft.SPOT.Ink.InkCanvas constructor now requires left and top parameters (before current width and height ones).
The Microsoft.SPOT.IO.NativeIO class was made internal and most of its methods were removed. Use methods of System.IO.File and System.IO.Directory instead.
Microsoft.SPOT.Net.SocketNative class became internal without replacement (and all methods accepts object instead of socket integer handle).
Microsoft.SPOT.Net.Security.SslProtocols.SSLv2 enum member removed.
The GetDirectories(string) and GetFiles(string) method of System.IO.DirectoryInfo where removed without replacement (though there are now similar methods in the Directory class).

What else is new:

New System.Ext.Console class (without documentation and purpose yet). It is used throughout web services as a Debug.Print replacement.
Bug fixed in System.Ext.Xml.XmlWriter.WriteAttributeString(string, string, string, string) a WriteStartAttribute(string, string, string) (now accepts xmlns namespace without prefix).
Bug fixed in WriteEndAttribute() and WriteStartAttribute(string, string, string) (regarding quotes).
WriteStartAttribute(string) and WriteStartAttribute(string, string) now implemented.
As usually, all exception messages removed as moving towards the release build.
Bug fixed in Ws.Services.Serialization.DataContractSerializer.ReadAnyAttribute (reads prefixes now).
Ws.Services.Serialization.WsXmlConvert.ToDateTime now throws an exception if you supply a time zone, newly parses miliseconds and a bug was fixed in parsing invalid seconds. The ToString(DateTime) method now returns miliseconds as well.
New Ws.Services.Serialization.WsXmlConvert.ToSByte(string) and ToString(sbyte) methods.
Ws.Services.Utilities.WsDuration has new Ticks field, ToString(TimeSpan) method and a constructor taking a TimeSpan. The constructor using string now parses miliseconds as well (the parser si completely new).
Bug fixed in the Ws.Services.WsaAddressing.WsWsaHeader(string, string, string, string, string, WsXmlNodeList) (the from parameter was being ignored).
Ws.Services.SoapMessageBuilder.BuildSoapMessage(WsWsaHeader, DataContractSerializer, object) now checks the bodyContent parameter for null.
Bugs fixed in the Dpws.Device.Services.DpwsHostedService.Subscribe (ID of the event is now prefixed with "urn:uuid:" and the ServiceID is used instead of EndpointAddress).
Dpws.Device.Services.DpwsWseSubscriptionMgr.FireEvent method now checks for null.
New baud rates defined in the System.IO.Ports.BaudRate enum: 75, 150, 300, 600, 1200, 2400 and special value NONE. (Remember, you can still use any baud rate your hardware supports using explicit casting.)
Bug fixed: Microsoft.SPOT.EventArgs.Empty now returns an instance of EventArgs instead of null.
New Storage and Network members of Microsoft.SPOT.EventCategory enum.
Microsoft.SPOT.Touch.Point a Microsoft.SPOT.Touch.Stroke are now marked as serializable. Microsoft.SPOT.Touch.TouchCollector now properly supports left and top positioning.
New static members of the Microsoft.SPOT.Touch.TouchCollectorConfiguration class: SamplingFrequency, StylusMoveFrequency properties and GetLastTouchPoint(ref int, ref int) method.
New fundamental classes: System.IO.TextReader, StreamReader, TextWriter and StreamWriter, although they do not fully support UTF-8.
System.IO.Directory.Exists now returns false, if the supplied path is a valid file path. The same way, System.IO.File.Exists returns false, if the supplied path is a valid directory path.
The Directory class has new GetDirectories(string, string) and GetFiles(string, string) methods allowing to search using wildcards.
New static System.IO.File.GetAttributes(string) and SetAttributes(string, FileAttributes) methods.
The File.Delete(string) won't delete any directory or read-only file.
System.IO.FileInfo.DirectoryName is now implemented.
New System.IO.FileShare.Delete enum member.
System.IO.FileSystemInfo has couple of new read-only properties: Attributes, CreationTime, CreationTimeUtc, LastAccessTime, LastAccessTimeUtc, LastWriteTime, LastWriteTimeUtc, and methods Refresh, RefreshIfNull (protected) and FromFileTimeUtc(long) (protected).
System.IO.MemoryStream no longer works after disposal (which is actually a bug fix).
System.IO.Path.InvalidPathChars now also contains colon and slash (':', '/').
New Microsoft.SPOT.Net.NetworkInformation.NetworkChange class supplying static NetworkAddressChanged and NetworkAvailabilityChanged events.
New Microsoft.SPOT.Net.NetworkInformation.Wireless80211 class and its nested enums for the Wi-Fi functionality. The NetworkInterfaceType has also a new, corresponding member - Wireless80211.
The Microsoft.SPOT.Bitmap now has a byte[] GetBitmap() method, which returns the underlaying bitmap as a byte array. However, I have not figured yet how to update the changes back.
The most noticable performance improvement is the removement of unnecessary calls to the Dispacther.VerifyAccess(), which prevents cross-thread calls on GUI objects. Members from which this call was removed include:
Microsoft.SPOT.Input.ButtonDevice.GetButtonState method and Target getter
Microsoft.SPOT.Presentation.Controls.Border.GetBorderThickness method
Microsoft.SPOT.Presentation.Controls.Canvas.GetAnchorValue method
Microsoft.SPOT.Presentation.Controls.ContentControl.Child gettter
Microsoft.SPOT.Presentation.Controls.Control.Font getter
Microsoft.SPOT.Presentation.Controls.ListBox.SelectedItem getter, .ListBoxItem.IsSelectable getter and IsSelected
Microsoft.SPOT.Presentation.Controls.Panel.Children getter
Microsoft.SPOT.Presentation.Controls.ScrollViewer.ExtentHeight, ExtentWidth, HorizontalOffset, LineHeight, LineWidth, ScrollingStyle, ScrollingStyle and VerticalOffset getters
Microsoft.SPOT.Presentation.Controls.StackPanel.Orientation getter
Microsoft.SPOT.Presentation.Controls.Text.Font, ForeColor, LineHeight, TextAlignment, TextContent, TextWrap and Trimming getters
Microsoft.SPOT.Presentation.Controls.TextFlow.LineCount, ScrollingStyle, TextAlignment and TopLine getters
Microsoft.SPOT.Presentation.Media.DrawingContext.GetClippingRectangle method
Microsoft.SPOT.Presentation.PresentationSource.RootUIElement getter
Microsoft.SPOT.Presentation.UIElement.GetDesiredSize, GetLayoutOffset, GetMargin, GetRenderSize, GetUnclippedSize, IsRenderable methods, ActualWidth, ActualHeight, Height, HorizontalAlignment, IsArrangeValid, IsEnabled, IsFocused, IsMeasureValid, IsVisible, Parent, RootUIElement, VerticalAlignment, Visibility, Width getters
Microsoft.SPOT.Presentation.UIElementCollection.Add, Clear, ConnectChild, DisconnectChild, Insert, RemoveAt methods (but this[int] setter newly does)
Microsoft.SPOT.Presentation.Window.Left, SizeToContent, Top, Topmost getters
Microsoft.SPOT.Application.DoShutdown, OnExit, OnStartup methods, Windows getter
Besides that, the Dispacther.VerifyAccess() performance was a little bit optimized.
Another performance improvement takes place in the Microsoft.SPOT.Presentation.UIElement.Arrange(int, int, int, int) in case the element is already measured.

The Microsoft.SPOT.Presentation.Controls.Border control now does not render the background, if it is set to null.
Microsoft.SPOT.Presentation.Controls.Control has now the background set to white by default instead of transparent.
Microsoft.SPOT.Presentation.Window has now the background set to white by default too.

Microsoft.SPOT.Input.ButtonEventArgs can now hold any button value!

Microsoft.SPOT.Input.RawGenericInputReport and RawStylusInputReport has new Target read-only field of UIElement type (and matching constructor).
Contains new Microsoft.SPOT.IO namespace to support the file system. From the public classes, let's mention the VolumeInfo and RemovableMedia with the static Eject and Insert events (with an argument of type MediaEventArgs).
Microsoft.SPOT.Ink.DrawingAttributes has new Color field.
The Microsoft.SPOT.Ink.InkCanvas class has new SetPosition(int, int, int, int) method, and the default OnStroke handler uses the color specified in drawing attribute and left and top properties.
New enum System.DateTimeKind enum, and the DateTime now supports the kind philosophy, with Kind property, static SpecifyKind(DateTime, DateTimeKind) and other methods adjustments. Considering all the troubles in .NET Framework, I would prefer the DateTimeOffset solution.
The System.Globalization.DateTimeFormat.FormatCustomized(DateTime, string, DateTimeFormatInfo) now formats any number of y with zeros filled from left (eg. yyyyyy is formatted as 002008)
New System.Guid struct, including guid generation.
The System.String now has Equals(object) overload.
The System.Double now has the NegativeInfinity and PositiveInfinity public constants. No, the NaN is not there. We have new System.Convert methods: ToByte, ToDouble, ToInt16, ToInt32, ToInt64, ToSByte, ToUInt16, ToUInt32, ToUInt64 and ToInt32(string, int base), which, however, does support base 16 only.
Finally there are also corresponding parsing methods available, all of Byte, Double, Int16, Int32, Int64, SByte, UInt16, UInt32, UInt64 now has the Parse method.
New nested enum System.IO.IOException.IOExceptionErrorCode, and the IOException has new ErrorCode property of this type.
The Microsoft.SPOT.Net.Security.SslStream has new DataAvailable and Length read-only properties.

Further internal changes:

The internal Ws.Services.Transport.IO.HttpStreamReader and HttpStreamWriter were removed and replaced by StreamReader resp. StreamWriter on NetworkStream.
Private Ws.Services.Serialization.WsXmlConvert.GetDoubleNumber(char[]) removed without replacement.
Redundant try catch blocks were removed from Ws.Services.Serialization.WsXmlConvert and its ToString(TimeSpan) and ToTimeSpan(string) methods now uses the WsDuration class for conversion.
Also the Ws.Services.Transport.HTTP.WsHttpMessageProcessor now uses the stream readers/writers over network stream instead of the HttpStreamReader/HttpStreamWriter. Both receive and send timeout are set to 5 seconds in the constructor (previously 100ms for receive only). This class supports UTF-8 only.
Added synchronization lock in internal Ws.Services.Tranport.WsMessageCheck.IsDuplicate property.
Ws.Services.Transport.HTTP.WsHttpClient.SendRequest(byte[], string, bool, bool, WsMtomParams) no longer sets socket's send and receive timeouts when connecting.
There is a new internal static class System.IO.Ports.SerialPortName, with the only method ConvertNameToIndex, which converts eg. COM3 into 2.
New internal Microsoft.SPOT.Touch.TouchEventProcessor class for translating desired events into StylusEvents.
The internal System.IO.FileSystemManager moved into Microsoft.SPOT.IO.dll assembly.
System.IO.DirectoryInfo now uses System.IO.Directory and this now uses the FileSystemManager. The current directory is now kept in the FileSystemManager.
New internal static File.Copy(string, string, bool, bool deleteOriginal) which joines the copy/move file operations.
The public static File methods (Create, Open, OpenRead and OpenWrite) now uses zero buffer size, which I guess defaults to a default one specified in native code.
The System.IO.FileStream(string, FileMode, FileAccess, FileShare, int) constructor is now fully implemented and uses the new internal NativeFileStream class.
The System.IO.Path now works with normalized paths.
The internal Microsoft.SPOT.Net.Security.SslNative became static and has new bool DataAvailable(object) method.
Microsoft.SPOT.Input.StylusDevice no longer keeps track of the last element caused the event.
Microsoft.SPOT.Presentation.Media.MediaContext.RenderMessageHandler(object) does not clear the bitmap (screen) before rendering.
The IOException(string, int) constructor sets the Exception.m_HResult (protected) field.
The NetworkStream.Read(byte[], int, int) now calls the Socket.ReceiveFrom even when the available count is zero.
Exceptions during native SecureAccept and SecureConnect are no longer cathed (and secure context exited) in the SslStream.Authenticate(bool, string, X509Certificate, X509Certificate[], SslVerification, SslProtocols[]) method.


Announced on Monday, July 28, 2008, the first public beta version of .NET Micro Framework 3.0. This beta comes with:

File system, Wi-Fi and non-NDA porting kit is not available in this beta.

Breaking changes (I strongly believe that - in contrast to .NET Framework - here the fixes and better design changes will be more important than backward compatibility):

Dpws.Client.Eventing.DpwsSubscribeResponse renamed to Dpws.Client.Eventing.DpwsEventSubscription and SubscriptionID type changed from WsXmlNode to string (having the value of WsXmlNode.Value).
Dpws.Device.Services.DpwsWseEventSources no longer contains the IndexOf(DpwsEventSource) method.
Internal Dpws.Device.Services.DpwsWseEventSinks is no longer IEnumerable.
System.Ext.IO.MemoryStream moved to System.IO.MemoryStream in System.IO.dll.
Internal System.Ext.IO.NetworkStream moved to System.Net.Sockets.NetworkStream in System.dll and become public with inheritance support.
Internal System.Ext.Net.WsdIPAddress was removed and replaced by System.Net.IPAddress.
Microsoft.SPOT.Hardware.ScreenMetrics removed and replaced by (virtual) Microsoft.SPOT.Hardware.GetLCDMetrics(out int length, out int width, out int bitPerPixel, out int orientationDeg) in Microsoft.SPOT.Hardware.dll.
All methods marked as obsolete were removed from the Microsoft.SPOT.Bitmap class:
void BitBlt(int, int, int, int, Bitmap, int, int, int); (use DrawImage)
void Circle(int, int, int, int); (use DrawEllipse)
void DrawRectangle(int, int, int, int); (use the other overload)
int DrawText(string, int, int, Font); (use the other overload)
int DrawText(string, int, int, Font, float); (no workaround)
void DrawTextInRect(string, int, int, int, int, uint, Font); (use the other overload)
bool DrawTextInRect(ref string, ref int, ref int, int, int, int, int, uint, Font); (use the other overload)
void Line(int, int, int, int); (use DrawLine)
void MaskBlt(int, int, int, int, Bitmap, int, int, Bitmap); (no workaround)
void PatBlt(int, int, int, int, int); (no workaround)
void ResetClippingRectangle(); (use SetClippingRectangle(0, 0, Width, Height))
void RotateBlt(Bitmap, int, int, int, int, int); (no workaround)
void SetPixel(int, int, bool); (use the other overload)
void TransparentBlt(int, int, int, int, Bitmap, int, int); (no workaround)
Microsoft.SPOT.Hardware.GPIOInterruptEventHandler removed and replaced by Microsoft.SPOT.Hardware.NativeEventHandler(uint data1, uint data2, TimeSpan time) delegate. As you can see, the signatures differ. To use your current interrupt handlers, you will have to do some little edits:

interruptPort.OnInterrupt += new NativeEventHandler(interruptPort_OnInterrupt); static void interruptPort_OnInterrupt(uint data1, uint data2, TimeSpan time) { Cpu.Pin pin = (Cpu.Pin)data1; bool state = data2 != 0; // your current code here }
Microsoft.SPOT.Hardware.SerialPort moved to System.IO.Ports.SerialPort. The SerialPort.Configuration class became internal and now you enter the parameters directly to the constructor. Also the Microsoft.SPOT.Hardware.HardwareProvider.GetSerialPins signature was changed to include CTS and RTS pins.
Microsoft.SPOT.Input.Button moved to Microsoft.SPOT.Hardware.Button in Microsoft.SPOT.Hardware.dll. Updating your using list will help. There were also plenty of values added to the enum and Button.Last is now 288.
Assembly not available any more. The UTF8Decoder was moved to System.Text namespace in mscorlib.dll and become private. Although it does not sound very good, it's a cool change, since there is a new Decoder abstract class a decoders were assigned to Encodings, as it should. So if you are using UTF8Decoder in your current application, you can get it using System.Text.Encoding.UTF8.GetDecoder().

What else is new:

Dpws.Client.Eventing.DpwsSubscribeRequest.EndTo field is no longer readonly.
New SendRequest overload accepting WsMtomBodyParts added to Dpws.Client.Transport.DpwsHttpClient class, as well as ReceiveTimeout and SendTimeOut.
In Dpws.Client.DpwsClient, DiscoveryClient, EventingClient and MexClient properties became public and a ProcessRequest was updated to not invoke non-public methods.
A bug was fixed in Dpws.Device.Services.DpwsHostedService.Subscribe(WsWsaHeader, XmlReader) (null check).
Some performance improvements (DpwsWseEventSinkQMgr).
A bug was fixed in Dpws.Device.Services.DpwsWseEventSinks.Add(DpwsWseEventSink) method (now comparing absolute uri of sink's NotifyTo).
The Port property of Dpws.Device.Device class can now be changed (until the device is started).
Fatal bug was fixed in System.Ext.Guid (Guid has now proper length).
System.Ext.Uri now recognizes IPv6 uris.
New Ws.ServiceModel namespace with three attributes and new Ws.Services.Serialization namespace with additional attributes suggesting compatibility with Windows Communication Foundation.
You might also want to check the Ws.Services.Serialization.WsXmlConvert static class with some string parsing methods.
New Ws.Services.Xml.WsXmlElement and Ws.Services.SoapMessageBuilder class, which does not seem to be used anywhere yet.
Ws.Services.Transport.HTTP.WsHttpClient now recognizes Content-Type, Mime-Version and Expect HTTP headers as well and accepts DNS host names in addition to IPv4 ones.
A bug was fixed in Ws.Services.Transport.IO.HttpStreamReader (now it reads all data in GetNewBuffer and PeekChar private methods)
Ws.Services.WsServiceOperation now exposes the NamespaceUri.
Two fatal bugs were fixed in Ws.Services.WsSoapMessageWriter internal class (urn:uuid: missed colon, MessageNumber was MessageId - also renamed in AppSequence nested internal class)
SchemaNamespaceUri constant was added to Ws.Services.WsWellKnownUri static class.
The Microsoft.SPOT.Presentation.Media.ColorUtility class was marked as static.
There are fundamental changes of how the standard ports works, supported by the new Microsoft.SPOT.Hardware.NativeEventDispatcher class and Microsoft.SPOT.Hardware.NativeEventHandler delegate.
Microsoft.SPOT.Hardware.Cpu static class extended by PinUsage, PinValidInterruptMode and PinValidResistorMode enums.
The Microsoft.SPOT.Hardware.HardwareProvider was greatly extended and all hardware functionality now uses this class. It also contains methods for discovery of the feautres of underlaying processor (like pin count, supported interrupt modes, max baud rate, etc.)
The Microsoft.SPOT.Hardware.I2CDevice and Microsoft.SPOT.Hardware.SPI classes became disposable.
The Microsoft.SPOT.Reflection class was marked as static.
There is a new Microsoft.SPOT.Hardware.SystemInfo static class containing some further firmware info.
Also IEvent, IEventListener and IEventSource interfaces, EventCategory enum and GenericEvent and StylusEvent classes were added to support generic and stylus device.
Pretty everything in the Microsoft.SPOT.Net.NetworkInformation.NetworkInterface class was surrounded by try finally blocks.
The signature of recv, recvfrom and sendto methods of the Microsoft.SPOT.Net.SocketNative class was extended by timeout parameter.
Microsoft.SPOT.Input.ButtonDevice's methods were updated to verify access to the dispatcher's thread and to accept more than 32 buttons.
Microsoft.SPOT.Input.InputManager now also verifies access and was extended to support stylus and generic device. The Microsoft.SPOT.Input.GenericDevice is a new device which allows you to push your own messages through WPF and handle them in OnGenericEvent method.
All standard controls, Window, DrawingContext (and internal MediaContext, LayoutManager) were updated to verify the access as well.
There is a new Microsoft.SPOT.Presentation.WindowManager.PostRender event which is fired whenever rendering completes.
Microsoft.SPOT.Presentation.Media.TextAlignment enum now contains Justify value.
The Microsoft.SPOT.Presentation.UIElement contains stylus and generic device related events, and some additional neat methods:
bool ContainsPoint(int x, int y) to check whether a screen coordinates point onto this UIElement,
UIElement GetPointerTarget(int x, int y) which finds a top most visible logical child of this UIElement under the screen coordinates,
void GetUnclippedSize(out int width, out int height) which provides access to the unclipped size of the UIElement (the desired size gets clipped by available size),
UIElement ChildElementFromPoint(int x, int y) seems the same as GetPointerTarget to me except that it does not check for visibility,
void PointToClient(ref int x, ref int y) which translates the screen coordinates to relative to this UIElement,
void PointToScreen(ref int x, ref int y) which translates them the opposite direction.
The RenderRecursive become protected and virtual, yet still internal.
The Microsoft.SPOT.Dispatcher and Microsoft.SPOT.DispatcherObject now contains VerifyAccess method without needing to define the TINYCLR_DEBUG_DISPATCHER symbol and they verify access (like when calling InvokeShutDown()).
ReadTimeout and WriteTimeout were added to the System.IO.Stream abstract class.
System.Object.Finalize() declaration was fixed to be virtual instead of override.
The System.Xml.XmlTextReader was updated to use the UTF8 decoder mentioned above.
ReceiveTimeout and SendTimeout were added to the System.Net.Sockets.Socket class.
The System.Net.IPAddress is now able to parse strings and byte arrays.
Sign in using Live ID to be able to post comments.