4

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 で実行しています。コンソール アプリや 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

4 に答える 4

1

VS 2008 SP 1をインストールすると、修正されました。

于 2008-08-14T00:43:49.693 に答える
1

で見つけることができます<systemdrive>:\Program files\Common Files\Microsoft Shared\CoreCon\1.0\Bin

これは、この dll を取得できるパスなので、この dll をプロジェクトに追加します。

于 2010-03-08T12:20:52.483 に答える
0

私はこれを試しましたが、うまくいきます。例外全体とスタック トレースを貼り付けてもらえますか?

更新:奇妙なことに、c:\windows\assembly\GAC_MSIL フォルダー以外に、自分のマシンで相互運用アセンブリが見つかりません。

SysInternals FileMon または Process Monitor を起動してみませんか?

于 2008-08-09T22:04:42.217 に答える
0

Microsoft.VisualStudio.DeviceConnectivity.Interop アセンブリに問題があると思われます。私が見つけることができるディスク上にそのコピーはありません。GACのみです。Reflector で検査しようとしましたが、その Interop アセンブリも必要です。ConManServerClass は明らかに COM であるため、登録する必要のある COM ライブラリが存在する可能性があります。

于 2008-08-09T22:29:38.127 に答える