Was ist der Unterschied zwischen einer Ressource und einer eingebetteten Ressource in einer C # -Anwendung?

88

Wann sollte ich den einen oder anderen verwenden?

Ich möchte, dass sich alle in meiner App verwendeten Dateien (Bilder, Ton, XML-Datei usw.) in der EXE-Datei befinden, damit ich sie nicht mit einer Reihe von Ordnern und Dateien bereitstellen kann.

Danke für die Information.

Sergio Tapia
quelle

Antworten:

81

Die Build-Aktionen "Ressource" und "Inhalt" dienen zum Zugriff auf die WPF-Ressourcen mithilfe des Uris. "Embedded Resource" ist jedoch für frühere Technologien. Beide Optionen binden jedoch die Ressource in die Assembly ein, aber die Option "Ressource", die für WPF verwendet werden soll.

MSDN bietet hier eine vollständige Erklärung .

viky
quelle
Du hast recht! Ich habe alle Bilder in meinem WPF-Projekt auf Ressource gesetzt und die Quelle neu erstellt. Wenn ich jetzt zum Debug-Ordner navigiere, kann ich die Dateien nirgendwo finden. Sie müssen Teil der EXE-Datei sein, genau so, wie ich es möchte. Ich kann dir nicht genug danken! :)
Sergio Tapia
1
Die MSDN-Verbindung ist unterbrochen. Zusätzliche Erklärung hier wäre sehr schön.
Michael Harris
7

Eine WPF-Ressource (Build-Aktion = Ressource ) nutzt eingebettete Ressourcen, wie sie vom .NET-Kernframework unterstützt werden, bietet jedoch Unterstützung für den Zugriff auf die eingebettete Ressource über einen Pack-URI . Von MSDN :

WPF-Ressourcendateien sind nicht mit den eingebetteten oder verknüpften Ressourcentypen identisch, die mithilfe der .NET Framework-Kernunterstützung für Assemblyressourcen konfiguriert werden können. Während WPF-Ressourcendateien die Unterstützung für eingebettete Kernressourcen von .NET Framework nutzen, ist der Zugriff auf WPF-Ressourcendateien mithilfe von Pack-URIs einfacher als die Verwendung von Namespaces.

Kent Boogaart
quelle
2

Wie von MSDN berichtet,

Eingebettete Ressourcen sind die beste Wahl, wenn Sie Anwendungsressourcendateien (.resx) für mehrere Projekte freigeben müssen. Wenn Sie beispielsweise über eine gemeinsame Ressourcendatei verfügen, die Logos, Markeninformationen usw. Ihres Unternehmens enthält, müssen Sie bei Verwendung eingebetteter Ressourcen nur die RESX-Datei und nicht die zugehörigen Ressourcendatendateien kopieren.

Sie können eingebettete Ressourcen nicht direkt bearbeiten. Wenn Sie versuchen, eine eingebettete Ressource zu bearbeiten, erhalten Sie eine Meldung, in der Sie aufgefordert werden, das Element in eine verknüpfte Ressource zu konvertieren, um es zu bearbeiten. Die Konvertierung wird empfohlen, ist jedoch optional. Sie müssen sie exportieren, Ihre Änderungen in einem externen Programm vornehmen und sie dann wieder in Ihr Projekt importieren.

kiamlaluno
quelle
4
Dies beantwortet nicht die Frage: Was ist der Unterschied zwischen einer eingebetteten Ressource und einer Ressource? Sie beantworten nur Adressen Embedded Resources.
Grokys
3
Der Text der Frage lautet "Wann sollte ich den einen oder anderen verwenden?"; Ich glaube, ich habe darauf geantwortet. Die Fragen sind wirklich zwei.
Kiamlaluno
1

Vielen Dank für all die Berichte, die mir geholfen haben, genauer herauszufinden, wo das Problem lag: Für mich waren es die Bilder, die als Projektsymbol in der Taskleiste verwendet wurden, die als Ressourcen erstellt wurden und als Inhalt erstellt werden mussten. Alle anderen Bilder können problemlos als Ressourcen erstellt werden.

Hoffe das hilft für die Zukunft.

user2064543
quelle