2017-12-08 1 views
3

Ich baue eine Anwendung für UWP in Visual Studio 2017 (es ist eigentlich ein Unity-Spiel, die Lösung wird von Unity exportiert). Während bauen, erhalte ich die folgenden Warnungen und die Dateien, die als solche ausgewiesen werden nicht zeigen, in der letzten appxupload Datei auf, und somit zur Laufzeit nicht gefunden werden kann:Ordner deklarieren als Sprachneutral in VS2017 Build für den Microsoft Store

1>GENERATEPROJECTPRIFILE : warning PRI263: 0xdef01051 - No default or neutral resource given for 'Files/Data/GI/level1/ca51e77bb6146d425e0c9319844929a0.vis'. The application may throw an exception for certain user configurations when retrieving the resources. 

Es gibt eine Warnmeldung für die Ressource Situation im allgemeinen, die wie folgt lautet:

1>GENERATEPROJECTPRIFILE : warning PRI257: 0xdef00522 - Resources found for language(s) 'be,ca,fa' but no resources found for default language(s): ''. Change the default language or qualify resources with the default language. http://go.microsoft.com/fwlink/?LinkId=231899 

die Sprachen, die als solche in Ordnern gemeldet werden, die Sprache ISO-Codes haben (zum Beispiel in der Fehlermeldung, ist die Datei tatsächlich im Ordner Dateien/Daten/GI/level1/ca /). Diese Ordner sind jedoch NICHT sprachspezifisch, sie werden auf diese Weise aufgrund eines internen Indexierungsschemas von Unity benannt, das ich nicht ändern kann.

Also was ich frage ist das: Wie und wo kann ich Visual Studio konfigurieren oder welcher Teil von MSBuild ist dafür verantwortlich, diese Ordner NICHT als sprachspezifisch zu behandeln? Oder gibt es eine andere Lösung für dieses Problem?

Vielen Dank.

+1

Haben Sie Ihre Datei als Inhaltsdatei in Visual Studio beim Erstellen festgelegt? Klicken Sie mit der rechten Maustaste auf Ihre Datei in VS, und sehen Sie sich die Build-Aktion an. Wenn sie als Inhalt festgelegt wird, wird sie als Inhaltsdatei erstellt. Übrigens können Sie auch sicherstellen, dass Sie beim Erstellen immer das Kopieren festgelegt haben. –

+0

Danke, aber sie waren schon auf "Inhalt" eingestellt. Siehe unten für die Lösung. – Phil

Antwort

1

Ich habe eine Lösung/Workaround gefunden. Teil des Builds ist ein Aufruf von makepri.exe, der die PRI-Dateien (Package Resource Index) erstellt, die mehr oder weniger ein Verzeichnis von Dateien im Build enthalten. Makepri sucht standardmäßig nach Ordnern mit Sprachbenennung und teilt den Build nach den gefundenen Sprachen auf. Dadurch werden die sprachspezifischen Dateien in Ressourcenpakete verschoben.

Glücklicherweise kann dieses Verhalten konfiguriert werden, wie described here - makepri kann angewiesen werden, alles nur in eine große Ressource-Datei statt aufzuspalten. Dies wird durch die Bearbeitung der CSPROJ Datei erreicht, und die folgenden zwei Zeilen in den Konfigurationsabschnitt für Master | x64:

<AppxBundleAutoResourcePackageQualifiers> 
    DXFeatureLevel 
</AppxBundleAutoResourcePackageQualifiers> 

<AppxDefaultResourceQualifiers> 
    Language=en-us;de-de;es-es 
</AppxDefaultResourceQualifiers> 

Der erste Tag deaktiviert die automatische Spricht Qualifier (seit „Sprache“ fehlen die Liste der Qualifikanten). Da Sprachen jetzt nicht mehr automatisch erkannt werden, müssen sie explizit aufgelistet werden (zweites Tag).

Ich habe keine Möglichkeit gefunden, das zu tun, was ich ursprünglich wollte - bestimmte Ordner sollten nicht als sprachspezifisch betrachtet werden - aber das funktioniert für mich.

Verwandte Themen