Получение исключения DirectoryNotFoundException при попытке подключиться к устройству с помощью CoreCon API

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

Вопрос

Я пытаюсь использовать CoreCon API в Visual Studio 2008 для программного запуска эмуляторов устройств.Когда я звоню device.Connect(), я необъяснимым образом получаю исключение DirectoryNotFoundException.Я получу это, если попробую сделать это в PowerShell или в консольном приложении C #.Вот код, который я использую:

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

Кто-нибудь знает, почему я получаю эту ошибку?Я запускаю это на 32-разрядной версии WinXP, простой jane 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 в свой проект.

Другие советы

Установка версии 2008 SP 1 исправила это для меня.

Я подозреваю, что проблема в моем Microsoft.VisualStudio.DeviceConnectivity.Сборке взаимодействия.На диске нет ни одной копии этого документа, которую я могу найти.Это только в GAC.Я попытался проверить в Reflector, но для этого также нужна эта сборка взаимодействия.Поскольку ConManServerClass, очевидно, является COM, может быть, есть библиотека COM, которая должна быть зарегистрирована?

Я попробовал это, и это работает нормально.Можете ли вы вставить все исключение целиком и трассировку стека целиком?

Обновленный: Как ни странно, я не могу найти этот узел взаимодействия на своем компьютере, кроме как в папках c:\windows\assembly\GAC_MSIL.

Почему бы не запустить SysInternals FileMon или Process Monitor, это избавило бы от некоторых догадок.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top