Qual è la differenza tra una risorsa e una risorsa incorporata in un'applicazione C #?


89

Quando dovrei usare l'uno o l'altro?

Vorrei che tutti i file che uso nella mia app (immagini, suoni, file xml, ecc.) Fossero all'interno del file .exe, quindi non eseguo la distribuzione con un mucchio di cartelle e file.

Grazie per le informazioni.

Risposte:


82

Le azioni di compilazione "Risorsa" e "Contenuto" servono per accedere alle risorse WPF utilizzando Uris. Tuttavia "Risorsa incorporata" è per le tecnologie precedenti. Tuttavia, entrambe le opzioni incorporano la risorsa nell'assembly ma l'opzione "Risorsa" da utilizzare per WPF.

MSDN fornisce una spiegazione completa qui .


Hai ragione! Ho impostato tutte le immagini nel mio progetto WPF su Risorsa e ho ricostruito l'origine. Ora, quando passo alla cartella Debug, non riesco a trovare i file da nessuna parte, devono far parte del .exe, esattamente come lo desidero. Non posso ringraziarti abbastanza! :)
Sergio Tapia

1
Il collegamento MSDN è interrotto. Ulteriori spiegazioni qui sarebbero molto belle.
Michael Harris

7

Una risorsa WPF (build action = Resource ) sfrutta le risorse incorporate come supportate dal framework .NET di base, ma aggiunge il supporto per l'accesso alla risorsa incorporata tramite un URI del pacchetto . Da MSDN :

I file di risorse WPF non sono gli stessi del tipo di risorse incorporate o collegate che possono essere configurate utilizzando il supporto .NET Framework di base per le risorse di assembly. Sebbene i file di risorse WPF sfruttino il supporto delle risorse incorporate di .NET Framework di base, la possibilità di accedere ai file di risorse WPF utilizzando gli URI del pacchetto è più semplice rispetto all'utilizzo degli spazi dei nomi.


2

Come riportato da MSDN,

Le risorse incorporate sono la scelta migliore se devi condividere file di risorse dell'applicazione (.resx) tra più progetti. Ad esempio, se si dispone di un file di risorse comune che contiene i loghi della propria azienda, informazioni sui marchi e simili, l'utilizzo di risorse incorporate significa che è necessario copiare solo il file .resx e non i file di dati delle risorse associati.

Non è possibile modificare direttamente le risorse incorporate. Se provi a modificare una risorsa incorporata, riceverai un messaggio che ti chiede di convertire l'elemento in una risorsa collegata per modificarlo. La conversione è consigliata ma facoltativa. È necessario esportarli, apportare le modifiche in un programma esterno e quindi importarli nuovamente nel progetto.


4
Questo non risponde alla domanda: qual è la differenza tra una risorsa incorporata e una risorsa? Rispondi solo agli indirizzi Risorse incorporate.
Grokys,

3
Il testo della domanda dice "Quando dovrei usare l'uno o l'altro?"; Penso di aver risposto a questo. Le domande sono davvero due.
kiamlaluno

1

Grazie per tutti i report, che mi hanno aiutato a trovare più precisamente dov'era il problema: per me, erano le immagini utilizzate come icona del progetto nella barra delle applicazioni che erano state create come risorse e dovevano essere create come contenuto. Tutte le altre immagini possono essere create come risorse, nessun problema.

Spero che questo aiuti per il futuro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.