2012-11-16 10 views
5

私はWindows Phone開発には非常に新しいです。私は私のラップトップに私のWindows 8の電話を接続するときに起動されるアプリケーションを開発したい。私はこのチュートリアル(http://justinangel.net/WindowsPhone7EmulatorAutomation)に従っていて、Windows 7の電話機/エミュレータに接続することができましたが、Windows 8の電話機またはエミュレータに接続できません。 Windows 8の電話に接続する他の方法はありますか?コンソールアプリケーションを使用してWindows Phone 8に接続します

、このための任意の可能な解決策がある場合は私に知らせてください

は、私はまだこのブログの記事を更新する機会がなかった

答えて

7

ありがとうございます。 Delvis Gomez(私の同僚)は、最終的なコードサンプルを更新し、自由に配布できるようにしました。 WP8のブログ記事を今後更新する予定ですが、その間にWP8エミュレータを自動化する方法については、かなりよく文書化されたコードスニペットがあります。

また、Microsoft.SmartDevice.MultiTargeting.Connectivityのように必要な新しいDLLへの参照を追加してください。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading; 
using System.IO; 
using System.Reflection; 

// Libraries needed to connect to the Windows Phone X Emulator 
using Microsoft.SmartDevice.Connectivity; 
using Microsoft.SmartDevice.Connectivity.Interface; 
using Microsoft.SmartDevice.MultiTargeting.Connectivity; 
using System.Globalization; 
using System.Collections.ObjectModel; 


namespace AutomatedUnitTestDriver 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      MultiTargetingConnectivity connectivity = new MultiTargetingConnectivity(CultureInfo.CurrentUICulture.LCID); 

      // Get a connectable device for a specific Device ID (from the CoreCon datastore) 
      string deviceId = "5E7661DF-D928-40ff-B747-A4B1957194F9"; 
      ConnectableDevice connectableDevice = connectivity.GetConnectableDevice(deviceId); 
      Console.WriteLine("Found Connectable Device \'" + connectableDevice.Name + "\' for Device id {" + connectableDevice.Id + "}."); 

      // Connect to the Device 
      Console.WriteLine("Connecting to Device..."); 
      IDevice iDevice = connectableDevice.Connect(); 
      Console.WriteLine("Done!"); 

      // Check if the application is already install, if it is remove it (From WMAppManifect.xml) 
      Guid appID = new Guid("{b6635769-b7ac-41a5-915d-5a7b0ae34481}"); 

      if (iDevice.IsApplicationInstalled(appID)) 
      { 
       Console.WriteLine("Uninstalling application..."); 
       iDevice.GetApplication(appID).Uninstall(); 
       Console.WriteLine("Done!"); 
      } 

      Guid productId = appID; 
      Guid instanceId = appID; 
      string applicationGenre = "NormalApp"; 
      string iconPath = @"C:\Share\LatestAPI\TestCode\Automated\AutomatedUnitTests\Bin\Debug\ApplicationIcon.png"; 
      string xapPackage = @"C:\Share\LatestAPI\TestCode\Automated\AutomatedUnitTests\Bin\Debug\AutomatedUnitTests.xap"; 

      // Install the application 
      Console.WriteLine("Installing the application..."); 
      IRemoteApplication remoteApplication = iDevice.InstallApplication(appID, appID, applicationGenre, iconPath, xapPackage); 
      Console.WriteLine("Done!"); 

      // Launch the application 
      Console.WriteLine("Starting the application..."); 
      remoteApplication.Launch(); 

      int startStopWaitTime = 1000; // msec 
      int executionWaitTime = 180000; // msec 

      // Note that IRemoteApplication has a 'IsRunning' method but it is not implemented. 
      // So, for the moment we sleep few msec. 
      Thread.Sleep(startStopWaitTime); 
      Console.WriteLine("Done!"); 

      // Allow application to complete 
      Console.WriteLine("Application is running! Waiting few seconds..."); 
      Thread.Sleep(executionWaitTime); 

      try 
      { 
       IRemoteIsolatedStorageFile remoteIsolatedStorageFile = remoteApplication.GetIsolatedStore(); 
       string sourceDeviceFilePath = (object)Path.DirectorySeparatorChar + "TestResults.trx"; 
       string targetDesktopFilePath = @"C:\Share\LatestAPI\TestCode\Automated\AutomatedUnitTests\Bin\Debug\" + "TestResults.trx"; 
       remoteIsolatedStorageFile.ReceiveFile(sourceDeviceFilePath, targetDesktopFilePath,true); 
      } 
      catch (Exception exception) 
      { 
       Console.WriteLine("Exception \'" + exception.Message + "\' reading file from device."); 
      } 

      // Terminate application 
      Console.WriteLine("Terminating the application..."); 
      remoteApplication.TerminateRunningInstances(); 

      Thread.Sleep(startStopWaitTime); 
      Console.WriteLine("\nDone!"); 

      // Disconnect from the emulator 
      Console.WriteLine("Disconnecting Device..."); 
      iDevice.Disconnect(); 
      Console.WriteLine("\nDone!"); 
     } 
    } 
} 
+0

返信いただきありがとうございます。私は窓の電話の開発に非常に新しいです、そして、これは私にとって大きな助けになります。ありがとうございました! – user1720839

+0

どこでDLLを見つけることができますか?私はMicrosoft.Smartdevice.Connectivity.dllを見つけました(wp7のために使用しました)が、私はMicrosoft.SmartDevice.MultiTargeting.Connectivityを持っていません。何か案は? –

+0

Windows 8のマシンでWindowsの電話機8で動作します。しかし窓7のために働いていない。 –

0

私はこれらの名前空間の参照が欠落していたので、私はトラブル受け入れソリューションを実装していた:私はそれらを見つけた

Microsoft.SmartDevice.Connectivity.Interface 
Microsoft.SmartDevice.MultiTargeting.Connectivity 

はここにあります:

C:\Windows\Microsoft.NET\assembly\GAC_MSIL\ 
    Microsoft.SmartDevice.Connectivity.Interface\ 
    v4.0_11.0.0.0__b03f5f7f11d50a3a\ 
    Microsoft.Smartdevice.Connectivity.Interface.dll 

C:\Windows\Microsoft.NET\assembly\GAC_MSIL\ 
    Microsoft.SmartDevice.MultiTargeting.Connectivity\ 
    v4.0_11.0.0.0__b03f5f7f11d50a3a\ 
    Microsoft.Smartdevice.MultiTargeting.Connectivity.dll 

これらのパス、特にv4.0_11.0.0.0__b03f5f7f11d50a3aの部分は、システムによって異なる場合があります。これらのDLLへの参照をプロジェクトに追加すると、すべてが正しく動作するはずです。

関連する問題