Determinar referências do projeto ao mscorlib
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 ...
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