1

Visual Studio 2008でCoreCon APIを使用してデバイスエミュレータをプログラムで起動しようとしています。私がdevice.Connect()と呼ぶと、私は不可解にDirectoryNotFoundExceptionを取得します。 PowerShellやC#Consoleアプリケーションで試してみると分かります。私が使用しているコードは次のとおりです。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をインストールすると、私のために修正されました。

関連する問題