Domanda

Esistono programmi validi da confrontare per compilare assembly .NET?

Ad esempio ho HelloWorld.dll (1.0.0.0) e HelloWorld.dll (2.0.0.0) e voglio confrontare le differenze come posso fare?

So che posso usare .NET Reflector e usare il plugin Assembly Diff. Ci sono altri buoni strumenti là fuori per farlo?

È stato utile?

Altri suggerimenti

Due modi.

Potresti ILDASM e diff con gli strumenti classici.

Oppure potresti usare NDepends, che costerà per quella funzione.

[Bloccatori da Piece a C # ..]

Ho dovuto solo confrontare due revisioni della stessa DLL, che aveva la stessa versione (avevo bisogno di implementare un piccolo aggiornamento rapido e distribuire la DLL in produzione, ma volevo assicurarmi che nessuna altra modifica trapelasse nel codice) . Idealmente, vorrei che il componente aggiuntivo Assemby Diff mi mostrasse la differenza, ma non funziona (pensa che sto confrontando una DLL con se stessa). Quindi questo è quello che ho fatto:

  • Creato due cartelle per contenere i file di origine disassemblati.
  • Utilizzato l'opzione Esporta del Reflector (dal menu contestuale) per generare file di origine da ciascuna DLL nelle cartelle create nel passaggio precedente.
  • Utilizzato lo strumento gratuito DiffMerge per confrontare due directory; gli strumenti mi hanno mostrato i file modificati e la differenza.

È un po 'complicato, ma sembra funzionare. Tuttavia, vorrei che il componente aggiuntivo Assembly Diff funzionasse.

AGGIORNAMENTO: si suppone che l'ultima versione del componente aggiuntivo Assembly Diff risolva il problema del confronto tra due versioni dello stesso assembly. Provalo.

Lo strumento NDepend offre molte funzionalità per gestire la diff del codice .NET. Dichiarazione di non responsabilità: sono uno degli sviluppatori dello strumento .

Il pannello Cerca per modifica è dedicato alla ricerca del codice diff. Si noti che:

  • Puoi collegare a NDepend qualsiasi strumento diff di codice utilizzato dal menu Confronta la versione precedente e più recente del file sorgente
  • Se non si dispone del codice sorgente, solo degli assembly non elaborati, è disponibile l'opzione Confronta versione precedente e più recente smontata con Reflector

Ricerca NDepend per pannello Diff

Notare anche nello screenshot che viene generata una Query di codice CQLinq per sfogliare il diff .

from m in Application.Methods 
where m.CodeWasChanged() 
select new { m, m.NbLinesOfCode }

Molte altre domande e regole diff predefinite sono proposte di default, che ti permetteranno di sfogliare il codice .NET in modo intelligente.

Un'altra opzione è LibCheck di Microsoft.

Strumento di console piuttosto vecchio per ottenere solo diff API pubblica. Non ho potuto eseguire senza il debug e il retargeting a una versione .net più recente. Tuttavia, mi ha dato un output molto chiaro e lo userò in seguito.

Ecco un articolo con schermate .

Java ne ha una bella: Semantic Diff Utilities

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top