segunda-feira, 4 de dezembro de 2006

Abertura dum ficheiro dentro de um DLL

Ando a procura de 1 forma de abrir um ficheiro xml que está dentro de um DLL.
Quero fazê-lo em c#.
Para já, já descobri que tenho que meter o ficheiro xml como "embedded resource" para ele ficar disponivel.
Agora falta-me conseguir abrir esse ficheiro!Se alguem souber que diga por favor :)

6 comentários:

Bruno Silva disse...

Eu tenho codigo pra isso se for no dll em que estás a correr o codigo, noutro caso também não deve ser muito complexo carregando a assembly e acedendo por reflection. Não os detalhes exactos de cabeça aqui, depois se quiseres vejo-te isso.

Unknown disse...

O que pretendo é abrir um ficheiro xml e não uma classe!
No entanto, acho que utilizando o Assembly.getManifestResourceStrem que vou lá! Obrigado na mesma

Unknown disse...

Penso que é isto que pretendes. Foi assim que usei no projecto que te falei.

Stream streamXml = Assembly.GetExecutingAssembly().GetManifestResourceStream("DigitalCatalog.PluginFramework.plugin.xml");

Unknown disse...

Testaste isso que falaste thy?
É que esse caminho que deste até ao plugin.xml parece-me válido quando estamos a falar de classes.
O ficheiro plugin.xml temos possibilidade de lhe atribuir 1 namespace e essas cenas?

Unknown disse...

N está só testado como a ser usado num projecto cá da empresa.
Tudo o que for incluido na assembly vai ter um namespace atribuido. Manualmente ou o default, visivel ou não.
O namespace n é atribuido no ficheiro, mas ao ficheiro dentro da assembly.

Podes ver o que faz o visual studio a uma classe em C# (o VB esconde os namespaces por defeito) caso a cries dentro de pastas num projecto.

A classe C na pasta B do projecto A tem um namespace de A.B.C

Unknown disse...

Já tá testado e funciona.
Aqui está o exemplo que fiz:


Assembly anotherDLL= Assembly.Load("ClassLibrary1");

Stream stream=anotherDLL.GetManifestResourceStream("ClassLibrary1.plugin.xml");

XmlTextReader textreader = new XmlTextReader(stream);