Ho installato un programma di terze parti sul mio computer. Ho aperto una delle DLL di che viene fornito con questo programma in Ildasm.exe e ispezionato il manifesto:Come posso trovare quale mscorlib.dll sta utilizzando un programma?
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89) // .z\V.4..
.ver 2:0:0:0
}
Così il programma utilizza sia .net 2.0, 3.0 o 3.5.
Ho cercato mscorlib.dll sul mio computer e ho trovato 61 file.
Come individuare quale di questi file .dll sta effettivamente utilizzando?
Ho anche notato che un gruppo di questi sono in directory denominata: C: \ Program Files (x86) \ Riferimento Assemblies \ Microsoft \ Framework.NETPortable \ v4.0 \ Profilo \ ProfileXXX \ mscorlib.dll, dove XXX è un numero di 1-3 cifre.
Cosa sta succedendo qui? Potrei capire che ogni versione .net (2.0, 3.0, 3.5 ...) avrebbe un file diverso ma non dovrebbe aggiungere fino a 61 file. Qual è la differenza tra ciascuno di questi profili?
È questo l'aspetto della soluzione .net del problema di inferno .dll? Un sacco di versioni dello stesso file + chiavi pubbliche per identificare in modo sicuro il file .dll.
Chi cancella i file .dll che non vengono più utilizzati? Sembra che potenzialmente ogni programma abbia la sua versione di .net. Deve riempire il disco alla fine?
Hai già provato [Fusion Log viewer] (http://msdn.microsoft.com/en-us/library/e74a18c4%28VS.80%29.aspx)? Non ho guardato Se questo può essere usato per controllare mscorlib.dll però. http://stackoverflow.com/a/3952202/255562 –
Sembra un duplicato, anche se queste risposte hanno diversi anni e potrebbero non essere aggiornate. http://stackoverflow.com/questions/227886/how-do-i-determine-the-dependencies-of-a-net-application – Almo
Grazie Ashish! Secondo questo strumento il programma utilizza C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ mscorwks.dll. Un nome diverso da mscorlib.dll che è un po 'strano ma ok. Inoltre dice che ha trovato l'assemblea guardando in GAC. – Andy