Skip to content

Driver fails to start emulator if Visual Studio already started same emulator and vice versa

Nikolay Abalov edited this page May 23, 2015 · 1 revision

Problem

When you run tests driver fails to start emulator because one is already started by Visual Studio and vice versa.

Symptoms

  • Windows with non-English language pack
  • Starting emulator from Visual Studio or driver creates new emulator windows instead of using the one that has been already been started by drover or Visual Studio.
  • Error message box appears with following message (depends on language of your system):
Windows Phone Emulator is unable to create a differencing disk: A virtual disk support provider for the specified file was not found.
  • Two emulator windows are open and one emulator is not working. One emulator has name ending with locale in parenthesis (i.e. (RU) or (ES)), the other one has not.

Solution

Step 1. Determine locale of emulator (most likely it is same as locale of your system)

  • Run PowerShell
  • Execute get-UIculture in PowerShell
  • Note down LCID value (of your system, it should correspond to locale of emulator, started by driver)

Step 2. Locate ImageConfig.XDE.xml file

  • Open %ALLUSERSPROFILE%\Microsoft\Phone Tools\CoreCon\12.0\ folder
  • Open folder corresponding to LCID you obtained in step 1

Step 3. Edit ImageConfig.XDE.xml file

Note: this file is located in system folder and might not be editable directly. You can copy file to desktop or any other user folder, edit it and copy it back, replacing original one.

  • Open ImageConfig.XDE.xml
  • It should look somewhat like
<?xml version="1.0" encoding="utf-8" ?>
<LANGUAGE>
	<_locFRfinition>
		<_locTag _loc="locData">LANGUAGE_ID</_locTag>
		<_locTag _loc="locData">EMULATOR_WVGA</_locTag>
		<_locTag _loc="locData">EMULATOR_WVGA_512MB</_locTag>
		<_locTag _loc="locData">EMULATOR_WXGA</_locTag>
		<_locTag _loc="locData">EMULATOR_720P</_locTag>
		<_locTag _loc="locData">EMULATOR_1080P_55IN</_locTag>
		<_locTag _loc="locData">EMULATOR_1080P_60IN</_locTag>
	</_locFRfinition>

	<LANGUAGE_ID _locID="LANGUAGE_ID">40C</LANGUAGE_ID>
	<EMULATOR_WVGA _locID="EMULATOR_WVGA">Emulator 8.1 WVGA 4 inch(FR)</EMULATOR_WVGA>
	<EMULATOR_WVGA_512MB _locID="EMULATOR_WVGA_512MB">Emulator 8.1 WVGA 4 inch 512MB(FR)</EMULATOR_WVGA_512MB>
	<EMULATOR_WXGA _locID="EMULATOR_WXGA">Emulator 8.1 WXGA 4.5 inch(FR)</EMULATOR_WXGA>
	<EMULATOR_720P _locID="EMULATOR_720P">Emulator 8.1 720P 4.7 inch(FR)</EMULATOR_720P>
	<EMULATOR_1080P_55IN _locID="EMULATOR_1080P_55IN">Emulator 8.1 1080P 5.5 inch(FR)</EMULATOR_1080P_55IN>
	<EMULATOR_1080P_60IN _locID="EMULATOR_1080P_60IN">Emulator 8.1 1080P 6 inch(FR)</EMULATOR_1080P_60IN>
</LANGUAGE>

Note (FR) locale in elements text content.

  • Delete locale including parenthesis from elements text content
  • For example above resulting file would look like
<?xml version="1.0" encoding="utf-8" ?>
<LANGUAGE>
	<_locFRfinition>
		<_locTag _loc="locData">LANGUAGE_ID</_locTag>
		<_locTag _loc="locData">EMULATOR_WVGA</_locTag>
		<_locTag _loc="locData">EMULATOR_WVGA_512MB</_locTag>
		<_locTag _loc="locData">EMULATOR_WXGA</_locTag>
		<_locTag _loc="locData">EMULATOR_720P</_locTag>
		<_locTag _loc="locData">EMULATOR_1080P_55IN</_locTag>
		<_locTag _loc="locData">EMULATOR_1080P_60IN</_locTag>
	</_locFRfinition>

	<LANGUAGE_ID _locID="LANGUAGE_ID">40C</LANGUAGE_ID>
	<EMULATOR_WVGA _locID="EMULATOR_WVGA">Emulator 8.1 WVGA 4 inch</EMULATOR_WVGA>
	<EMULATOR_WVGA_512MB _locID="EMULATOR_WVGA_512MB">Emulator 8.1 WVGA 4 inch 512MB</EMULATOR_WVGA_512MB>
	<EMULATOR_WXGA _locID="EMULATOR_WXGA">Emulator 8.1 WXGA 4.5 inch</EMULATOR_WXGA>
	<EMULATOR_720P _locID="EMULATOR_720P">Emulator 8.1 720P 4.7 inch</EMULATOR_720P>
	<EMULATOR_1080P_55IN _locID="EMULATOR_1080P_55IN">Emulator 8.1 1080P 5.5 inch</EMULATOR_1080P_55IN>
	<EMULATOR_1080P_60IN _locID="EMULATOR_1080P_60IN">Emulator 8.1 1080P 6 inch</EMULATOR_1080P_60IN>
</LANGUAGE>

Step 4. Restart your machine

Now both driver and Visual Studio should be able to use same emulator instance.