Pergunta sobre .net – Verificando dependências externas em vb.net

1

Algo que eu realmente nunca fiz antes, mas qual é a melhor maneira de ter certeza de que qualquer assembly / dll externo que meu aplicativo usa esteja disponível, e possivelmente a versão correta.

Eu escrevi um aplicativo que se baseia no System.Data.SQLite.dll, fui testá-lo em uma máquina onde essa dll estava faltando, e meu aplicativo apenas lançou uma exceção de tempo de execução porque a dll estava faltando. Como posso capturar esse erro?

Sua resposta

4   a resposta
1

ode ser carregada na memória. Envolva isso em um bloco try..catch e manipule qualquer uma das exceções específicas que vêm dele.

Try
    Assembly.Load("System.Data.SQLite, Version=1.0.22.0, Culture=neutral, PublicKeyToken=DB937BC2D44FF139");
Catch ex As FileNotFoundException
    //do something here
End Try
0

ra seu aplicativo. Isso analisaria todas as dependências estáticas e produziria um instalador que garantisse que a máquina de destino recebesse tudo de que precisa.

1

porque isso é principalmente tudo a partir do meu instinto, e eu provavelmente perdi um passo crucial em algum lugar)

Resposta curta: Em geral, é uma boa ideia implantar suas dependências junto com seu aplicativo, usando um instalador. Sem eles, como você percebeu, há pouquíssima chance de seu aplicativo funcionar.

Resposta longa: Ok, digamos que você tenhaextra funcionalidade que você deseja fornecer se houver algo mais instalado na máquina de destino. Veja algumas diretrizes gerais para fazer isso:

Para qualquer tipo que tenha um campo, propriedade, evento, parâmetro ou valor de retorno que faça referência a um tipo definido no assembly possivelmente desinstalado: deve ser empacotado com uma interface e substituir todos os outros campos, parâmetros, valores de retorno ou locais declarações de variáveis ​​para usar a interface.

Toda vez que você for construir uma das classes previamente envolvidas, você deve usar oSystem.Activator.CreateInstance método, e envolvê-lo em um filtro try / catch em 7 tipos diferentes de exceção:

FileNotFoundExceptionFileLoadExceptionBadImageFormatExceptionTypeLoadExceptionMissingMethodExceptionMissingMemberExceptionMissingFieldException

Se um deles for detectado, você deve fornecer uma implementação alternativa da interface criada anteriormente ou gravar seu código para verificar se há nulo sempre que fizer referência a esse objeto.

Obrigado por essa explicação, mal uso o código de exemplo fornecido por Josh, mas esta informação é muito útil também beakersoft
0


Ou se você quiser enviar / localizar seus próprios conjuntos, você pode tentar substituir a análise da montagem:Ligação.

Perguntas relacionadas