Ottenere eccezione directorynotfoundexception quando si tenta di Connettersi al Dispositivo con il CoreCon API

StackOverflow https://stackoverflow.com/questions/6904

Domanda

Sto cercando di utilizzare il CoreCon API in Visual Studio 2008 per livello di programmazione di avviare emulatori di dispositivi.Quando l'ho chiamata device.Connect(), Ho inspiegabilmente ottenere un eccezione directorynotfoundexception.Ho capito che se cerco in PowerShell o in Applicazione Console C#.Ecco il codice che sto usando:

static void Main(string[] args)
{
     DatastoreManager dm = new DatastoreManager(1033);
     Collection<Platform> 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();
}

Qualcuno sa perché ricevo questo errore?Sto eseguendo questo su WinXP 32 bit, plain jane Visual Studio 2008 Pro.Immagino sia un problema di config, poiché non posso farlo da un'applicazione di Console o PowerShell.

Ecco la traccia dello stack:

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()
È stato utile?

Soluzione

Esso può essere trovato alla <systemdrive>:\Program files\Common Files\Microsoft Shared\CoreCon\1.0\Bin.

Questo è il percorso in cui è possibile ottenere questa dll, in modo da aggiungere questa dll per il vostro progetto.

Altri suggerimenti

L'installazione di VS 2008 SP 1 fisso per me.

Ho il sospetto che c'è un problema con il mio Microsoft.VisualStudio.DeviceConnectivity.Assembly di interoperabilità.Non c'è nessuna copia su disco che riesco a trovare.È il GAC solo.Ho provato a controllare in Riflettore, ma occorre che assembly di Interoperabilità anche.Dal ConManServerClass è, ovviamente, COM, forse c'è una libreria COM che deve essere registrata?

Ho provato questo e funziona ok.Si può incollare in tutta l'eccezione e stack?

Aggiornamento: Stranamente non riesco a trovare che interoperabilità completa sulla mia macchina sia sotto il c:\windows\assembly\GAC_MSIL le cartelle.

Perché non fuoco fino SysInternals FileMon o Monitor di Processo, si potrebbe salvare alcune congetture.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top