尝试使用CoreCon API连接到设备时获取DirectoryNotFoundException

时间:2008-08-09 20:22:19

标签: c# visual-studio windows-mobile compact-framework corecon

我正在尝试使用Visual Studio 2008中的CoreCon API以编程方式启动设备模拟器。当我调用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();
}

有谁知道我为什么会收到这个错误?我在WinXP 32位,简单的Visual Studio 2008 Pro上运行它。我想这是一些配置问题,因为我无法从Console应用程序或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()

4 个答案:

答案 0 :(得分:1)

安装VS 2008 SP 1为我修复了它。

答案 1 :(得分:0)

我尝试了这个,它运作正常。你可以粘贴整个异常和堆栈跟踪吗?

更新:奇怪的是,我在我的机器上找不到互操作组件,而不是在c:\ windows \ assembly \ GAC_MSIL文件夹下。

为什么不启动SysInternals FileMon或Process Monitor,这样可以省去一些猜测。

答案 2 :(得分:0)

我怀疑我的Microsoft.VisualStudio.DeviceConnectivity.Interop程序集存在问题。我找不到磁盘上的副本。它只在GAC中。我试图在Reflector中进行检查,但它也需要Interop程序集。由于ConManServerClass显然是COM,可能有一个必须注册的COM库?

答案 3 :(得分:0)

可以在<systemdrive>:\Program files\Common Files\Microsoft Shared\CoreCon\1.0\Bin找到。

这是你可以获得这个dll的路径,所以将这个dll添加到你的项目中。