Compare os conjuntos compilados .NET?
-
19-08-2019 - |
Pergunta
Existem bons programas lá fora, para comparar a compilação NET assembléias?
Por exemplo, eu tenho helloworld.dll (1.0.0.0) e helloworld.dll (2.0.0.0), e eu quero comparar as diferenças como posso fazer isso?
Eu sei que posso usar .NET Reflector e usar o plugin Assembléia Diff. Existem outras ferramentas boas lá fora para fazer isso?
Solução
maneiras de comparar .NET Assembléias sugere
Comercial:
Free:
- JustAssembly
- BitDiffer
- refletor Diff Add-in (que você já descobriu)
Outras dicas
Duas maneiras.
Você poderia ILDASM e diff com ferramentas clássicas.
Ou você poderia usar NDepends, que vai custar para esse recurso.
[Peça para C # arenques defumados ..]
Eu só tinha que comparar duas revisões do mesmo DLL, que tinha a mesma versão (I necessário para implementar uma pequena correcção, e implantar a DLL na produção, mas eu queria ter certeza de que nenhuma outra alteração vazou em código) . Idealmente, eu gostaria que o Assemby Diff add-in para me mostrar a diferença, mas ele não funciona (ele pensa que eu estou comparando uma DLL para si). Então é isso que eu fiz:
- Criado duas pastas para armazenar arquivos de origem desmontado.
- Usado o Refletor 's Exportar opção (no menu de contexto) para gerar arquivos de origem de cada DLL nas pastas criadas na etapa anterior.
- Usado a livre DiffMerge ferramenta para comparar dois diretórios; as ferramentas me mostrou os arquivos modificados e a diferença.
É um pouco kludgy, mas parece funcionar. Desejo a Assembléia Diff add-in funcionou, apesar de tudo.
UPDATE: A versão mais recente do Diff Assembléia add-in é suposto para corrigir o problema de comparar duas versões do mesmo conjunto. Experimentá-lo.
A ferramenta NDepend oferece muitos recursos para diff código .NET alça. Disclaimer: Eu sou um dos que o desenvolvedor da ferramenta ??em>.
O painel de Busca por Mudança é dedicado aos conjuntos de navegação diff código. Observe que:
- Você pode ligar para NDepend qualquer ferramenta de comparação de código usado pelo menu de Comparar versão mais antiga e mais recente do arquivo de origem
- Se você não tem o código-fonte, apenas as montagens matérias, há a opção Comparar versão mais antiga e mais recente desmontado com refletor
Observe também na imagem que um CQLinq consulta código é gerado para navegar na diff .
from m in Application.Methods
where m.CodeWasChanged()
select new { m, m.NbLinesOfCode }
Muitos outros consultas de comparação por defeito e as regras são propostos por padrão, que permitirá que você navegue .NET diff código de uma maneira inteligente.
- Tipos que costumavam ser 100% coberto, mas não mais
- API Alterações recentes: Métodos
- Evite fazer métodos complexos ainda mais complexa
- Evite diminuindo a cobertura de código por testes de tipos
- A partir de agora, todos os tipos adicionados ou refatorado devem respeitar os princípios básicos de qualidade
- Evite transformando um tipo imutável em um mutável
- heurística para encontrar tipos movidos de um namespace ou assembly para outro
Mais uma opção é LibCheck da Microsoft.
Pretty ferramenta de console velho para apenas começando diff API pública. Eu não poderia funcionar sem depuração e redirecionamento para uma versão mais recente .net. No entanto, ele me deu saída muito claro e eu vou usá-lo mais tarde.
Aqui está um artigo com screenshots .
Java tem uma agradável: Semântica Diff Utilities