Obținerea directoruluiNotFoundException când încercați să conectați dispozitivul la CoreCon API

Încerc să folosesc API-ul CoreCon în Visual Studio 2008 pentru a lansa programatic emulatorii de dispozitive. Când apel la device.Connect() , obțin inexplicabil un DirectoryNotFoundException. Îl înțeleg dacă îl încerc în PowerShell sau în aplicația C# Console. Iată codul pe care îl folosesc:

static void Main(string[] args)
{
     DatastoreManager dm = new DatastoreManager(1033);
     Collection platforms = dm.GetPlatforms();

     foreach (var p in platforms)
     {
        Console.WriteLine("{0} {1}", p.Name, p.Id);
     }

     Platform platform = platforms[3];
     Console.WriteLine("Selected {0}", platform.Name);

     Device device = platform.GetDevices()[0];
     device.Connect();
     Console.WriteLine("Device Connected");

     SystemInfo info = device.GetSystemInfo();
     Console.WriteLine("System OS Version:{0}.{1}.{2}",info.OSMajor, info.OSMinor, info.OSBuildNo);

     Console.ReadLine();
}

Știe cineva de ce primesc această eroare? Am rula acest lucru pe WinXP 32-bit, simplu jane Visual Studio 2008 Pro. Îmi imaginez că este o problemă de config, deoarece nu o pot face dintr-o aplicație Console sau PowerShell.

Iată următoarea stivă:

System.IO.DirectoryNotFoundException was unhandled

Message="The system cannot find the path specified.\r\n"

Source="Device Connection Manager"

StackTrace:
       at Microsoft.VisualStudio.DeviceConnectivity.Interop.ConManServerClass.ConnectDevice()
       at Microsoft.SmartDevice.Connectivity.Device.Connect()
       at ConsoleApplication1.Program.Main(String[] args) in C:\Documents and Settings\Thomas\Local Settings\Application Data\Temporary Projects\ConsoleApplication1\Program.cs:line 23
       at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
0
fr hi bn

4 răspunsuri

Bănuiesc că există o problemă cu ansamblul Microsoft.VisualStudio.DeviceConnectivity.Interop. Nu există nici o copie a discului pe care o găsesc. Este doar în GAC. Am încercat să inspectez în Reflector, dar are nevoie și de acel ansamblu Interop. Deoarece ConManServerClass este evident COM, poate că există o bibliotecă COM care trebuie înregistrată?

0
adăugat

Instalarea VS 2008 SP 1 a fixat-o pentru mine.

0
adăugat

Am încercat asta și funcționează bine. Poți să lipiți întreaga excepție și urmărirea stivei?

Updated: Strangely I can't find that interop assy on my machine either other than under the c:\windows\assembly\GAC_MSIL folders.

De ce nu arde sistemul SysInternals FileMon sau Process Monitor, ar salva câteva presupuneri.

0
adăugat

It can be found at :\Program files\Common Files\Microsoft Shared\CoreCon\1.0\Bin.

Aceasta este calea în care puteți obține această DLL, deci adăugați această DLL la proiectul dvs.

0
adăugat