我试图使用CoreCon API在Visual Studio2008年编程方式启动装置模拟器。当我打电话 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();
}

任何人都不会知道我为什么得到这个错误?我在WinXP32位,纯简Visual Studio2008亲。我想象它的一些配置问题,因为我不能这样做,从控制台应用程序或置。

这是堆叠跟踪:

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到项目中。

其他提示

安装VS2008年SP1固定它对我来说。

我怀疑有一个问题与我Microsoft。Visual studio.DeviceConnectivity.互操作的大会。没有副本的磁盘上,我们可以找到。这是在GAC只。我试图检查在反射器,但它需要,互操作的大会。由于ConManServerClass显然是,也许有一个COM库已登记?

我尝试这样做,它的工作确定。你可以粘贴在整个例外和堆栈?

更新: 奇怪的是我找不到,互操作程序总成我的机器上或者其他比下c:\windows\assembly\GAC_MSIL 文件夹。

为什么不启动微软FileMon或过程监视器,这会节省一些猜测。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top