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.