Reputation: 9019
I am attempting to create a very simple Microsoft DSS program in which I subscribe to the events generated by the example Kinect DSS that implements speech recognition with the array microphone. However, I get the error seen below at runtime.
I've referenced the proxy .dll that exposes the interface, but a problem occurs at runtime.
I've tried setting my build target platform to x86, but that did not seem to fix the problem. Is there a way that I can verify that my project is being built to target x86?
Could not register types with custom serialization.: System.BadImageFormatException:
Could not load file or assembly 'file:///c:\users\ajs\microsoft robotics dev studio 4\bin\micarrayspeechrecognizer.y2011.m06.dll' or one of its dependencies. An attempt was made to load a program with an incorrect format. File name: 'file:///c:\users\ajs\microsoft robotics dev studio 4\bin\micarrayspeechrecognizer.y2011.m06.dll' at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) at System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark) at System.Reflection.Assembly.LoadFrom(String assemblyFile) at Microsoft.Dss.Services.Serializer.DataCache.LoadAssemblyFile(Uri location, Boolean cache, Boolean& inCache) at Microsoft.Dss.Services.Serializer.DataCache.RegisterCustomSerializersFromServiceAssembly(As sembly pa, AssemblyLocations locations) === Pre-bind state information === LOG: User = condor\ajs LOG: Where-ref bind. Location = c:\users\ajs\microsoft robotics dev studio 4\bin\micarrayspeechrecognizer.y2011.m06.dll LOG: Appbase = file:///C:/Users/ajs/Microsoft Robotics Dev Studio 4/bin/ LOG: Initial PrivatePath = NULL Calling assembly : (Unknown). === LOG: This bind starts in LoadFrom load context. WRN: Native image will not be probed in LoadFrom context. Native image will only be probed in default load context, like with Assembly.Load(). LOG: Using application configuration file: C:\Users\ajs\Microsoft Robotics Dev Studio 4\bin\DssHost.exe.Config LOG: Using host configuration file: LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config. LOG: Attempting download of new URL file:///c:/users/ajs/microsoft robotics dev studio 4/bin/micarrayspeechrecognizer.y2011.m06.dll. ERR: Failed to complete setup of assembly (hr = 0x8007000b). Probing terminated.
Upvotes: 0
Views: 753
Reputation: 9019
It turns out that what one has to do is start the program using dsshost32 rather than the default post-build dssproxy that is run by the template Visual Studio .sln for DSS nodes. This runs the DSS node on a 32-bit CLR, and the Kinect libraries work fine.
It then seems as though a tedious series of actions is necessary in order to get code changes from Visual Studio to show up when using dsshost32:
Upvotes: 0