1

Visual Studio 2008에서 CoreCon API를 사용하여 프로그래밍 방식으로 장치 에뮬레이터를 실행하려고합니다. device.Connect()에 전화 할 때, 나는 알 수 없게 DirectoryNotFoundException을 얻습니다. PowerShell 또는 C# 콘솔 응용 프로그램에서이 도구를 사용하면 문제가 발생합니다. 사용중인 코드는 다음과 같습니다.CoreCon API를 사용하여 장치에 연결하려고 시도 할 때 DirectoryNotFoundException이 발생합니다.

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

답변

0

<systemdrive>:\Program files\Common Files\Microsoft Shared\CoreCon\1.0\Bin에서 확인할 수 있습니다.

이것은이 dll을 얻을 수있는 경로이므로이 dll을 프로젝트에 추가하십시오.

0

내가 이것을 시도하고 괜찮 작동합니다. 전체 예외 및 스택 추적에 붙여 넣을 수 있습니까?

업데이트 : 이상하게도 컴퓨터에서 c : \ windows \ assembly \ GAC_MSIL 폴더 이외의 다른 interop assy를 찾을 수 없습니다.

SysInternals FileMon 또는 Process Monitor를 시작하지 않으면 어떨까요?

0

Microsoft.VisualStudio.DeviceConnectivity.Interop 어셈블리에 문제가 있다고 생각됩니다. 내가 찾을 수있는 디스크에는 그 사본이 없습니다. 그것은 GAC에만 있습니다. Reflector에서 검사하려고했지만 Interop 어셈블리도 필요합니다. ConManServerClass는 분명히 COM이기 때문에 등록해야하는 COM 라이브러리가있을 수 있습니까?

1

VS 2008 SP 1을 설치하면 문제가 해결됩니다.

관련 문제