الحصول على DirectoryNotFoundException عند محاولة الاتصال بالجهاز باستخدام CoreCon API

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

سؤال

أحاول استخدام CoreCon API في Visual Studio 2008 لتشغيل برامج محاكاة الأجهزة برمجياً.عندما أتصل device.Connect(), ، لقد حصلت لسبب غير مفهوم على DirectoryNotFoundException.أحصل عليه إذا جربته في PowerShell أو في تطبيق C# Console.إليك الرمز الذي أستخدمه:

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

هل يعرف أحد لماذا أتلقى هذا الخطأ؟أقوم بتشغيل هذا على نظام التشغيل WinXP 32 بت، وهو Visual Studio 2008 Pro.أتصور أنها مشكلة في التكوين لأنني لا أستطيع القيام بذلك من تطبيق وحدة التحكم أو PowerShell.

إليك تتبع المكدس:

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()
هل كانت مفيدة؟

المحلول

يمكن العثور عليها في <systemdrive>:\Program files\Common Files\Microsoft Shared\CoreCon\1.0\Bin.

هذا هو المسار الذي يمكنك من خلاله الحصول على ملف dll هذا، لذا قم بإضافة ملف dll هذا إلى مشروعك.

نصائح أخرى

أدى تثبيت VS 2008 SP 1 إلى إصلاح المشكلة بالنسبة لي.

أظن أن هناك مشكلة في مجموعة Microsoft.VisualStudio.DeviceConnectivity.Interop الخاصة بي.لا توجد نسخة من ذلك على القرص يمكنني العثور عليها.إنه موجود في GAC فقط.لقد حاولت إجراء الفحص في برنامج Reflector، ولكنه يحتاج إلى تجميع Interop أيضًا.نظرًا لأن ConManServerClass هو COM بشكل واضح، فربما توجد مكتبة COM يجب تسجيلها؟

لقد حاولت هذا ويعمل بشكل جيد.هل يمكنك لصق الاستثناء بالكامل وتتبع المكدس؟

محدث: من الغريب أنني لا أستطيع العثور على أداة التشغيل المتداخل هذه على جهازي بخلاف المجلدات c:\windows\assembly\GAC_MSIL.

لماذا لا تقوم بتشغيل SysInternals FileMon أو مراقبة العمليات، فهذا سيوفر بعض التخمين.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top