Domanda

Qualcuno conosce uno strumento che mi permetta di generare un report degli assembly installati su .NET GAC su tutti i server della mia web farm?(30-40 server)

O in alternativa, qualcuno ha un puntatore o un collegamento su un modo per accedere alle informazioni a livello di codice, tramite WMI, query di registro remota o qualche altra tecnologia?

È stato utile?

Soluzione

Grazie Kragen, per aver suggerito che sotto la patina della vista GAC ​​di Explorer, esistevano file che potevo interrogare con lo spazio dei nomi System.IO.Fortunatamente ho accesso alla rete a ciascun server.

Avevo solo bisogno, per un singolo assembly, di interrogare le versioni esistenti nel GAC su molti server.Benché lungi dall'essere un'applicazione di reporting completa, questo snippet ha funzionato bene per i miei scopi:

private static void QueryServerGAC(string IP)
{
    string rootPath = String.Format(@"\\{0}\C$\WINDOWS\Assembly", IP);
    DirectoryInfo root = new DirectoryInfo(rootPath);

    foreach (DirectoryInfo gacDir in root.GetDirectories("GAC*")) // GAC, GAC_32, GAC_MSIL
    {
        foreach (DirectoryInfo assemDir in gacDir.GetDirectories("MyAssemblyName"))
        {
            foreach (DirectoryInfo versionDir in assemDir.GetDirectories())
            {
                string assemVersion = versionDir.Name.Substring(0, versionDir.Name.IndexOf('_'));
                foreach (FileInfo fi in versionDir.GetFiles("*.dll"))
                {
                    FileVersionInfo vi = FileVersionInfo.GetVersionInfo(fi.FullName);
                    Console.WriteLine("{0}\t{1}\t{2}\t{3}", IP, fi.Name, assemVersion, vi.FileVersion);
                }
            }
        }
    }
}

Questo può essere chiamato una volta per ciascun IP del server di interesse e stampa l'IP, il nome DLL, la versione dell'assembly e il FileVersion sulla console.

Sentiti libero di prendere questo codice e modificarlo per i tuoi scopi.

Altri suggerimenti

Puoi disabilitare la vista GAC ​​predefinita per trasformarla in una normale vista Explorer nel registro, basta impostare il seguente valore su 1:

HKEY_LOCAL_MACHINE\Software\Microsoft\Fusion\

(Fonte http://sqlmusings.wordpress.com/2007/11/17/how-to-disable-gac-view/)

È quindi possibile utilizzare semplicemente uno strumento di confronto delle cartelle o semplicemente capire quali assembly sono presenti dai nomi delle cartelle.

Per tua informazione, questo disattiva semplicemente la vista di Explorer, tuttavia altri punti di interazione con il filesystem (ad es.l'oggetto File in C# o il prompt dei comandi) vedono già questa visualizzazione, quindi probabilmente non è necessario impostare questa chiave di registro su tutti i server.

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