Εφ' όσον έχεις μαρκάρει τα χρήσιμα αρχεία σου κατα το compile ως Embedded Resource, μπορείς να τα πάρεις απο το Assembly class, ως manifest Resource Stream -> σου επιστρέφει ένα stream με λίγα λόγια.
Π.χ. :
Έχω ένα class library project, το namespace του οποίου είναι MyProject.MyHelperObjects. Μέσα σε αυτό, έχω ένα folder "Resources" που μέσα έχει ένα αρχείο MyUsefulFile.xml.
Στον κώδικά σου, αν πάρεις ένα reference στο εν λόγω αρχείο, μπορείς με τη μέθοδο
GetManifestResourceStream(string path) να πάρεις πίσω ένα stream με τα περιεχόμενα του αρχείου σου - όπως αν το διάβαζες απο δίσκο.
Στον κώδικα παρακάτω που είχα πρόχειρο το χρησιμοποιώ μέσα απο το ίδιο το assembly:
Assembly.GetExecutingAssembly().GetManifestResourceStream("MyProject.MyHelperObjects.Resources.MyUsefulFile.xml"); Η γραμμή παραπάνω θα σου επιστρέψει ένα Stream instance. Αν θές να διαβάσεις κάτι απο κάποιο εξωτερικό assembly, πρέπει πρώτα να φορτώσεις το assembly (
αν δεν είναι ήδη στη μνήμη ) χρησιμοποιώντας μια απο τις αντίστοιχες static μεθόδους του assembly class, π.χ.
Load, GetAssembly, LoadFromFile, LoadFrom, LoadWithPartialName κτλ. Αφού πάρει πίσω το Assembly instance, καλείς πάλι το
GetManifestResourceStream και παίρνεις πίσω το stream σου.
Ο γενικός κανόνας για το πως προκύπτει το path είναι ... το default namespace του class library, συν το path απο το root του project σου μέχρι το αρχείο, μαζί με το extention. Έτσι στο παραπάνω παράδειγμα είναι MyProject.MyHelperObjects + Resources.MyUsefulFile.xml
Προσοχή στο ότι δεν είναι "path", με slashes, είναι σε namespace μορφή, με τελείες ! Και φυσικά στο ότι τα αρχεία είναι δηλωμένα ως embedded resources (
απο το properties το βλέπεις αυτό ).
Happy embedded resource-ing !

Υ.Γ. Δεν μπορείς να "
πάρεις" το folder. Μόνο τα αρχεία, by full name ! Αν θες να δείς τη λίστα με τα embedded αρχεία, το Assembly class έχει πάλι τις ανάλογες μεθόδους, που σου επιστρέφουν τα ονόματα [assembly paths] όλων των embedded αρχείων [resources].
Angel
O:]