Pergunta

Mantendo as coisas simples, suponha que não há dlls na pasta local, ou arquivos de configuração envolvidos ou políticas do editor ou resolução personalizada. O único lugar referenciado DLLs é no GAC.

Como a fusão decide qual versão das DLLs no GAC para ir para (todas as outras coisas iguais), qual é a ordem de prioridade?

Por exemplo, se no meu projeto, referenciei uma DLL da versão 10.5.0.0. Escolheria a DLL da versão 10.5.0.0 ou 10.5.1.0. Alternativamente, se eu tivesse apenas a versão 10.4.0.0 no GAC, funcionaria ou lançaria um erro? Essas regras mudam dependendo se é a parte principal / menor / de construção / revisão que muda?

Como isso difere se a referência do projeto "Versão específica" estiver definida como True ou False?

e como isso difere se a referência é uma referência de referência ou projeto DLL?

Eu estou supondo que há um site do MSDN em algum lugar afirmando como isso funciona, mas eu não consigo encontrá-lo. Eu não estou olhando para substituir o comportamento, só quero saber qual é o comportamento padrão.

Foi útil?

Solução

Está documentado no MSDN em como o tempo de execução Localiza assemblies . Em particular, o GAC é pesquisado apenas se a montagem for carregada usando um nome forte. Pode ainda haver políticas do editor em vigor que "redireciona" para outra assembléia, mas não há regras automáticas no lugar.

Na minha opinião, o GAC é apenas algo que deve ser usado pela Microsoft para o .NET Framework e você pode remover muita dor distribuindo sua inscrição ou biblioteca sem usar o GAC (exceto o .NET Framework, é claro) .

Referenciando uma versão específica de uma montagem é uma propriedade de tempo de construção e ela não afeta o comportamento de tempo de execução. No entanto, quando uma referência de montagem é compilada em um executável, a versão é armazenada no tempo executável e no prazo de execução em que a versão específica é carregada (após as regras de redirecionamento de montagem foram aplicadas).

So para resumir: Para que o .NET carregue outra versão do assembly solicitado, tem que haver um montagem redirecionamento no lugar. Seu aplicativo pode fornecer redirecionamentos no arquivo app.config e o GAC pode ter políticas do Publisher.

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