Common Marketplace ingestion errors and how to avoid them

Ingestion is the process of testing, code signing, and publishing your application via Microsoft's App Hub to the Windows Phone Marketplace.

In this blog post we’ll review three of the most common errors seen by developers when submitting their applications to App Hub. The errors are:

Error: "An update cannot support fewer languages than the previous app instance supported (1047)"

Error: “The [NeutralResourcesLanguage] attribute is missing on the entry assembly. (2003)” .

Error: “An error occurred connecting to the server”.

When you submit your application to App Hub, it is immediately run through a series of static tests. If your application passes these tests, App Hub will navigate to the next step in the submission process. If it fails, you will see the static validation error message(s), for example:

image

Some of the tests done by App Hub are the very same tests you can and should do yourself using the Marketplace Test Kit. The Marketplace Test Kit is installed as a Visual Studio extension when installing the Windows Phone SDK. You can start it by right clicking on your project and selecting ‘Marketplace Test Kit’.

image

Error: "An update cannot support fewer languages than the previous app instance supported (1047)"

One of the static tests not run by the Marketplace Test Kit is for application update language consistency. When you update an application, your update must contain at least the same languages supported by the original. This applies even if your application is not localized. That is, you can add to the number of languages supported, but you cannot remove languages. One side effect of this requirement is that many developers have hit the error, "An update cannot support fewer languages than the previous app instance supported (1047)" . This error is often caused by an incorrect English setting. In App Hub there are two English locale groups, North American English and International English. (See here for more information: https://forums.create.msdn.com/forums/t/87638.aspx). North American English includes Canadian English and American English. All other ‘English’ languages fall under International English. You will get this error if you update an application that was designated as North American English originally and was updated as International English.

So how is the language specified? The language is specified in your project settings. Note that all applications must specify a neutral language or your app will fail the static test with the error: “The [NeutralResourcesLanguage] attribute is missing on the entry assembly. (2003)” . This is the ‘Neutral Language’ assembly setting in Project settings as shown below.

1. Right Click on your project in Solution Explorer

2. Application | Assembly Information. . .

3. Neutral Language

4. Pick a specific default language. For example for English:

image

In the above example, the neutral language is ‘English’. English without any modifier, is interpreted as ‘International English’ by App Hub.

The July 2011 Marketplace Update. If you are updating a 7.0 application that was published prior to July 2011, you may run into the ‘fewer languages’ error since applications were not required to specify a default language. The default language was specified by the developer in App Hub. This setting is now automatic. For example, your 1.0 version may be specified as North American English. Therefore, in your update, the neutral language should be specified as

English (Canada)          [assembly: NeutralResourcesLanguage("en-ca")]

or

English (United States)  [assembly: NeutralResourcesLanguage("en-us")]

If specified as [assembly: NeutralResourcesLanguage("en")], you will see the error, "An update cannot support fewer languages than the previous app instance supported (1047)" . This is because ‘en’ denotes International English and your update is North American English. Note that English is the only language divided into two groups within App Hub.

You can also see the 'fewer languages' error, if you have a custom build step which uses a macro to modify the AssemblyInfo.cs file. For example: [assembly: NeutralResourcesLanguage("$currentVsCulture$")]

Error: “An error occurred connecting to the server” .

You may see this error while uploading your XAP file to App Hub and any of the following are true:

  1. Your XAP filename has a period in it. For example: My.App.XAP.
  2. Your application contains support for languages which are not supported, or are not properly specified. For example, the Arabic and Hindi languages are currently not supported. Submitting an app with these resources, will generate this error.
  3. The neutral language set to one that is not supported by Windows Phone. For example, setting the neutral language to ‘et’ (Estonian) which is not supported in Windows Phone. Here’s a list of the supported languages updated for Windows Phone 7.5: https://msdn.microsoft.com/en-us/library/hh202918

Note that in a future update of App Hub, this error message will more accurately reflect the cause of the error.

Written by Mike Francis