Frage

Ich versuche, verwenden Sie die CoreCon-API in Visual Studio 2008, um programmgesteuert starten Gerät Emulatoren.Wenn ich rufe device.Connect(), Ich unerklärlichen Gründen erhalten eine DirectoryNotFoundException.Ich bekomme es, wenn ich versuchen, es in der PowerShell oder C# - Konsolenanwendung.Hier ist der code, den ich verwende:

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();
}

Weiß jemand, warum ich immer diese Fehlermeldung?Ich bin mit dieser auf WinXP 32-bit, plain jane Visual Studio 2008 Pro.Ich vorstellen, es ist einige config Problem, da ich es nicht kann von einer Konsole app oder PowerShell.

Hier ist der stack-trace:

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()
War es hilfreich?

Lösung

Es kann hier gefunden werden <systemdrive>:\Program files\Common Files\Microsoft Shared\CoreCon\1.0\Bin.

Dies ist der Pfad, wo Sie bekommen können, diese dll, so fügen Sie diese dll in Ihrem Projekt.

Andere Tipps

Die Installation von VS 2008 SP 1 fixed it for me.

Ich vermute es ist ein problem mit meinem Microsoft.VisualStudio.DeviceConnectivity.Interop-assembly.Es ist keine Kopie, die auf Festplatte, die ich finden kann.Es ist in der GAC nur.Ich habe versucht zu untersuchen, in Reflektor, aber es muss, dass die Interop-assembly auch.Seit ConManServerClass ist offensichtlich COM, vielleicht gibt es eine COM-Bibliothek, die registriert werden?

Ich versuchte dies und es funktioniert ok.Können Sie einfügen in die ganze Ausnahme und stack-trace?

Aktualisiert: Seltsam ich kann nicht finden, dass interop-assy auf meinem Rechner entweder andere als die unter den c:\windows\assembly\GAC_MSIL Ordner.

Warum nicht Feuer bis SysInternals FileMon oder Process Monitor, es sparen würde einige Vermutungen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top