cyanide
cyanide

Reputation: 3964

Visual Studio 2017: Default language other than en-US

This problem is around for quite a while. I expected it to be fixed in VS 2017, but it wasn't. Here is a way to reproduce it.

  1. Open VS2017 (or VS2015) and create a new UWP project.
  2. In the Package Manifest (Package.appxmanifest) change default language from en-US to en.
  3. In Assembly Information you can either leave Neutral Language as None, or set it to English (this adds line [assembly: NeutralResourcesLanguage("en")] to AssemblyInfo.cs).
  4. In Solution Explorer select 'Assets' folder and create subfolder en (Right click - Add - New Folder - type en). Copy a .png file (e.g. StoreLogo.png) to the newly created subfolder. (Actually my real app supports several languages, but one language is enough to demonstrate the issue.)

That's it! Build the project and you'll get a message:

MakePRI : warning 0xdef00522: Resources found for language(s) 'en'
but no resources found for default language(s): 'en-US'.
Change the default language or qualify resources with the default language.
http://go.microsoft.com/fwlink/?LinkId=231899

Unfortunately, the site quoted in the message doesn't bring light to the problem.

I've noticed that generated priconfig.xml contains the following section:

<index root="\" startIndexAt="obj\x86\Debug\resources.en-us.resfiles">
    <default>
      <qualifier name="Language" value="en-us" />
      <qualifier name="Contrast" value="standard" />
      <qualifier name="Scale" value="200" />
      <qualifier name="HomeRegion" value="001" />
      <qualifier name="TargetSize" value="256" />
      <qualifier name="LayoutDirection" value="LTR" />
      <qualifier name="DXFeatureLevel" value="DX9" />
      <qualifier name="Configuration" value="" />
      <qualifier name="AlternateForm" value="" />
      <qualifier name="Platform" value="UAP" />
    </default>

    <indexer-config type="RESW" convertDotsToSlashes="true" />
    <indexer-config type="RESJSON" />
    <indexer-config type="RESFILES" qualifierDelimiter="." />
  </index>

However I have no idea where 'en-us' comes from.

The Store bundle is created allright with no en-us in the AppxBundleManifest.xml. Running app with an unsupported language is also OK, it uses English (en). The app passes certification with Microsoft store.

Still, I would prefer to get rid of this message. Any ideas?

Upvotes: 1

Views: 651

Answers (1)

Jay Zuo
Jay Zuo

Reputation: 15758

Thanks for your feedback. This is a known issue in VS/MSBuild. We are syncing with the related team on this issue. The warning is coming from the fact that .NET Core Framework binaries have "en-US" as a default language.

Still, I would prefer to get rid of this message. Any ideas?

Temporarily, the only possible workaround is to declare default language "en-US". But as you've known, this warning won't break your dev progress, you can ignore it and move forward. ;)

Upvotes: 1

Related Questions