2008-08-09 17 views
1

Aygıtsal olarak kullanılan emülatörleri başlatmak için Visual Studio 2008'deki CoreCon API'yi kullanmaya çalışıyorum. device.Connect()'u aradığımda, bir DirectoryNotFoundException var. PowerShell'de veya C# Console Application uygulamasında denerim. Kullanmakta olduğum kod:CoreCon API ile Aygıt Bağlanmaya Çalışırken DirectoryNotFoundException'ı Kullanma

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

Bu hatayı neden aldığımı bilen var mı? Bunu WinXP 32-bit, düz jane Visual Studio 2008 Pro'da çalıştırıyorum. Konsol uygulaması veya PowerShell'den yapamayacağımı düşündüğüm bir yapılandırma sorunu olduğunu hayal ediyorum.

İşte yığın izleme:

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

cevap

0

<systemdrive>:\Program files\Common Files\Microsoft Shared\CoreCon\1.0\Bin adresinde bulunabilir.

Bu dll'yi alabileceğiniz yol budur, bu nedenle bu dll'yi projenize ekleyin.

0

Bu çalıştı ve ok çalışır. Tüm istisna ve yığın izini yapıştırabilir misiniz?

Güncelleştirmeler: Garip Bu makinemde c: \ windows \ assembly \ GAC_MSIL klasörleri dışında başka bir yardımcı bulunamadı.

Neden SysInternals FileMon veya İşlem İzleyicisi'ni tetikleme, bazı tahminleri kaydeder.

0

Microsoft.VisualStudio.DeviceConnectivity.Interop derlememde bir sorun olduğundan şüpheleniyorum. Bu diskte bulabileceğim bir kopya yok. Sadece GAC'de. Reflector'da incelemeye çalıştım ama aynı zamanda Interop montajına da ihtiyacı var. ConManServerClass açıkçası COM olduğundan, kayıtlı olması gereken bir COM kütüphanesi var mı?

1

VS 2008 SP 1'in Kurulumu benim için düzeltildi.