Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1551 | Anzahl registrierter User: 1841 | Besucher online: 180
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Liefert alle Assemblies aus dem Global Assembly Cache (GAC)


Autor: Thomas van Veen
Sprache: C#
Bewertung: 6,6
(1 Bewertung)
Anzahl der Aufrufe: 9085
  
Kick it on dotnet-kicks.de  

Beschreibung:

Diese Klasse liefert eine generische Liste mit allen Assemblies, die im Global Assembly Cache (GAC) installiert sind.

Abgelegt unter: GAC, Global Assembly Cache, Fusion, Reflection, Registry, Assembly.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
    /// <summary>
    /// Enthält Klassen und Methoden zur Auswertung des Fusion Cache 
    /// </summary>
    public static class Fusion
    {
        /// <summary>
        /// Liefert alle im Global Assembly Cache (GAC) installierte Assemblies.
        /// </summary>
        /// <returns>Liefert eine generische Liste mit AssemblyName-Objekten.</returns>
        public static List<AssemblyName> GetAssembliesFromGAC()
        {
            List<AssemblyName> assemblyNames = new List<AssemblyName>();

            RegistryKey localMaschine = Registry.LocalMachine;
            RegistryKey registryKey = localMaschine.OpenSubKey(@"SOFTWARE\Microsoft\Fusion\GACChangeNotification\Default");

            foreach (string valueName in registryKey.GetValueNames())
            {
                if (registryKey.GetValueKind(valueName) == RegistryValueKind.Binary)
                {
                    AssemblyName assemblyName = new AssemblyName(valueName.Split(",".ToCharArray())[0]);
                    assemblyName.Version = new Version(valueName.Split(",".ToCharArray())[1]);

                    if (string.IsNullOrEmpty(valueName.Split(",".ToCharArray())[2]) == false)
                    {
                        assemblyName.CultureInfo = new System.Globalization.CultureInfo(valueName.Split(",".ToCharArray())[2]);
                    }

                    assemblyName.KeyPair = new StrongNameKeyPair(valueName.Split(",".ToCharArray())[3]);

                    if (valueName.Split(",".ToCharArray()).Length > 4)
                    {
                        if (string.IsNullOrEmpty(valueName.Split(",".ToCharArray())[4]))
                        {
                            assemblyName.ProcessorArchitecture = ProcessorArchitecture.None;
                        }
                        else
                        {
                            switch (valueName.Split(",".ToCharArray())[4].ToUpper())
                            {
                                case "AMD64":
                                    assemblyName.ProcessorArchitecture = ProcessorArchitecture.Amd64;
                                    break;
                                case "IA64":
                                    assemblyName.ProcessorArchitecture = ProcessorArchitecture.IA64;
                                    break;
                                case "MSIL":
                                    assemblyName.ProcessorArchitecture = ProcessorArchitecture.MSIL;
                                    break;
                                case "X86":
                                    assemblyName.ProcessorArchitecture = ProcessorArchitecture.X86;
                                    break;
                            }
                        }
                    }

                    assemblyNames.Add(assemblyName);
                }
            }

            return assemblyNames;
        }
    }
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)



Diese Snippets könnten für Sie interessant sein:
[C#] Kompilierung zur Laufzeit
[C#] Generische Liste per Reflection erzeugen
[C#] Generische Extension zum Auslesen eines Klassen-Attributes
[C#] XML-Programmkonfiguration / -Steuerung
[C#] Versionsnummer der Assembly ermitteln
[VB.NET] Funktion an Hand des Names ausführen
[C#] Ruft eine Methode in einer externen DLL anhand der Namen auf
[C#] Transactionen mit mehreren TableAdaptern
[C#] Reflektion und Generika
[C#] Dateiname des aktuellen Programms ermitteln
[C#] Generic Type Creator
[C#] Aktuelle Methode mit StackTrace ermitteln
[C#] Using the Registry
[VB.NET] Einen Eintrag aus der Registy löschen
[VB.NET] Registryschlüssel löschen
[VB.NET] Einträge eines Registryschlüssels Enumerieren
[VB.NET] Anzahl der Einträge eines Registryschlüssels ermitteln
[C#] UserID des aktuellen Benutzers ermitteln
[VB.NET] Bestimmte Registry Keys oder Values überwachen
[VB.NET] Nützliches aus der Registry
[C#] Add/Remove registry entries for windows startup.
[VB.NET] Audio und Video Codecs auflisten
[C#] OpenSubKey mit Create
[C#] Windows CD Key auslesen
[VB.NET] Autostart with windows Property
[C#] Registery Nach einem Value durchsuchen
[VB.NET] Autostarteintrag schreiben
[C#] Kompilierzeit ermitteln
[C#] Shadow Copying
[VB.NET] Shadow Copying
[C#] Alle geladenen Assemblies ermitteln
[C#] Loads an embedded resource file of the calling assembly.
[VB.NET] Assembly Verzeichnis
[C#] Assembly Verzeichnis
[C#] .NET Komponente für COM zur Verfügung stellen
[VB.NET] Assembly Verzeichnis 2
[C#] GUID des aktuellen Assembly ermitteln
[C#] Windows Forms Anwendungs-Sessions verwalten
[VB.NET] Eigene Form aus ClassLibrary DLL Aufrufen

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.