Pergunta

Eu estou tentando carregar assemblies dinamicamente através da Reflexão.eu tenho pasta de estrutura como esta:

project
  \-- BIN
       |-- myApp.exe
       |-- SOMEEXTENTION1
       |    |-- someExtention1.dll
       |    \-- itsDependency1.dll
       |         
       |-- SOMEEXTENTION2
            |-- someExtention2.dll
            \-- itsDependency2.dll

Eu posso carregar someExtention usando a reflexão.O problema ocorre quando, durante a execução someExtention procura itsDependency.Dot net procura na pasta BIN.Ele não encontrá-lo lá.Appdomain do evento AssemblyResolve é levantada...

Eu sou o véu este evento.Em ResolveEventArgs eu obter o nome do conjunto que precisa ser carregado.o problema é que eu não conseguir o RequestingAssembly.essa propriedade de ResolveEventArgs está sempre vazia.Eu preciso requerente assembleia para que eu possa olhar diretamente em seus próprios EXTN pasta.sem que eu tenha que olhar em todos os EXTN pastas, que no meu caso pode ser muito grande.

RequestingAssembly tem uma propriedade de posição que, de acordo com este artigo do msdn contém o caminho para o arquivo físico. este o artigo também sites de uma situação quando esta propriedade pode ser Nada.Eu não entendo a Carga Contexto discutido ali.

Qualquer ajuda seria apreciável...

Foi útil?

Solução

Desde que eu encontrei com a experimentação (novamente, nenhum resultado de pesquisa em apoio), quando dinamicamente carregar assemblies, o nome da pasta não deve coincidir com o nome do assembly.eu não sei exatamente o que acontece em seguida, mas algo dentro do carregador mecanismo dá errado.

Pela maneira, quando um assembly é carregado com o método LoadFrom, que é carregada de carga a partir do contexto.neste contexto, a dependência assemblies são resolvidos pelo olhar pela primeira vez para a aplicação da base de dados, em seguida, na assembleia da própria pasta.no meu caso isso solvs o problema de resolução de dependências.

o aspecto negativo é que achei que, se a carga de falha para resolver uma dependência e AssemblyResolve evento é acionado, em seguida, solicitar assembleia não estará disponível.isso significa que o caminho-para-pedir-assembly não pode ser determinado.

ao invés de usar de carga de, quando eu usei o método LoadFile, em seguida, as dependências NÃO são automaticamente resolvido da subpasta.Ao invés de evento AssemblyResolve é acionado.neste caso, embora o ResolveEventArgs irá conter o requerente assembleia propriedade.a partir de onde o código de usuário pode facilmente determinar o caminho de destino.em seguida, o código de usuário pode carregar a dependência.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top