Question

Quelqu'un sait-il d'un outil qui me permettrait de générer un rapport des ensembles installés dans le GAC .NET sur tous les serveurs dans ma ferme web? (30-40 serveurs)

Ou bien, quelqu'un at-il un pointeur ou un lien sur un moyen d'accéder aux informations par programmation, via WMI ou requête de registre à distance, ou une autre technologie?

Était-ce utile?

La solution

Merci Kragen, pour laissant entendre que sous le vernis de vue de GAC Explorer, il existait des fichiers que je pourrais interroger avec l'espace de noms System.IO. Heureusement, j'ai accès au réseau à chaque serveur.

Je avais juste besoin, pour un seul ensemble, pour interroger les versions qui existaient dans le GAC sur de nombreux serveurs. Bien que loin d'être une application de reporting complet, cet extrait a servi bien mes objectifs:

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);
                }
            }
        }
    }
}

Cela peut être appelé une fois pour chaque IP d'intérêt du serveur et affiche l'adresse IP, le nom DLL, version Assemblée, et FileVersion à la console.

Ne hésitez pas à prendre ce code et modifier pour vos propres besoins.

Autres conseils

Vous pouvez désactiver la vue par défaut GAC pour la transformer en une vue de l'explorateur normal dans le registre, vient de mettre la valeur suivante à 1:

HKEY_LOCAL_MACHINE\Software\Microsoft\Fusion\

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

Vous pouvez alors il suffit d'utiliser un autre outil de comparaison des dossiers, ou tout simplement travailler à ce que les ensembles sont présents des noms de dossier.

Pour votre information - cela se juste à côté de l'explorateur, mais d'autres points d'interaction avec le système de fichiers (par exemple l'objet fichier dans C #, ou l'invite de commande) voir déjà ce point de vue, donc il ny a pas sans doute besoin de définir cette clé de Registre sur tous vos serveurs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top