Share via


Erstellen von Ressourcen in Ihr App-Paket statt in ein Ressourcenpaket

Einige Arten von Apps (mehrsprachige Wörterbücher, Übersetzungstools usw.) müssen das Standardverhalten eines App-Bündels außer Kraft setzen und Ressourcen in das App-Paket integrieren, anstatt sie in separaten Ressourcenpaketen (oder Ressourcenpaketen) zu enthalten. In diesem Thema wird erläutert, wie das geht.

Wenn Sie ein App-Paket (.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 Skalierungen und/oder DirectX-Featureebenen zugeschnitten sind, sind in Ressourcenpakete integriert und werden nur auf Geräte heruntergeladen, die sie benötigen. Wenn ein Kunde Ihre App im Microsoft Store mit einem Gerät kauft, auf dem die Spracheinstellung Spanisch festgelegt ist, werden nur Ihre App und das spanische Ressourcenpaket heruntergeladen und installiert. Wenn derselbe Benutzer später in den Einstellungen seine Sprachpräferenz in Französisch ändert, wird das Französische Ressourcenpaket Ihrer App heruntergeladen und installiert. Ähnliches geschieht bei Ihren Ressourcen, die für die Skalierung und für die DirectX-Featureebene qualifiziert sind. Für die meisten Apps stellt dieses Verhalten eine wertvolle Effizienz dar, und es ist das, was Sie und der Kunde möchten .

Wenn Ihre App es dem Benutzer jedoch ermöglicht, die Sprache direkt innerhalb der App (statt über Einstellungen) zu ändern, ist dieses Standardverhalten nicht geeignet. Sie möchten eigentlich, dass alle Ihre Sprachressourcen bedingungslos heruntergeladen und zusammen mit der App einmal installiert werden und dann auf dem Gerät verbleiben. Sie möchten alle diese Ressourcen in Ihr App-Paket anstatt in separate Ressourcenpakete integrieren.

Hinweis Das Einschließen von Ressourcen in ein App-Paket erhöht im Wesentlichen die Größe der App. Aus diesem Grund lohnt sich dies nur, wenn die Art der App dies erfordert. Wenn dies nicht der Fall ist, müssen Sie nichts tun, außer wie gewohnt ein reguläres App-Bündel zu erstellen.

Sie können Visual Studio so konfigurieren, dass Ressourcen auf 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 welche am besten mit Ihrem Buildsystem funktioniert.

Option 1. Verwenden von priconfig.packaging.xml zum Erstellen von Ressourcen in Ihr App-Paket

  1. Fügen Sie ihrem Projekt in Visual Studio ein neues Element hinzu. Wählen Sie XML-Datei aus, und nennen Sie die Datei priconfig.packaging.xml.
  2. Wählen Sie in Projektmappen-Explorer die Eigenschaftenfenster auspriconfig.packaging.xml, und überprüfen Sie sie. Die Buildaktion der Datei sollte auf Keine und in Ausgabeverzeichnis kopieren 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. Dies wird als automatisches Teilen bezeichnet. Mit dem bisherigen Dateiinhalt haben Sie das Verhalten von Visual Studio nicht wirklich geändert. Mit anderen Worten, Visual Studio hat sich bereits so verhalten, als ob diese Datei mit diesen Inhalten vorhanden wäre, da dies die Standardwerte sind. Wenn Sie nicht möchten, dass Visual Studio einen Qualifizierernamen automatisch aufteilt, löschen Sie dieses <autoResourcePackage> Element aus der Datei. Hier erfahren Sie, wie die Datei aussehen würde, wenn Sie möchten, dass alle Ihre Sprachressourcen in das App-Paket integriert werden, anstatt automatisch in separate Ressourcenpakete aufzuteilen.
    <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 Optionen für die automatische Aufteilung berücksichtigt werden, suchen Sie nach der Datei <ProjectFolder>\obj\<ReleaseConfiguration folder>\split.priconfig.xml , und vergewissern Sie sich, dass deren Inhalt Mit Ihren Auswahlmöglichkeiten übereinstimmt. Falls ja, 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 Qualifizierernamen gelöscht haben. Sie müssen die Union aller unterstützten Sprachen Ihrer App als Standardsprache Ihrer App angeben. Weitere Informationen finden Sie unter Angeben der Von Ihrer App verwendeten Standardressourcen. Dies ist das, was Ihre priconfig.default.xml enthalten würde, 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 namens MakePri.exe zum Generieren einer Datei, die als Paketressourcenindex bezeichnet wird, das 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 Ihrer priconfig.packaging.xml Datei wird als <packaging> Element dieser Konfigurationsdatei verwendet, d. h. der Teil, 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-Paket.

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 darüber 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 zu und den Namen Ihrer Datei.

Option 2. Verwenden Ihrer Projektdatei zum Erstellen von Ressourcen in Ihr App-Paket

Dies ist eine Alternative zu Option 1. Nachdem Sie die Funktionsweise von Option 1 verstanden haben, können Sie sich stattdessen für Option 2 entscheiden, wenn dies für Ihren Entwicklungs- und/oder Buildworkflow besser geeignet ist.

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>

Hier erfahren Sie, wie dies aussieht, nachdem Sie den ersten Qualifizierernamen gelöscht haben.

<AppxBundleAutoResourcePackageQualifiers>Scale|DXFeatureLevel</AppxBundleAutoResourcePackageQualifiers>

Speichern und schließen Sie Ihr Projekt, und erstellen Sie es 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. Weitere Informationen finden Sie unter Angeben der Von Ihrer App verwendeten Standardressourcen. Dies ist das, was Ihre Projektdatei enthalten würde, wenn Sie Ressourcen für Englisch, Spanisch und Französisch in Ihr App-Paket einbeziehen.

<AppxDefaultResourceQualifiers>Language=en;es;fr</AppxDefaultResourceQualifiers>