Erstellen von Ressourcen in Ihr App-Paket anstelle eines Ressourcenpakets
Einige Arten von Apps (mehrsprachige Wörterbücher, Übersetzungstools usw.) müssen das Standardverhalten eines App-Bündels überschreiben und Ressourcen in das App-Paket integrieren, anstatt sie in separaten Ressourcenpaketen (oder Ressourcenpaketen) zu haben. In diesem Thema wird erläutert, wie das geht.
Wenn Sie ein App-Bündel (.appxbundle) erstellen, sind standardmäßig nur Ihre Standardressourcen für Sprache, Skalierung und DirectX-Featureebene in das App-Paket integriert. Ihre übersetzten Ressourcen und Ihre Ressourcen, die auf nicht standardmäßige Skalierungs- und/oder DirectX-Featureebenen zugeschnitten sind, sind in Ressourcenpakete integriert, und sie werden nur auf Geräte heruntergeladen, die sie benötigen. Wenn ein Kunde Ihre App aus dem Microsoft Store mit einem Gerät mit einer auf Spanisch festgelegten Spracheinstellung kauft, werden nur Ihre App und das spanische Ressourcenpaket heruntergeladen und installiert. Wenn derselbe Benutzer später seine Spracheinstellung in den Einstellungen auf Französisch ändert, wird das französische Ressourcenpaket Ihrer App heruntergeladen und installiert. Ähnliche Dinge geschehen mit Ihren Ressourcen, die für skalierungsfähig sind und für die DirectX-Featureebene geeignet sind. Für den Großteil der Apps stellt dieses Verhalten eine wertvolle Effizienz dar, und es ist das, was Sie und der Kunde passieren möchten .
Wenn Ihre App es dem Benutzer jedoch ermöglicht, die Sprache im Handumbruch von der App (statt über Einstellungen) zu ändern, ist dieses Standardverhalten nicht geeignet. Sie möchten, dass alle Sprachressourcen bedingungslos zusammen mit der App einmal heruntergeladen und installiert werden und dann auf dem Gerät verbleiben. Sie möchten alle diese Ressourcen in Ihr App-Paket statt in separate Ressourcenpakete erstellen.
Hinweis: Das Einschließen von Ressourcen in einem App-Paket erhöht im Wesentlichen die Größe der App. Deshalb lohnt es sich nur, wenn die Art der App sie verlangt. Wenn nicht, müssen Sie nichts tun, außer ein normales App-Bündel wie gewohnt zu erstellen.
Sie können Visual Studio so konfigurieren, dass Ressourcen auf eine von zwei Arten in Ihr App-Paket integriert werden. Sie können ihrem Projekt entweder eine Konfigurationsdatei hinzufügen oder Ihre Projektdatei direkt bearbeiten. Verwenden Sie die optionen, mit denen Sie am besten vertraut sind oder mit welchen Optionen Sie am besten mit Ihrem Buildsystem arbeiten.
Option 1. Verwenden von priconfig.packaging.xml zum Erstellen von Ressourcen in Ihr App-Paket
- Fügen Sie in Visual Studio ihrem Projekt ein neues Element hinzu. Wählen Sie XML-Datei aus, und benennen Sie die Datei
priconfig.packaging.xml
. - Aktivieren Und überprüfen Sie
priconfig.packaging.xml
in Projektmappen-Explorer die Eigenschaftenfenster. Die Buildaktion der Datei sollte auf "Keine" festgelegt werden, und "In Ausgabeverzeichnis kopieren" sollte auf "Nicht kopieren" festgelegt werden. - Ersetzen Sie den Inhalt der Datei durch diesen XML-Code.
<packaging> <autoResourcePackage qualifier="Language" /> <autoResourcePackage qualifier="Scale" /> <autoResourcePackage qualifier="DXFeatureLevel" /> </packaging>
- Jedes
<autoResourcePackage>
Element weist Visual Studio an, die Ressourcen für den angegebenen Qualifizierernamen automatisch in separate Ressourcenpakete aufzuteilen. Dies wird als automatische Aufteilung bezeichnet. Mit den bisher gespeicherten Dateiinhalten haben Sie das Verhalten von Visual Studio nicht geändert. Mit anderen Worten, Visual Studio verhält sich bereits so, als ob diese Datei mit diesen Inhalten vorhanden wäre, da dies die Standardwerte sind. Wenn Visual Studio nicht automatisch auf einen Qualifizierernamen aufgeteilt werden soll, löschen Sie dieses<autoResourcePackage>
Element aus der Datei. So würde die Datei aussehen, wenn Sie möchten, dass alle Sprachressourcen in das App-Paket integriert werden, anstatt automatisch in separate Ressourcenpakete aufzuteilen.<packaging> <autoResourcePackage qualifier="Scale" /> <autoResourcePackage qualifier="DXFeatureLevel" /> </packaging>
- Speichern und schließen Sie die Datei, und erstellen Sie Ihr Projekt neu.
Um zu bestätigen, dass Ihre automatisch geteilten Auswahlmöglichkeiten berücksichtigt werden, suchen Sie nach der Datei <ProjectFolder>\obj\<ReleaseConfiguration folder>\split.priconfig.xml
, und vergewissern Sie sich, dass der Inhalt Ihren Auswahlmöglichkeiten entspricht. Andernfalls haben Sie Visual Studio erfolgreich konfiguriert, um die Ressourcen Ihrer Wahl in das App-Paket zu erstellen.
Es gibt einen letzten Schritt, den Sie ausführen müssen. Aber nur, wenn Sie den Language
Qualifizierernamen gelöscht haben. Sie müssen die Union aller unterstützten Sprachen Ihrer App als Standardsprache Ihrer App angeben. Ausführliche Informationen finden Sie unter Angeben der standardressourcen, die Ihre App verwendet. Dies würde Sie priconfig.default.xml
enthalten, wenn Sie Ressourcen für Englisch, Spanisch und Französisch in Ihr App-Paket einschließen würden.
<default>
<qualifier name="Language" value="en;es;fr" />
...
</default>
Wie funktioniert das?
Im Hintergrund startet Visual Studio ein Tool MakePri.exe
zum Generieren einer Datei namens "Package Resource Index", die alle Ressourcen Ihrer App beschreibt, einschließlich der Angabe, welche Ressourcenqualifizierernamen automatisch aufgeteilt werden sollen. Ausführliche Informationen zu diesem Tool finden Sie unter Manuelles Kompilieren von Ressourcen mit MakePri.exe. Visual Studio übergibt eine Konfigurationsdatei an MakePri.exe
. Der Inhalt der priconfig.packaging.xml
Datei wird als <packaging>
Element dieser Konfigurationsdatei verwendet, bei dem es sich um den Teil handelt, der die automatische Aufteilung bestimmt. Das Hinzufügen und Bearbeiten priconfig.packaging.xml
beeinflusst also letztendlich den Inhalt der Paketressourcenindexdatei, die Visual Studio für Ihre App generiert, sowie den Inhalt der Pakete in Ihrem App-Bündel.
Verwenden eines anderen Dateinamens als priconfig.packaging.xml
Wenn Sie Ihre Datei priconfig.packaging.xml
benennen, erkennt Visual Studio sie und verwendet sie automatisch. Wenn Sie ihm einen anderen Namen geben, müssen Sie Visual Studio informieren. Fügen Sie in der Projektdatei zwischen den öffnenden und schließenden Tags des ersten <PropertyGroup>
Elements diesen XML-Code hinzu.
<AppxPriConfigXmlPackagingSnippetPath>FILE-PATH-AND-NAME</AppxPriConfigXmlPackagingSnippetPath>
Ersetzen Sie den FILE-PATH-AND-NAME
Pfad zu und den Namen Der Datei.
Option 2. Verwenden Der Projektdatei zum Erstellen von Ressourcen in Ihr App-Paket
Dies ist eine Alternative zu Option 1. Sobald Sie wissen, wie Option 1 funktioniert, können Sie stattdessen Option 2 ausführen, wenn dies zu Ihrem Entwicklungs- und/oder Buildworkflow passt.
Fügen Sie in der Projektdatei zwischen den öffnenden und schließenden Tags des ersten <PropertyGroup>
Elements diesen XML-Code hinzu.
<AppxBundleAutoResourcePackageQualifiers>Language|Scale|DXFeatureLevel</AppxBundleAutoResourcePackageQualifiers>
So sieht dies aus, nachdem Sie den ersten Qualifizierernamen gelöscht haben.
<AppxBundleAutoResourcePackageQualifiers>Scale|DXFeatureLevel</AppxBundleAutoResourcePackageQualifiers>
Speichern und schließen Sie es, und erstellen Sie Ihr Projekt neu.
Es gibt einen letzten Schritt, den Sie ausführen müssen. Aber nur, wenn Sie den Language
Qualifizierernamen gelöscht haben. Sie müssen die Union aller unterstützten Sprachen Ihrer App als Standardsprache Ihrer App angeben. Ausführliche Informationen finden Sie unter Angeben der standardressourcen, die Ihre App verwendet. Dies würde Ihre Projektdatei enthalten, wenn Sie Ressourcen für Englisch, Spanisch und Französisch in Ihr App-Paket eingeschlossen haben.
<AppxDefaultResourceQualifiers>Language=en;es;fr</AppxDefaultResourceQualifiers>