Usuário com melhor resposta
Referência de um assembly do tipo executável

Pergunta
-
Tenho um assembly de um projeto referenciado no meu projeto (não é um class library, é um .exe adicionado as referencias), porém agora eu quero buscar todos os Types desta referência, só que o problema é que o comando Assembly.GetReferencedAssemblies() não trás as referências do tipo .exe, ele trás apenas do .dll
Alguém tem ideia de como fazer as referências do tipo .exe também ?
Respostas
-
- Marcado como Resposta Giuvane Conti quinta-feira, 8 de novembro de 2012 17:14
Todas as Respostas
-
Em algum momento você usa algum tipo do assembly referenciado (exe) dentro do teu código? Caso você não use o compilador ignora essa referência e o método GetReferencedAssemblies() não trará mesmo. (Mais) (Mais um pouco)
- Editado Luciano Campos terça-feira, 30 de outubro de 2012 19:19
-
-
-
-
Certo Luciano,
peguei a referência utilizando o LoadFile, agora preciso dar um foreach nos "types" e adicionar em um atributo, desta forma:
var types = newList<Type>();
string path = "C://Teste/bin/Debug/teste.exe"; var externalRerference = Assembly.LoadFile(path);
foreach (var type in externalRerference.GetTypes()) { types.Add(type); }
Porém.. quando vai iniciar a execução dentro do foreach eu tenho o seguinte erro:
Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
Sabe por acaso o motivo de estar apresentando este erro ? pq não posso utilizar o GetTypes() ?
-
-
-
-
-
Eu consegui recuperar apenas as referências do tipo .dll mesmo... .exe não teve jeito!
Eu consegui utilizando o seguinte código:
var assemblies2 = AppDomain.CurrentDomain.GetAssemblies();
foreach (var assembly in assemblies2) { AssemblyName[] referencedAssemblies = assembly.GetReferencedAssemblies(); }
-
Olá Giuvane,
Fiz um teste mais cedo colocando a referência a um exe no projeto e consegui acessar normalmente os seus tipos. O assembly que você está referenciando é um assembly .NET ou COM? Você consegue reproduzir o comportamento em um projeto novo? (Criando 2 assemblies, colocando a referência e buscando pelo GetReferencedAssemblies())
-
Boa tarde Luciano,
cara, estou na seguinte situação, estou carregando o assembly externo, do tipo ClassLibrary mesmo, porém quando eu capturar os componentes do assembly, utilizando o comando assembly.GetTypes() está disparando a seguinte exceção:
Unable to cast COM object of type 'System.__ComObject' to interface type 'IAssemblyCache'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{E707DCDE-D1CD-11D2-BAB9-00C04F8ECEAE}' failed due to the following error: Não há suporte para esta interface (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).
sabe o que pode estar causando isso?
-
- Marcado como Resposta Giuvane Conti quinta-feira, 8 de novembro de 2012 17:14