Come firmare un file DLL dell’Assembly .NET con un nome sicuro?

Ho un assembly che non ha un nome sicuro. Non ho codice sorgente per questo.

Ora ho bisogno che sia firmato. C’è un modo per fare questo?

Se l’assembly originale è contrassegnato per la firma ritardata, è ansible utilizzare lo strumento sn.exe.

Se l’assembly originale non è così marcato, puoi disassemblarlo con ildasm.exe, quindi riassemblarlo con ilasm.exe e specificare l’argomento / key. Riferimenti: [1] [2] .

Esempio:

> ildasm /all /out=MYASSEMBLY.il MYASSEMBLY.dll > ilasm /dll /key=key.snk MYASSEMBLY.il 

Un modo semplice per firmare l’assemblaggio di terze parti sta utilizzando la versione GUI di Assembly Strong Name Signer , disponibile qui: http://brutaldev.com/post/2013/10/18/NET-Assembly-Strong-Name-Signer .

Il suo codice sorgente è disponibile su Github. Usa Mono.Cecil per il lavoro sporco. Disponibile anche come strumento da command line .

Ho trovato il ildasm raccomandato -> il ilasm rotondo ilasm suggerito in molti posti ingombranti e meglio da evitare.

Non so come Assembly Strong Name Signer gestisca le dipendenze multi-assembly. In caso contrario, il problema e la soluzione sono descritti qui (pubblicato nel 2008): http://buffered.io/posts/net-fu-signing-an-unsigned-assembly-without-delay-signing/

Utilizzare l’utilità Strong Name Tool ( sn.exe ).

Dai un’occhiata al mio StrongNameResigner . Può firmare o rassegnare un assembly e tutti gli assembly che dipendono da esso mentre aggiorna anche tutti i riferimenti usando un comando del genere:

 StrongNameResigner.exe -a "c:\temp" -k "key.snk" Foo.Bar 
 You can sign the assembly with the help of VS command prompt. Just type the path in VS cmd prompt where your project is physically present. In VS cmd sn -k .snk Then go to your project in Solution Explorer -> properties -> Signing -> check checkbox -> Browse to the key which is created using VS cmd.