Quelle est la différence entre une ressource et une ressource intégrée dans une application C #?

89

Quand dois-je utiliser l'un ou l'autre?

J'aimerais que tous les fichiers que j'utilise dans mon application (images, son, fichier xml, etc.) se trouvent à l'intérieur du fichier .exe afin de ne pas déployer avec un tas de dossiers et de fichiers.

Merci pour l'info.

Sergio Tapia
la source

Réponses:

82

Les actions de génération «Ressource» et «Contenu» permettent d'accéder aux ressources WPF à l'aide des Uris. Cependant, «Embedded Resource» concerne les technologies antérieures. Cependant, les deux options incorporent la ressource dans l'assembly mais l'option «Ressource» à utiliser pour WPF.

MSDN fournit une explication complète ici .

Viky
la source
Tu as raison! J'ai défini toutes les images de mon projet WPF sur Ressource et reconstruit la source. Maintenant, lorsque je navigue vers le dossier Debug, je ne trouve les fichiers nulle part, ils doivent faire partie du .exe, exactement comme je le veux. Je ne peux pas vous remercier assez! :)
Sergio Tapia
1
Le lien MSDN est rompu. Une explication supplémentaire ici serait très bien.
Michael Harris
7

Une ressource WPF (action de génération = ressource ) exploite les ressources incorporées telles que prises en charge par le framework .NET principal, mais ajoute la prise en charge de l'accès à la ressource intégrée via un URI de pack . Depuis MSDN :

Les fichiers de ressources WPF ne sont pas les mêmes que le type de ressources incorporées ou liées qui peuvent être configurées à l'aide de la prise en charge principale de .NET Framework pour les ressources d'assembly. Alors que les fichiers de ressources WPF exploitent la prise en charge des ressources incorporées de base .NET Framework, la possibilité d'accéder aux fichiers de ressources WPF à l'aide des URI de pack est plus facile que d'utiliser des espaces de noms.

Kent Boogaart
la source
2

Tel que rapporté par MSDN,

Les ressources intégrées sont le meilleur choix si vous devez partager des fichiers de ressources d'application (.resx) entre plusieurs projets. Par exemple, si vous disposez d'un fichier de ressources commun contenant les logos de votre entreprise, des informations sur les marques de commerce, etc., l'utilisation de ressources incorporées signifie que vous devez copier uniquement le fichier .resx et non les fichiers de données de ressources associés.

Vous ne pouvez pas modifier directement les ressources intégrées. Si vous essayez de modifier une ressource incorporée, vous recevrez un message vous invitant à convertir l'élément en ressource liée afin de le modifier. La conversion est recommandée mais facultative. Vous devez les exporter, apporter vos modifications dans un programme externe, puis les réimporter dans votre projet.

kiamlaluno
la source
4
Cela ne répond pas à la question: quelle est la différence entre une ressource intégrée et une ressource? Vous ne répondez qu'aux adresses Ressources intégrées.
Grokys
3
Le texte de la question dit "Quand dois-je utiliser l'un ou l'autre?"; Je pense avoir répondu à cela. Les questions sont en fait deux.
kiamlaluno
1

Merci pour tous les rapports qui m'ont aidé à trouver plus précisément où était le problème: pour moi, ce sont les images utilisées comme icône de projet dans la barre des tâches qui ont été construites en tant que ressources et ont dû être construites en tant que contenu. Toutes les autres images peuvent être construites en tant que ressources, aucun problème.

J'espère que cela aidera pour l'avenir.

user2064543
la source