2013-02-26 18 views
7

Ich benutze Bilder über einige meiner Tasten und ich möchte nicht, dass diese Bilder in der Ausgabe enthalten sind.Image-Build-Aktion: Unterschied zwischen None und eingebetteter Ressource?

Diese Bilder werden über die Eigenschaften der Schaltflächen festgelegt, sodass sie in der Datei Resource.resx definiert sind.

Ich wurde aufgefordert, die Build Action auf Embedded Resource zu setzen, aber ich bin neugierig, warum dies einen Unterschied macht. Ich habe die Build-Aktion jetzt auf "None" gesetzt, und keine der Dateien ist auf Kopieren eingestellt. Und ich kann die gebaute Anwendung überallhin verschieben und starten und alle Bilder zeigen sich gut. (Nur um klarzustellen, die Bilder sind definitiv nicht im Verzeichnis des Programms, wenn es startet, und sie erscheinen immer noch gut).

ich es sah auf der MSDN und bekam dies:

Keine - Die Datei wird in Projektausgabegruppe ist nicht enthalten und ist nicht in dem Build-Prozess erstellt. Ein Beispiel ist eine Textdatei, die Dokumentation enthält, z. B. eine Readme-Datei.

Eingebettete Ressource - Diese Datei ist eingebettet in die Hauptprojekt Build-Ausgabe als DLL oder ausführbare Datei. Es wird normalerweise für Ressourcendateien verwendet.

Aber von diesem klingt klingt wie alles auf None gesetzt sollte nicht einmal funktionieren (aber es tut).

Also bin ich gespannt, welchen Nutzen es Embedded Resource Einstellung gibt. Ich habe es getestet und es gab keinen Unterschied. Hatte gehofft, dass jemand erklären könnte, was passiert.

Meine einzige Annahme ist, dass, wenn die Bildeigenschaft über die Schaltfläche gesetzt wird und der Eintrag zur Ressourcendatei hinzugefügt wird, er in keiner Weise mit der zum Projekt hinzugefügten Datei verbunden ist (obwohl sie identisch sind). Wenn Sie die Bildeigenschaft auf diese Weise festlegen, müssen die Bilder nicht einmal in das Projekt aufgenommen werden (z. B. im Solution Explorer).

Vielen Dank!

Antwort

8

Es scheint, dass Sie über zwei verschiedene Arten der Darstellung eines Bildes gestolpert sind.

  1. Wenn Sie eine Ressource-Datei verwenden, dann die Ressource-Datei selbst wird enthalten die Bilder und die Datei wird in das Ausgabeverzeichnis kopiert werden. Sie werden dann verweisen Sie das Bild aus dieser Ressource-Datei und alle werden gut sein. Die tatsächliche Bildeinstellung für keine/eingebetteten/Inhalt wird nicht Angelegenheit. Auf diese Weise können Sie Ressourcendateien für eine Vielzahl von Sprachen und Speicherorten erstellen und basierend auf Ihrer Anwendungskultur ändern, welches Bild verwendet wird.

  2. Die andere Möglichkeit, ein Bild zu referenzieren, besteht darin, es entweder einzubetten oder als Inhalt im Projekt festzulegen. Wenn Sie es als Inhalt festlegen, wird in das Ausgabeverzeichnis kopiert und kann physisch basierend auf Standort referenziert werden, oder wenn Sie es einbetten, wird die Datei in die DLL erstellt, die erstellt wird, und Sie können einen Ressourcenstream mit diesem ziehen Datei darin mit eingebauten Funktionen.

Sie verwenden Methode # 1 so, wenn Sie es in der Ressource-Datei gesetzt haben Sie es nicht in dem Projekt haben müssen, da die Ressource-Datei in dem Projekt bereits ist, und das ist, wo die Datei wird komme aus.

+0

Vielen Dank. Darüber war ich verwirrt. In meinem Kopf, als ich die Bildquelle einstellte, wurde nur darauf geachtet, wo das Bild sein würde, wenn das Programm gestartet wurde. Ich habe nicht verstanden, was passiert ist, als es in die Ressourcendatei hinzugefügt wurde. Alles wurde klargestellt. – Wrightboy

Verwandte Themen