Summary: Important information on Microsoft Robotics Studio November 2006 CTP

Modifying Existing Samples


If you modify existing samples or tutorials and recompile a single project then you may see an error message that looks similar to this when trying to run ""DssHost"":

		 Could not load file or assembly 'SickLRF.Y2005.M12.Proxy, Version=1.0.282.3, Culture=neutral,
		 [PublicKeyToken=31bf3856ad364e35'] or one of its dependencies.
		 The located assembly's manifest definition does not match the assembly reference.
	

The solution is to recompile all your samples. This can either be done from Visual Studio by selecting "Rebuild Solution" or by starting a Microsoft Robotics Studio Command Prompt and run the following command:

		 msbuild /v:q /t:Rebuild samples\samples.sln
	

Depending on the edition of Visual Studio you have installed you may get error messages during this compilation that look similar to this:

		 error MSB3428: Could not load the Visual C++ component "VCBuild.exe".
		 To fix this, 1) install the .NET Framework 2.0 SDK, 2) install Microsoft Visual Studio 2005
		 or 3) add the location of the component to the system path if it is installed elsewhere.
	

This is fine to ignore.

Relaunching Installation of External Packages


If you need to relaunch installation of external packages such as ""DirectX"" or .NET Framework 3.0 Runtime then you can always find them in the "External" sub folder of the installation folder. By default this is

		 C:\Microsoft Robotics Studio (November 2006)\external
	

For example, to restart the installation of the .NET Framework 3.0 Runtime start

		 C:\Microsoft Robotics Studio (November 2006)\external\dotnetfx3setup.exe
	

Remove Security Attributes


In the November CTP we have deprecated the use of the CLR security attributes:

		 [assembly: System.Security.AllowPartiallyTrustedCallers]
	

and

		 [System.Security.Permissions.PermissionSet(...)]
	

You will likely have some of these attributes in your service code. Certain combinations of these attributes can cause security exceptions that prevent your services from running. The solution is to remove the attributes from your service code and recompile. You can remove these attributes manually from your service code or use the the migration tool available from the Start menu after you have installed the November CTP.

IronPython Support


Our current Python samples and tutorials use IronPython Release 1.0 Release Candidate . There are known issues with handling of generics in later releases of IronPython so our examples will not run until we support the latest IronPython release.

Configuration file changes for hardware devices using the generic motors and sensors

If you have created and saved your own state xml files, please notice that the name of the Identifier field has changed in all generic sensor and motor types, defined in ""RoboticsCommon"" and used by almost all samples. This means the XML files created before this CTP have to be updated as follows:

Old element:

		 <Identifier>1</Identifer>
	

New element:

		 [<HardwareIdentifier>1</HardwareIdentifier>]
	

We have updated all state files in the folder "samples\config" so you can look at config files there.

Name Changes in State Types


Related to the configuration file changes described above, several service state types, especially in ""RoboticsCommon"" have changes names. You can catch some but not all of these using the utility ""DssProjectMigration"" which is part of the Microsoft Robotics Studio. This means that when you migrate services to the November CTP you will likely have to manually update some of the type names you use.

Removing System.Runtime.Serialization Attributes


In this CTP we have moved away from using the ""DataContract"" and ""DataMember"" attributes in the System.Runtime.Serialization namespace. Instead we have moved these attributes to the namespace Microsoft.Dss.Core.Attributes. This change will mostly be handled using the ""DssProjectMigration"" which is part of the Microsoft Robotics Studio.

Running a DSS Node using a Non-Administrative Account


In order to run a DSS node using a non-administrative account, you must first reserve an HTTP namespace with the kernel level HTTP listener (http.sys) to be able to listen for requests. Administrative users do not have to reserve a namespace.

You can reserve an HTTP namespace using the "HttpReserve" utility. The following example shows a namespace reservation enabling a local, non-administrative account called MSRS_TEST to run a DSS node on port 50000:

		 httpreserve /port:50000 /user:msrs_test
	

Namespace reservations are persisted and only necessary to do once for a given port and user or group. They can be removed by using the "/remove" option like this:

		 httpreserve /port:50000 /remove+
	

VPL Diagrams


If you load a diagram from a previous CTP the diagram will not automatically be displayed. To display, double click on the "diagram" icon in the project viewer.

Occasional Problems Uploading data using HTTP PUT


Internally MSRS uses asynchronous calls to read from the HTTP request input stream when handling HTTP PUT requests. However, a bug in the CLR Framework can cause the stream not to return the actual number of bytes read from the network. If your application makes heavy use of the ""DsspHttpUtilitiesService"" for reading data from HTTP PUT requests (not HTTP POST requests)! then you may run into this which occasionally causes uploaded data to be corrupted. If this is the case then the CLR Framework team has made this HotFix avaiable that should fix the issue. We are told that this ""HotFix"" also will be available in the next CLR Framework Service Pack.

NTLM Authenticated HTTP Requests Throwing Exception Under Heavy Use


When NTLM authentication is enabled, HTTP clients can sometime experience this exception:

		 Only one usage of each socket address (protocol/network address/port) is normally permitted 
	

The reason for this is that NTML requires TCP connections to be open and closed all the time which causes a lot of connections to be in a TCP WAIT state. After heavy use the number of connections in this state can get huge and provoke the exception above. Please see this Blog entry for more details. There are potentially severe consequences in changes the way TCP operates on your machine so we recommend changing settings only as an absolutely last resort.
Microsoft Communities