Estou armazenando um PNG como um recurso incorporado em um assembly. Dentro da mesma montagem, tenho alguns códigos como este:
Bitmap image = new Bitmap(typeof(MyClass), "Resources.file.png");
O arquivo, denominado "file.png", é armazenado na pasta "Recursos" (no Visual Studio) e é marcado como um recurso incorporado.
O código falha com uma exceção dizendo:
O recurso MyNamespace.Resources.file.png não pode ser encontrado na classe MyNamespace.MyClass
Eu tenho um código idêntico (em uma montagem diferente, carregando um recurso diferente) que funciona. Portanto, sei que a técnica é sólida. Meu problema é que acabo gastando muito tempo tentando descobrir qual é o caminho correto. Se eu pudesse simplesmente consultar (por exemplo, no depurador) o assembly para encontrar o caminho correto, isso me pouparia um monte de dores de cabeça.
Eu me pego me esquecendo de como fazer isso todas as vezes, então eu apenas envolvo as duas linhas que preciso em uma pequena aula:
fonte
Suponho que sua classe esteja em um namespace diferente. A maneira canônica de resolver isso seria usar a classe de recursos e um recurso fortemente tipado:
Use o gerenciador de recursos do IDE para adicionar recursos.
fonte
Eu uso o seguinte método para obter recursos incorporados:
Em seguida, chamo isso com o caminho no projeto:
fonte
O nome do recurso é o namespace mais o "pseudo" namespace do caminho para o arquivo. O espaço de nome "pseudo" é criado pela estrutura de subpasta usando \ (barras invertidas) em vez de. (pontos).
A seguinte chamada:
retornará o fluxo de my.xml localizado na estrutura de pastas resources \ xml no espaço de nomes: my.namespace.
fonte