Перечисление ресурсов сборки .NET во время выполнения

У меня есть assembly ресурсов с файлами изображений в нем, которые создаются с использованием действия по созданию ресурсов или содержимого . Это делает эти файлы доступными с помощью Uris. Однако я не могу найти способ перечислить такие ресурсы.
Если я устанавливаю действие сборки в Embedded Resource, становится возможным перечислить файлы со следующим кодом:

string[] resources = Assembly.GetExecutingAssembly().GetManifestResourceNames(); 

но это, в свою очередь, делает эти файлы недоступными с использованием Uris.

Вопрос в том, как перечислить ресурсы, которые скомпилированы с использованием ресурса или контента ?

ПРИМЕЧАНИЕ. Как отметил Томас Левеск, можно перечислить такие ресурсы, используя атрибут AssemblyAssociatedContentFileAttribute, но, похоже, работает только в assemblyх приложений WPF, а не в библиотеках classов. Поэтому вопрос все еще открыт.

Вы можете перечислять атрибуты AssemblyAssociatedContentFile определенные на сборке:

 var resourceUris = Assembly.GetEntryAssembly() .GetCustomAttributes(typeof(AssemblyAssociatedContentFileAttribute), true) .Cast() .Select(attr => new Uri(attr.RelativeContentFilePath)); 

Вы также можете проверить эту страницу , чтобы перечислить ресурсы BAML.


UPDATE: на самом деле решение выше работает только для файлов Content. Метод belows возвращает все имена ресурсов (включая ресурсы BAML, изображения и т. Д.):

  public static string[] GetResourceNames() { var asm = Assembly.GetEntryAssembly(); string resName = asm.GetName().Name + ".g.resources"; using (var stream = asm.GetManifestResourceStream(resName)) using (var reader = new System.Resources.ResourceReader(stream)) { return reader.Cast().Select(entry => (string)entry.Key).ToArray(); } } 
  • В чем разница между StaticResource и DynamicResource в WPF?
  • Атрибут DisplayName из ресурсов?
  • Предпочтительный способ загрузки ресурсов в Java
  • getResourceAsStream возвращает null
  • Как получить доступ к статическим ресурсам при сопоставлении глобального сервлет-controllerа на / *
  • Как правильно использовать ClassLoader.getResources ()?
  • android.view.InflateException: двоичная строка XML-файла # 12: ошибка раздувания classа
  • Spring: обслуживание статических ресурсов вне контекста root
  • Загрузите ресурс, содержащийся в банке
  • Доступ к сетевому ресурсу из VBScript, например, FileSystemObject
  • Программно изменить значение цветового ресурса, полученного из ответа API
  • Давайте будем гением компьютера.