Final release published on Microsoft Download Center on 11/15/2009, officially announced a day later on the team's blog. Lorenzo also made an announcement on PDC 2009 in Los Angeles on 11/17/2009. This is first release since the team moved to the Developer Division.
Licensing was changed (no per device fees), porting kit is now available for free download ibidem without any agreement, and so is the SDK source code as a part of it (Apache 2.0 license).
For those not familiar with 4.0 release at all, here is a quick summary of what's new:
| MFWsStack.dll |
Ws.Services.WsWellKnownUri.WsaNamespaceUri renamed to WsaNamespaceUri_2004_08. The WsaAnonymousUri constant now uses 2005 schema.
Ws.Services.Transport.HTTP.WsHttpClient throws WebException when no response is received, and ProtocolViolationException content length of zero header received. Both scenarios used to throw IOExceptions - update your catch blocks.
|
|
| Microsoft.SPOT.Native.dll | |
Microsoft.SPOT.TimeZoneId.Jerusalem enum value removed.
|
|
| mscorlib.dll | |
Public System.AppDomain.LoadInternal was made private. Currently there is no supported way for loading assemblies having numeric version information.
|
|
| System.IO.dll | |
Both System.IO.StreamReader.Read overrides now use the cached instance of CurrentEncoding's decoder. If you were changing stream encoding on the fly, you have to create your own StreamReader now and override the methods.
|
|
| Microsoft.SPOT.TinyCore.dll | |
Microsoft.SPOT.Application.OnEvent method searches for the correct window for touch events only during TouchMessages.Down message. This seriously improves performance, but has two major drawbacks: First, you need to ensure the down event gets in (namely when you generate the events yourself), and second, it makes every window to capture the touch input (e.g. windows won't be switched if you drag out of the current window).
|
|
| MFDpwsDevice.dll |
Minor performance improvement in Dpws.Device.Mex.DpwsWsxMetdataResponse (unused code removed).
Private Dpws.Device.Services.DpwsHostedService.GetEventSink removed (there is one in the DpwsWseSubscriptionMgr already).
Bug fixed in Dpws.Device.Services.DpwsWseSubscriptionMgr.Renew method (added null check).
|
|
| MFDpwsClient.dll | |
Dpws.Client.Transport.DpwsHttpClient.SendRequest now outputs the request to the console (instead of the WsHttpClient), and some redundant code was removed.
|
|
| MFWsStack.dll | |
Ws.Services.Transport.HTTP.WsHttpClient no longer outputs request to the console (DpwsHttpClient does instead). Inner try block was narrowed and response is being explicitly disposed.
|
|
| System.Http.dll | |
System.Net.HttpWebResponse uses base's IDisposable, so the protected Dispose(bool) method is overridable, and public Dispose() calls Close().
|
|
| System.Xml.Legacy.dll | |
Internal System.Xml.XmlWrappingReader uses base's IDisposable.
|
|
| Microsoft.SPOT.TinyCore.dll |
Microsoft.SPOT.Input.InputManager's stagging area is now held in Stack.
Tiny performance improvement in Microsoft.SPOT.Presentation.Controls.Border.SetBorderThickness (redundant dispatcher access check removed).
Performance improvement in Microsoft.SPOT.Presentation.Media.DrawingContext and ImageBrush (borders of zero width not painted). Clipping rectangles are now also held in Stack.
Performance improvement in Microsoft.SPOT.DispatcherTimer - underlaying timer is being reused, so the private Restart method was removed.
|
|
Additional refresh of public beta, published on Microsoft Connect and announced on the blog on 10/12/2009.
Public beta refresh, published on Microsoft Connect and announced in the newsgroup and on the blog on 09/24/2009.
| Assembly | Details |
| MFWsStack.dll |
Ws.Services.Transport.HTTP.WsHttpMessageProcessor content type case insensitivity was extended to all checks. This was fixed in internal Ws.Services.Mtom.WsMtom.ParseMessage too.
|
|
| Microsoft.SPOT.Net.Security.dll | |
ExitSecureContext and SecureCloseSocket methods of internal Microsoft.SPOT.Net.Security.SslNative class now returns int results.
|
|
| Microsoft.SPOT.Net.dll | |
close method of internal Microsoft.SPOT.Net.SocketNative class now returns int result as well.
|
|
| Microsoft.SPOT.TinyCore.dll | |
Algorithm of Microsoft.SPOT.Presentation.Media.SolidColorBrush.RenderPolygon was improved.
|
|
| mscorlib.dll |
More strict checking of assembly name format (version required after and only after comma, internal System.Reflection.Assembly.ParseAssemblyName).
Internal System.RuntimeType has a new public AssemblyQualifiedName property.
System.Type.GetType supports assembly versioning.
|
|
| System.Http.dll |
Aborting System.Net.HttpListener waits for accept thread to complete, removed redundant socket closing. Socket ownership was moved to the underalying network stream. Private members renamed (m_serviceStarted to m_ServiceRunning, m_serviceShutDown to m_Closed), m_AcceptException removed.
Internal System.Net.HttpListenerContext has Close method, in which it disposes the input and output streams.
Try catch block is now around sending headers in System.Net.HttpListenerResponse.Close, underlaying stream (instead of its socket directly) is disposed in the Dipose method. Yeah and private m_IsResponseSend was renamed to m_WasResponseSent.
System.Net.HttpWebRequest keeps only status of the response instead of whole response instance (i.e. m_response removed), some fixes - closed socket or sockets with request timeout could have been left open, socket in use could have been disposed, content length is -1 by default (instead of 0).
Internal System.Net.HttpWebResponse.ResponseStream property removed (use public GetResponseStream method), content length is -1 by default and improvements in disposal.
Some improvements and fixes in internal System.Net.InputNetworkStreamWrapper, including larger buffer (1024 bytes instead of 256) and asynchronous stream release.
System.Net.NetworkCredential has new AuthenticationType property.
|
|
| System.Net.Security.dll | |
Secure context fixes in Microsoft.SPOT.Net.Security.SslStream - could have been left open if authentication fails, UpdateCertificates now throws an exception if no context has been established, disposal improvement.
|
|
| System.dll | |
Added checks for initialized socked in the System.Net.Sockets.NetworkStream.DataAvailable, Length, Write and Read members, _socketType became protected.
|
|
First open beta version, published on Microsoft Connect on 08/31/2009, announced on 09/04/2009 on the blog and in the newsgroup.
| Assembly | Details |
| MFDpwsClient.dll |
Dpws.Client.Discovery.DiscoveryVersion10.Namespace now returns "http://schemas.xmlsoap.org/ws/2005/04/discovery".
Dpws.Client.Discovery.DiscoveryVersion11.Namespace now returns "http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01".
Dpws.Client.Discovery.DpwsDiscoveryClient is now dependant on a parent DpwsClient, requiring it in the constructor and updating its discovery service when the DiscoveryVersion is set. There is a new DpwsClient.UpdateDiscoVersion method for this purpose, which re-registers the ClientDiscoveryService. The DpwsClient also deferred the DpwsDiscoveryClient initialization to the Init() method.
In the internal constructor of Dpws.Client.DpwsServiceType, everything starting last slash is now treated as Namespace again. I haven't really got this one yet.
|
|
| MFDpwsDevice.dll |
Dpws.Device.Discovery.DiscoveryVersion10.Namespace now returns "http://schemas.xmlsoap.org/ws/2005/04/discovery".
Dpws.Device.Discovery.DiscoveryVersion11.Namespace now returns "http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01".
Dpws.Device.Device.DiscoVersion can no longer be changed if the device is already started. To check this out, new Started property was added to the Device.
Performance improvement - Dpws.Device.Services.DpwsWseSubscriptionMgr keeps one WsHttpClient only.
Bug fix - internal Dpws.Device.Mex.DpwsWsxMetdataResponse now clears Device.Host's namespaces.
|
|
| MFWsStack.dll |
Tiny performance improvement in Ws.Services.Transport.HTTP.WsHttpClient.SendRequest (unnecessary setting of KeepAlive removed).
Ws.Services.Transport.HTTP.WsHttpMessageProcessor.ProcessKnownHeaders checks for Multipart/Related content type case insensitive way now (but only for this one).
Ws.Services.Transport.HTTP.WsHttpMessageProcessor.ProcessRequest no longer silently exits if ProcessRequestMessage fails.
Ws.Services.Transport.HTTP.WsHttpMessageProcessor.ProcessRequestMessage now requires matching not only service endpoint, but requested operation too.
Some improvements in the internal Ws.Services.Utilities.DebugTiming class.
|
|
| Microsoft.SPOT.TinyCore.dll |
Microsoft.SPOT.Presentation.Media.DrawingContext and internal Microsoft.SPOT.Presentation.Media.MediaContext are now IDisposable and releases their bitmaps.
Microsoft.SPOT.DispatcherTimer, and internal Microsoft.SPOT.DispatcherOperation.DispatcherOperationEvent and DispatcherOperationFrame are now IDisposable and releases their timers. They also have new virtual Close methods to support disposal for inheritors.
Constructors of Microsoft.SPOT.Input.InputDevice and Microsoft.SPOT.DispatcherObject became protected only, but since these classes are abstract anyway, nothing changes.
Microsoft.SPOT.Input.InputProviderSite has new virtual protected Dispose(bool) method to support disposal for inheritors.
Performance improvement in Microsoft.SPOT.RoutedEventHandlerInfo.Equals.
Removed some private, touch related methods: Microsoft.SPOT.Input.TouchDevice.ExtractRawTouchInputReport and static Microsoft.SPOT.Presentation.UIElement.OnTouchGesture[Ended|Changed|Started]Thunk.
|
|
| System.Http.dll | |
Tiny performance improvement in System.Net.WebHeaderCollection.ToString method.
|
|
| System.IO.dll |
Bug fix - System.IO.StreamReader, StreamWriter, TextReader and TextWriter finalizers are no longer suppressed in their Close method.
Internal static System.IO.Path.HasIllegalCharacters and IsNullOrEmpty methods removed.
Private System.IO.StreamReader.ReadByte and internal ReadBytes methods removed.
|
|
| System.Xml.Legacy.dll | |
Internal System.Xml.XmlWrappingReader is now explicitly IDisposable and checks for nulls when disposing.
|
|
| MFDpwsClient.dll |
Dpws.Client.Discovery.DpwsDiscoveryClient.DirectedProbe now requires the discovery service address, use dpwsDiscoveryClient.DiscoVersion.WellKnownAddress value to get the previous behavior.
First parameter of Dpws.Client.Transport.DpwsHttpClient.SendRequest must be now passed by reference.
|
|
| MFDpwsExtensions.dll |
System.Ext.Uri, UriHostNameType and UriKind were removed. Use System.Uri and others in the System.Http.dll assembly instead.
|
|
| MFWsStack.dll |
Ws.Services.Serialization.DataContractAttribute, DataMemberAttibute and EnumMemberAttribute were moved to the Ws.ServiceModel namespace - and, their properties were implemented.
|
|
| Microsoft.SPOT.Native.dll |
Microsoft.SPOT.ExtendedTimeZone was removed. To set a time zone offset, use Microsoft.SPOT.Time.TimeService.SetTimeZoneOffset. Other features removed without any replacement.
Microsoft.SPOT.StylusEvent was removed. Stylus stuff was incorporated into multitouch - use Microsoft.SPOT.Touch.TouchEvent instead. To get previous stylusEvent.X, use touchEvent.Touches[0].X now.
|
|
| Microsoft.SPOT.Touch.dll |
Inking support was completely redesigned into the new touch system. Specially, all of Microsoft.SPOT.Touch.ApplicationGesture, Gesture, InkCollector, InkCollectorGestureEventArgs, InkCollectorGestureEventHandler, InkCollectorStrokeEventArgs, Point, Stroke, and internal TouchMessages were removed. Try to lookup a replacement in the Microsoft.SPOT.Input namespace in the Microsoft.SPOT.TinyCore.dll assembly, or see the InkCanvas code.
Removed Microsoft.SPOT.Touch.TouchCollectorConfiguration.SetStylusMoveFrequency interop, use the TouchMovingFrequency property. GetSetTouchInfo interop was splitted into GetTouchInput and SetTouchInput with the flag type changed to TouchInput enum (previously TouchInputFlag).
Microsoft.SPOT.Touch.TouchEventProcessor.ProcessEvent now accepts DateTime instead of TimeSpan.
|
|
| System.Xml.dll |
There is a new XML parser in this version, with significant performance improvement caused be moving the code from the managed side to the native one. There are no longer all the XML related classes in the assembly, however, you can find them (and the complete old implementation) in the System.Xml.Legacy.dll assembly, in the same namespaces.
Few classes remained that overlap in the new and old assembly and thus might cause breaking changes:
- System.Xml.XmlException does not report LineNumber, LinePosition and SourceUri properties.
- System.Xml.XmlNameTable does not have Add and Get overloads accepting the char array.
- System.Xml.XmlNodeType does not have EntityReference, Entity, Document, DocumentType, DocumentFragment, Notation and EndEntity values.
- System.Xml.XmlReaderSettings has only IgnoreComments, IgnoreProcessingInstructions, IgnoreWhitespace and NameTable settings.
|
|
| Microsoft.SPOT.Hardware.dll | |
Microsoft.SPOT.Hardware.NativeEventHandler now reports DateTime instead of TimeSpan.
|
|
| Microsoft.SPOT.Ink.dll | |
Microsoft.SPOT.Ink.InkCanvas was redesigned. Removed members: protected _inkCollector, SetPosition, OnGenericEvent override, protected OnGesture.
|
|
| Microsoft.SPOT.Native.dll |
Removed Microsoft.SPOT.Hardware.Utility.DecodeRS (no replacement), GetLastBootTime (use Microsoft.SPOT.Hardware.PowerState.UpTime), HibernateSystem (use PowerState.Sleep), IsFeaturePresent (no replacement), QueryDriver (for rebooting, use PowerState.Reboot, otherwise no replacement) and WaitForIdleCPU (use PowerState.WaitForIdleCPU) methods.
Removed Microsoft.SPOT.Debug.DumpBuffer, DumpHeap, DumpPerfCounters, DumpStack methods without replacement.
Removed Microsoft.SPOT.Math.Random and Randomize method. A .NET Framework compatible System.Random class was added instead.
Removed Microsoft.SPOT.Reflection.GetAssemblyLastUse and GetAssemblyPatch methods. Patch is now indicated in the AssemblyInfo.m_flags field.
|
|
| Microsoft.SPOT.TinyCore.dll |
Stylus stuff was incorporated into multitouch. Replaced classes: Microsoft.SPOT.Input.RawStylusActions (RawTouchActions), RawStylusInputReport (RawTouchInputReport), Stylus (TouchCapture), StylusDevice (TouchDevice), StylusEventArgs (TouchEventArgs), StylusEventHandler (TouchEventHandler) and StylusEvents (TouchEvents). To get previous obj.X, use obj.Touches[0].X now.
Microsoft.SPOT.Input.ButtonEventArgs, FocusChangedEventArgs, InputEventArgs, InputReport and RawButtonInputReport constructors now require DateTime instead of TimeSpan. InputEventArgs.Timestamp and InputReport.Timestamp were also changed to DateTime.
Removed Microsoft.SPOT.Input.InputManager.PostNotifyInput, PostProcessInput, PreNotifyInput, PreProcessInput events (use inputManager.InputDeviceEvents[(int)InputManager.InputDeviceType.Button].PostNotifyInput etc.), and GenericDeviceTarget and StylusWindow properties (use GenericDevice.Target and TouchDevice.Target, respectively).
Microsoft.SPOT.Input.InputProviderSite.ReportInput method now requires InputDevice (use null to get previous behavior).
Microsoft.SPOT.Input.TouchMessages became internal only.
Microsoft.SPOT.Presentation.Controls.Border no longer accepts negative border thickness.
Microsoft.SPOT.Presentation.Media.DrawingContext.PushClippingRectangle no longer accepts negative width or height.
Microsoft.SPOT.Presentation.Shapes.Ellipse parameterless constructor removed (without replacement). The other one no longer accepts negative radiuses.
Microsoft.SPOT.Presentation.Shapes.Line constructor no longer accepts negative values.
Microsoft.SPOT.Presentation.Shapes.Polygon no longer accepts null or empty point arrays.
Replaced Microsoft.SPOT.Presentation.UIElement.StylusDown, StylusMove and StylusUp routed events with TouchDown, TouhMove, resp. TouchUp ones, and few standard events were added (TouchGestureEnd, TouchGestureChanged and TouchGestureStart). Similar changes happened to OnStylusDown/Move/Up methods. Width and Height properties no longer accept negative values.
Microsoft.SPOT.Presentation.UIElementCollection.Insert no longer accepts null.
Microsoft.SPOT.Dispatcher.BeginInvoke and Invoke methods no longer uses params for the arguments (which, by the way, removed a bug in BeginInvoke for parameterless methods). Use explicit array now (although the arg type is now object, you still need to pass an array in).
|
|
| mscorlib.dll |
System.Collections.ArrayList.Contains no longer uses the IndexOf method. When overriding IndexOf, consider overriding Contains, too.
Removed System.Globalization.CultureInfo.IsNeutralCulture without replacement. Use cultureInfo.Name.IndexOf('-') < 0 to get the previous behavior.
System.Array members can no longer be overrided (Clone, CopyTo, GetEnumerator, IsFixedSize, IsReadOnly, IsSynchronized and SyncRoot were virtual). Its enumerator (SZArrayEnumerator) was unmarked as Serializable.
System.DateTime.MaxValue was lowered to 12/31/3000 23:59:59 and no later date can be created.
|
|
| System.IO.dll | |
System.IO.StreamReader caches the decoder in constructor (though for parameterless Read method only). Not sure which way this will go but you might eventually got broken if determining/changing the decoder dynamically.
|
|
| MFDpwsClient.dll |
DPWS discovery now supports discovery versions 1.0 and 1.1. Dpws.Client.Discovery.DiscoveryVersion, DiscoveryVersion10 and DiscoveryVersion11 were added to handle this, as well as the DpwsDiscoveryClient.DiscoVersion property. Version 1.1 is now being used by default.
Dpws.Client.Discovery.DpwsDiscoveryClient.DirectedResolve method added.
Other threads are now given a chance to execute while waiting for Dpws.Client.Discovery.DpwsDiscoveryClient to receive responses.
Dpws.Client.DpwsClient now uses multiple threads for the HTTP service host (equal to the number of service endpoints hosted).
|
|
| MFDpwsDevice.dll |
Adhoc discovery can be turned off (using new Dpws.Device.Device.SupressAdhoc property). In such case, the device does neither respond nor send any discovery messages (Probe, Resolve, Hello). This might come handy when using a Discovery Proxy.
The maximum number of threads used for discovery as well as for services can now be set using the new Dpws.Device.Device.MaxDiscoveryThreads and MaxServiceThreads properties, respectively.
Multiple service types on single endpoint are now supported.
|
|
| MFWsStack.dll |
Properties of Ws.ServiceModel.ServiceContractAttribute, OperationContractAttribute and ServiceContractAttribute were implemented.
Objects returning 0 as their hash code are now accepted as initialized by Ws.Services.Serialization.DataContractSerializer.
|
|
| Microsoft.SPOT.Graphics.dll | |
Microsoft.SPOT.Bitmap has couple of new methods: RotateImage, Scale9Image, StretchImage with source offset possibility, and TileImage. Enjoy!
|
|
| Microsoft.SPOT.Hardware.dll |
Support for large buffers (over 760 kB) was added by means of Microsoft.SPOT.Hardware.LargeBuffer and LargeBufferMarshaller classes.
Power management functions were separated and extended. Several power and sleep states were defined, as well as the ability to restart the device, or wake it up on specified events. See the Microsoft.SPOT.Hardware.PowerState and all associated classes and enums.
Watchdog feature is now supported by .NET Micro Framework. Several actions can be taken (device restart, bootloader, break debugger). Check the Microsoft.SPOT.Hardware.Watchdog and related classes.
Microsoft.SPOT.Hardware.SPI has new WriteRead method overloads, allowing to specify a number of bytes in the buffer to write out. (Use -1 to write all)
New Microsoft.SPOT.EventSink.PostManagerEvent method to inject native events into the system.
|
|
| Microsoft.SPOT.Ink.dll | |
Microsoft.SPOT.Ink.InkCanvas was redesigned. Protected Init method was added, Clear now causes invalidation, and DefaultDrawingAttributes has now getter.
|
|
| Microsoft.SPOT.Native.dll |
New event categories were added: PowerLevel, SleepLevel, TimeService and LargeBuffer.
Microsoft.SPOT.GenericEvent.Time is now DateTime instead of TimeSpan.
Couple of touch related classes were added to the Microsoft.SPOT.Touch namespace (TouchEvent, TouchInput, TouchInputFlags), to replace the previous stylus events.
|
|
| Microsoft.SPOT.Time.dll | |
New assembly dealing with device system time and synchronization. SNTP server synchronization was built-in (see KB 262680 for list of public SNTP servers). It also supports time changed and synchronization failure events, and is now the only way how to set a system time zone offset. The main class to look at is the Microsoft.SPOT.Time.TimeService.
|
|
| Microsoft.SPOT.TinyCore.dll |
Performance improvements in Microsoft.SPOT.Input.ProcessInputEventArgs and StagingAreaInputItem.
New color constants were added: Brown, Cyan, DarkGray, LightGray, Magenta, Orange, Purple, Yellow. Gray (now 128, 128, 128) and Green (now 0, 128, 0) color values were changed to match desktop WPF colors.
Microsoft.SPOT.Presentation.Media.DrawingContext has also couple of new methods: RotateImage, Scale9Image, StretchImage and TileImage. Set translation can now be read (using GetTranslation), and DrawPolygon and DrawEllipse support fills.
The coordinates of colors in Microsoft.SPOT.Presentation.Media.LinearGradientBrush can now be switched from absolute (previous behavior) to relative to bounding box (WPF behavior) - use the MappingMode field.
WPF renders dirty area only (used to always redraw the whole screen). Though, only one rectangle is used to keep track of dirty areas. (This is handled by the internal Microsoft.SPOT.Presentation.Media.MediaContext class).
Microsoft.SPOT.Presentation.Media.SolidColorBrush supports filling ellipses and polygons (it is the only such brush in this release).
Microsoft.SPOT.Presentation.Shapes.Ellipse supports thick strokes.
All shapes are now created with transparent fill by default.
It is possible to invalidate only part of UI control (using new Microsoft.SPOT.Presentation.UIElement.InvalidateRect method).
Bug fixed - Microsoft.SPOT.Application.OnEvent now reports events on correct target.
|
|
| mscorlib.dll |
New System.Collections.Queue and Stack collections baked by high-performance native code. The ArrayList code was also moved to the native side for better performance.
New date time formats were added: 'R' or 'r' for RFC 1123 (ddd, dd MMM yyyy HH:mm:ss GMT), 'U' for full date time, 's' for sortable pattern (yyyy-MM-ddTHH:mm:ss), 'u' universal sortable pattern (yyyy-MM-dd HH:mm:ssZ), 'f' for long date yet short time, 'g' for general short time (short date + short time). Corresponding properties were added to the DateTimeFormatInfo.
It is now possible to get the executing assembly via System.Reflection.Assembly.GetExecutingAssembly. Assembly naming and versioning is provided using GetName method, and supported by Load and System.AppDomain.Load methods.
System.DateTime has a new constructor accepting DateTimeKind.
Random numbers generation was made .NET Framework compatible (via System.Random class).
System.Version can represent major.minor versions in addition to major.minor.build.revision.
|
|
| System.HTTP.dll |
New assembly bringing HTTP support into the framework, including HttpListener, HttpWebRequest, HttpWebResponse, proxy support and others.
Also includes System.ConvertBase64 for converting from and to Base64, and improved System.Uri.
|
|
| System.IO.dll | |
System.IO.StreamWriter finally fixed to support writing out multi-byte characters.
|
|
| System.dll | |
System.Net.IPEndPoint defined MaxPort and MinPort constants.
|
|
| MFDpwsClient.dll |
Private Dpws.Client.Discovery.DpwsDiscoveryClient.BuildProbeRequest now requires the discovery service address, use dpwsDiscoveryClient.DiscoVersion.WellKnownAddress value to get the previous behavior. Method body of the Resolve method was moved to new private BuildResolveRequest method. Probe (and private SendResolveRequest) methods no longer reuse the socket address.
Dpws.Client.DpwsClient introduced some integrity checks - whether host is already running in constructor, if anybody is attached to the HelloEvent before invoking (not so with the ByeEvent, though).
Bug fix in the internal constructor of Dpws.Client.DpwsServiceType (NamespaceUri and TypeName separation).
|
|
| MFDpwsDevice.dll |
Private Dpws.Client.Discovery.DpwsDiscoveryClient.BuildByeMessage and BuildHelloMessage methods now requires the discovery service address, use Dpws.Device.Device.DiscoVersion.WellKnownAddress value to get the previous behavior.
Method bodies of Dpws.Device.Services.DpwsHostedService.GetStatus, Renew, Subscribe and Unsubscribe were moved into the Dpws.Device.Services.DpwsWseSubscriptionMgr class.
New internal Dpws.Device.Services.DpwsWseSubscriptionMgr.FixToAddress method which ensures the address is of type urn:uuid:. Private GetEventSink and GetStatusResponse methods were duplicated from the DpwsHostedService class.
|
|
| MFDpwsExtensions.dll |
Partial bug fix in the System.Ext.Xml.XmlWriter.WriteAttributeString - double quotes are trimmed from the value to be written.
System.Ext.Console.Write was marked as conditionally compiled in Debug releases only, which allowed several compiler optimalizations.
|
|
| MFWsStack.dll |
Ws.Services.Transport.HTTP.WsHttpClient was rewritten to use the new HTTP classes, and introduced a RequestTimeout variable.
Ws.Services.Transport.HTTP.WsHttpMessageProcessor and WsHttpServiceHost were also rewritten to use the new HTTP classes.
New Ws.Services.Transport.UDP.WsUdpServiceHost.IsRunning read-only property.
Internal Ws.Services.Transport.WsNetworkServices.GetLocalIPV4Address is now thread safe.
Some improvements in the internal Ws.Services.Utilities.DebugTiming class.
Ws.Services.WsWellKnownUri.WsWellKnownUri is no longer constant, it can even be set.
|
|
| Microsoft.SPOT.Graphics.dll | |
Microsoft.SPOT.Bitmap now implements IDisposable.
|
|
| Microsoft.SPOT.IO.dll | |
Microsoft.SPOT.IO.RemovableMedia now ignores any exceptions in the static constructor.
|
|
| Microsoft.SPOT.TinyCore.dll |
Private methods Microsoft.SPOT.Input.GenericDevice.ExtractRawGenericInputReport (merged into PostProcessInput with performance improvements), PreNotifyInput and PreProcessInput removed.
New (abstract) Microsoft.SPOT.Input.InputDevice.DeviceType property. This was added for performance reasons during input processing, but you can use it to detect the input device generic type (currently Button/Touch/Generic).
Microsoft.SPOT.Input.InputManager was redesigned. Several methods were merged, devices and their input events were separated (though still only one device per device type is supported) and made accessible through public properties (ButtonDevice, TouchDevice, GenericeDevice). This improved performance and extensibility.
Microsoft.SPOT.Presentation.Media.Brush.Opacity is now property instead of field. Internal render methods were added to support filling ellipses and polygons, which are not required to be implemented (only SolidColorBrush supports them out of the box).
Performance improvement in internal Microsoft.SPOT.Presentation.Media.DrawingContext.Close (which is called every render request).
Significant performance improvement in Microsoft.SPOT.Presentation.UIElement class - visibility handling was redesigned (used recursion) and is now being cached (internal IsVisibleCache flag was defined for this purpose), and changing the children collection (resp. the previously empty internal OnChildrenChanged method) causes updates to the visibility state. Other performance improvements includes using fields instead of properties, eg. in the frequent RaiseEvent method. Private thunk methods were also adjusted from stylus to touch philosophy. The protected, previously empty OnGenericEvent now handles the TouchGesture events, so be sure to call base when overriding. GetPointerTarget no longer fails when one of the children is null.
Some performance improvements in Microsoft.SPOT.Presentation.UIElementCollection (redundant checks removed in Add and Insert).
Private Microsoft.SPOT.Application.ReportInputCallback was removed (replaced by anonymous delegate).
Microsoft.SPOT.Dispatcher uses the new native Queue collection, less locking and uses DispatcherOperationStatus when abort requested (instead of silently removing it from queue). Private removed methods: DeQueue, EnsureStatics, StartShutdownImpl (merged) and PushFrameImpl (merged).
Bug fix in Microsoft.SPOT.DispatcherOperation (timers correctly use -1 ms to disable starting and signaling), removed internal Invoke method (merged into Dispatcher.PushFrame).
|
|
| Microsoft.SPOT.Touch.dll |
Removed internal Microsoft.SPOT.Touch.TouchCollectorConfiguration.SetNativeBufferSize interop, only static buffers are used at the moment.
Internal Microsoft.SPOT.Touch.TouchCollector redesigned, too. The TouchEventProcessor.ProcessEvent went native.
Private System.Collections.ArrayList.EnsureCapacity was removed.
|
|
| mscorlib.dll |
Signature of private System.Reflection.Assembly.LoadInternal now requires version information.
System.AppDomain has public LoadInternal method for loadig assemblies with already parsed assembly names (Load is no longer external and does the parsing).
The internal array enumerator (System.Array.SZArayEnumerator) now supports circular arrays enumeration, see the source code for an example.
Some performance improvements in System.DateTime, fixed Equals method for optimized values.
Most of the System.TimeZone was moved from native to managed. CurrentTimeZone property returns an instance of new internal System.CurrentSystemTimeZone class.
|
|
| System.IO.dll | |
Tiny performance improvements in System.IO.StreamReader - reusing character array, and bug fixes.
|
|
| System.Net.Security.dll | |
Microsoft.SPOT.Net.Security.SslStream.Read redundant available bytes for read check removed, and checks for socket validity during disposal.
|
|