Eu tenho uma dll antiga que foi compilada na estrutura .NET e implantada. Não tenho certeza em qual versão do .NET framework foi compilada. Gostaria de saber como posso determinar em qual versão do .NET framework essa dll foi compilada? Não posso confiar no código-fonte porque acredito que ele foi atualizado para o Visual Studio 2008 e alterado para o .NET framework versão 3.5.
.net
.net-framework-version
mpenrow
fonte
fonte
Respostas:
Carregue-o no Reflector e veja o que ele faz referência?
por exemplo:
fonte
No PowerShell, você pode usar o seguinte para obter o tempo de execução de destino:
Adaptei isso ao PowerShell a partir da resposta de Ben Griswold .
Se você deseja conhecer a versão da estrutura de destino especificada no Visual Studio, use:
Você deve obter algo como
fonte
O dotPeek é uma ótima ferramenta (gratuita) para mostrar essas informações.
Se você está tendo alguns problemas para se apossar do Reflector, essa é uma boa alternativa.
fonte
Você pode usar o ILDASM ...
e verifique a seção "Metadados" na saída. Seria algo como isto:
A tag 'version' informará a versão do .NET Framework. No exemplo acima, é 4.0.30319
fonte
// Metadata section: 0x424a5342, version: 1.1, extra: 0, version len: 12, versio n: v4.0.30319
Você tem algumas opções: para obtê-lo programaticamente, a partir do código gerenciado, use Assembly.ImageRuntimeVersion:
Na linha de comando, começando na v2.0, o ildasm.exe o mostrará se você clicar duas vezes em "MANIFEST" e procurar "Versão dos metadados". Determinando a versão CLR de uma imagem
fonte
Use o ILSpy http://ilspy.net/
código aberto, gratuito, definitivamente uma opção, já que agora o refletor é pago.
fonte
Simplesmente
fonte
GetCustomAttributes
não tem aTargetFrameworkAttribute
. Porém, o ImageRuntimeVersion funciona bem, ele recupera o CLR correto para o qual o binário foi criado. Eu preciso da versão da estrutura de destino para a qual ela foi criada.Ainda outra opção via Visual Studio, adicione uma referência à DLL a qualquer projeto, clique com o botão direito do mouse na nova referência e clique em Propriedades, para ver o que você está procurando na versão Runtime:
fonte
Descompile-o com o ILDASM e observe a versão do mscorlib que está sendo referenciada (deve estar praticamente no topo).
fonte
A maneira mais simples: basta abrir o .dll em qualquer editor de texto. Veja uma das últimas linhas:
fonte
Eu rapidamente escrevi este aplicativo de console em C # para fazer isso:
https://github.com/stuartjsmith/binarydetailer
Basta passar um diretório como parâmetro e ele fará o possível para informar a estrutura da rede para cada dll e exe lá
fonte
" Detect It Easy ", também conhecido como DiE, é um programa para determinar tipos de arquivos. Funciona com arquivos .dll ou outros arquivos (.exe). Absolutamente livre para uso comercial e não comercial.
fonte
Se tiver
DotPeek
deJetBrains
, você pode vê-lo emAssembly Explorer
.fonte
Expandindo as respostas aqui, isso pode explodir se houver uma montagem dependente. Se você tiver sorte e souber onde está o dependente (ou ainda mais, está no GAC), isso pode ajudar ...
Referência: https://weblog.west-wind.com/posts/2006/Dec/22/Reflection-on-Problem-Assemblies
fonte