2013-04-11 24 views

Odpowiedz

10

Zasoby są zwracane w następującym formacie.

[Namespace].[Folder].[Filename] 

Należy pamiętać, że wszystkie foldery na ścieżce są oddzielone znakami .. Więc jeśli miał wbudowany zasób o następującej konfiguracji

 
myproject.csproj (Namespace = com.mycompany.myproject) 
- Resources 
    - Images 
    - Icons 
     - my_icon.ico 

Nazwa zasobu byłyby ...

com.mycompany.myproject.Resources.Images.Icons.my_icon.ico 

Jeśli chcesz wybrać wszystkie z określonego folderu, można wykorzystać następujące LINQ wyrazić lub zmodyfikować zgodnie z własnymi potrzebami.

string prefix = "your_namespace.your_folder." 

var resourceNames = Assembly.GetExecutingAssembly() 
    .GetManifestResourceNames() 
    .Where(name => name.StartsWith(prefix)); 
+0

Ten kod wygeneruje błąd, ponieważ nie można przekonwertować IEnumerable ciąg. Poza tym nie uwzględnia więcej niż jednego pliku w tym samym folderze – Flavia

+0

Ups, wkleił ten kod z innego projektu i zapomniał zmodyfikować typ. Poprawiłem to teraz. –

+0

Teraz zasługuje na głos :) – Flavia

3

Jeśli utworzyć folder o nazwie Obrazy i umieścić tam plik, a następnie nazwę zasobu staje Assembly.Images.fileName.

Więc można spróbować czegoś takiego:

var assembly = System.Reflection.Assembly.GetExecutingAssembly(); 

var names = assembly.GetManifestResourceNames().Where (n => n.Contains(".Images."));