Freigeben über


Binden Sie Ressourcen in Ihr App-Paket ein, anstatt in ein Ressourcenpaket

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-Bundle (.appxbundle)erstellen, werden standardmäßig nur die 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 die Skalierung qualifiziert und für den DirectX-Featurelevel geeignet sind. Für die Mehrheit der Apps stellt dieses Verhalten einen wertvollen Effizienzgewinn dar, und es ist genau das, was Sie und der Kunde möchten, dass geschieht.

Wenn die App es dem Benutzer jedoch ermöglicht, die Sprache spontan innerhalb 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 das App-Paket integrieren, anstatt in separate Ressourcenpakete.

Anmerkung Das Einschließen von Ressourcen in ein 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 die am besten mit Ihrem Build-System funktionieren.

Option 1: Verwenden Sie priconfig.packaging.xml, um Ressourcen in Ihr App-Paket zu integrieren.

  1. 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.
  2. Wählen Sie im Projektmappen-Explorer priconfig.packaging.xml aus, und überprüfen Sie das Eigenschaftenfenster. Die Buildaktion der Datei sollte auf "Keine" festgelegt werden, und "In Ausgabeverzeichnis kopieren" sollte auf "Nicht kopieren" festgelegt werden.
  3. Ersetzen Sie den Inhalt der Datei durch diesen XML-Code.
    <packaging>
       <autoResourcePackage qualifier="Language" />
       <autoResourcePackage qualifier="Scale" />
       <autoResourcePackage qualifier="DXFeatureLevel" />
    </packaging>
    
  4. Jedes <autoResourcePackage>-Element weist Visual Studio an, die Ressourcen für den angegebenen Qualifizierernamen automatisch in separate Ressourcenpakete aufzuteilen. Das heißt automatische Aufteilung. Mit den bisher gespeicherten Dateiinhalten haben Sie das Verhalten von Visual Studio nicht geändert. Mit anderen Worten, Visual Studio hat sich bereits so verhalten, als ob diese Datei mit diesem Inhalt vorhanden wäre, da dies die Standardwerte sind. Wenn Visual Studio nicht automatisch bei einem Qualifizierernamen aufteilen 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 aufgeteilt zu werden.
    <packaging>
       <autoResourcePackage qualifier="Scale" />
       <autoResourcePackage qualifier="DXFeatureLevel" />
    </packaging>
    
  5. 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. Falls dies der Fall ist, haben Sie Visual Studio erfolgreich konfiguriert, um die Ressourcen Ihrer Wahl in das App-Paket zu integrieren.

Es gibt einen letzten Schritt, den Sie ausführen müssen. Aber nur, wenn Sie den Language Qualifizierernamengelöscht haben. Sie müssen die Vereinigung aller von Ihrer App unterstützten Sprachen als Standardsprache Ihrer App angeben. Weitere Informationen finden Sie unter Angeben der Standardressourcen, die Ihre App verwendet. Dies würde Ihre 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 dies?

Hinter den Kulissen startet Visual Studio ein Tool namens MakePri.exe zum Generieren einer Datei namens "Package Resource Index", die alle Ressourcen Ihrer App beschreibt, einschließlich der Angabe, welche Ressourcen-Qualifizierernamen 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 Ihrer priconfig.packaging.xml-Datei wird als <packaging>-Element in dieser Konfigurationsdatei verwendet, das der Teil ist, der die automatische Aufteilung bestimmt. Daher hat das Hinzufügen und Bearbeiten von priconfig.packaging.xml letztendlich Einfluss auf den Inhalt der Paketressourcen-Indexdatei, die Visual Studio für Ihre App generiert, sowie auf den Inhalt der Pakete im App-Bündel.

Verwenden eines anderen Dateinamens als priconfig.packaging.xml

Wenn Sie Ihre Datei priconfig.packaging.xmlbenennen, 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 FILE-PATH-AND-NAME durch den Pfad und den Namen Ihrer Datei.

Option 2. Verwenden Sie Ihre Projektdatei, um Ressourcen in Ihr App-Paket zu integrieren.

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, und erstellen Sie Ihr Projekt neu.

Es gibt einen letzten Schritt, den Sie ausführen müssen. Aber nur, wenn Sie den Language Qualifizierernamengelöscht haben. Sie müssen die Vereinigung aller von Ihrer App unterstützten Sprachen als Standardsprache Ihrer App angeben. Weitere 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>