Estoy almacenando un PNG como recurso incrustado en un ensamblado. Desde dentro del mismo ensamblado, tengo un código como este:
Bitmap image = new Bitmap(typeof(MyClass), "Resources.file.png");
El archivo, llamado "file.png" se almacena en la carpeta "Recursos" (dentro de Visual Studio) y está marcado como un recurso incrustado.
El código falla con una excepción que dice:
El recurso MyNamespace.Resources.file.png no se puede encontrar en la clase MyNamespace.MyClass
Tengo un código idéntico (en un ensamblado diferente, cargando un recurso diferente) que funciona. Entonces sé que la técnica es sólida. Mi problema es que termino pasando mucho tiempo tratando de averiguar cuál es el camino correcto. Si pudiera simplemente consultar (por ejemplo, en el depurador) el ensamblado para encontrar la ruta correcta, eso me ahorraría un montón de dolores de cabeza.
Me encuentro olvidando cómo hacer esto cada vez, así que simplemente envuelvo las dos frases breves que necesito en una pequeña clase:
fuente
Supongo que tu clase está en un espacio de nombres diferente. La forma canónica de resolver esto sería usar la clase de recursos y un recurso fuertemente tipado:
Utilice el administrador de recursos del IDE para agregar recursos.
fuente
Utilizo el siguiente método para obtener recursos integrados:
Luego llamo a esto con la ruta en el proyecto:
fuente
El nombre del recurso es el espacio de nombre más el "pseudo" espacio de nombre de la ruta al archivo. El "pseudo" espacio de nombres lo crea la estructura de subcarpetas usando \ (barras invertidas) en lugar de. (puntos).
La siguiente convocatoria:
devolverá el flujo de my.xml ubicado en la estructura de carpetas resources \ xml en el espacio de nombres: my.namespace.
fuente