referência aplicação do ASP.NET para montagem em conjunto por meio de programação carregado

StackOverflow https://stackoverflow.com/questions/804267

  •  03-07-2019
  •  | 
  •  

Pergunta

aplicativo carrega Meu ASP.NET uma montagem e cria uma instância da classe de um objeto dentro dele. O conjunto em si tem uma referência a um dll chamado "Aspose.Cells.dll" que se pode acessar sem problemas e está localizado no mesmo caminho que o arquivo de montagem em si. No entanto, quando eu faço uma chamada de método para um dos seus métodos eu recebo este erro:

Não foi possível carregar arquivo ou assembly 'Aspose.Cells, versão = 4.1.2.0, Culture = neutral, PublicKeyToken = 9a40d5a4b59e5256' ou uma de suas dependências.

Eu acho que eu preciso fazer minha referência aplicação ASP.NET esta DLL tão bem, mas tudo o que eu tentei até agora falhou. O DLL assembly que é carregado não está localizado dentro da raiz da aplicação web e eu estou esperando que ele não tem que ser.

Eu posso carregar o assembly como esta:

Assembly asm = Assembly.LoadFile(@"D:\Dev\EasyFlow\Plugins\ImportExportLibrary\bin\Debug\Aspose.Cells.dll");

Mas eu não posso usá-lo como este:

AppDomain newDomain = AppDomain.CreateDomain("testAspose");
Assembly asm = newDomain.Load(System.IO.File.ReadAllBytes(@"D:\Dev\EasyFlow\Plugins\ImportExportLibrary\bin\Debug\Aspose.Cells.dll"));

Existe uma maneira melhor de fazer isso?

Update:

Obrigado por suas respostas.

Eu esqueci de mencionar que eu não posso copiar as montagens para a pasta bin ou GAC porque eu quero que ele funcione como um sistema de plugins, onde os conjuntos podem ser substituídos facilmente, alterando o caminho para montagens em um arquivo de configuração e não ter que copiar os arquivos manualmente para o projeto principal.

No entanto, o evento AssemblyResolve parece interessante e vou dar-lhe uma tentativa mais tarde.

Foi útil?

Solução

Existem algumas maneiras de fazer isso. Uma maneira é descrito no artigo Microsoft Knowledge Base " Como carregar um assembly em tempo de execução que está localizado em uma pasta que não seja a pasta bin da aplicação ". Ele fornece um bom método passo-a-passo de como fazer isso.

Outras dicas

Você pode copiar o assembly dependente para a pasta Bin ou instalá-lo no GAC.

Eu estou pensando que você pode adicionar assembly referências ao web.config, na seção , assim:

<compilation debug="true">
  <assemblies>
     <add assembly="Aspose.Cells, Version=4.1.2.0, Culture=neutral,  PublicKeyToken=9a40d5a4b59e5256"/>
  </assemblies>
</compilation>

Eu não estou completamente certo de que esse trabalho vontade, e pode exigir uma entrada correspondente ao web.config em um nó sob .

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