Pergunta

Ei pessoal, eu tenho um projeto de site do ASP.NET que, por algum motivo, está insistindo em referenciar o MSCORLIB 1.0.5 e o Mscorlib 2.0, e não consigo descobrir o porquê.

Analisei todas as DLLs referenciadas usando o NDepend, e todos parecem apenas referenciar o MSCORLIB 2.0. Eu tenho algumas referências na web, mas não consigo imaginar por que isso criaria uma referência adicional à DLL 1.0.

Alguém tem alguma idéia de por que eu estaria recebendo essa referência adicional ou o que posso usar para descobrir essas informações? O NDepend é ótimo, mas apenas volta e diz "Encontre duas referências, usando a versão mais recente", por isso não me ajuda a descobrir por que tenho a referência extra ...

Foi útil?

Solução

Eu acho que neste momento sua melhor aposta é usar o iLdasm. O uso do ILDASM na montagem trará um nó chamado "Manifest". Clique duas vezes nesse nó e ele despejará a representação da IL das referências de montagem, incluindo o número da versão referenciada. Repita isso para todas as suas DLLs até encontrar o que referencia a versão 1.0.

EDITAR

Outra solução possível seria enumerar o Assembly valores e lá associados GetReferencedAssemblies método. Isso retornará uma variedade de AssemblyName valores que possuem um membro da versão correspondente. Isso deve conter a versão real do assembly referenciado versus o que foi realmente carregado.

Não tenho 100% de certeza sobre esse assunto e não tenho uma maneira conveniente de testá -lo agora.

Outras dicas

Tente remover a referência e recompilar - isso dirá o que (se alguma coisa) depende da versão mais antiga.

Uma referência errante pode residir no seu arquivo web.config.

Gentileza,

Dan

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