Entwickler-Ecke

Sonstiges (.NET) - Ermitteln der ersten von der CLR gestarteten Assembly


Ralf Jansen - Do 12.07.12 11:15
Titel: Ermitteln der ersten von der CLR gestarteten Assembly
In einer Standard .Net Applikation kann man ja mit Assembly.GetEntryAssembly() die Assembly mit dem Entrypoint der App ermitteln. Wenn es sich zum Beispiel um ein Office Add-In oder eine Anwendung mit einem unmanaged Host der selbst die CLR startet handelt funktioniert das logischerweise nicht. Für eine allgemeine Loggingfunktionalität bräuchte ich eine Methode die mir die erste gestartet Assembly liefert egal wie die gestartet wurde. Scheint da nichts fertiges im Framework zu geben. Ideen?


Th69 - Do 12.07.12 12:55

Hallo Ralf,

hast du schon mal geschaut, ob die AppDomain.GetAssemblies-Methode die Assemblies evtl. in dieser Reihenfolge ausgibt (so daß dann die erste Assembly die Start-Assembly ist)?


Ralf Jansen - Do 12.07.12 14:49

Scheint eigentlich zu stimmen (ausprobiert mit 2.0, 4.0 in Debug&Release und mit Debugger Attached) . Wenn man mal die ganzen Framework Assemblies (mscorlib etc.) ignoriert wäre die erste nicht Framework Assembly diejenige die ich brauche. Aber das hängt natürlich an einem Implementierungsdetail das man nicht einsehen kann (und sich jederzeit bei irgendeinem Update des Frameworks ändern könnte). Etwas das per Definition stabilere Ergebnisse liefert wäre mir lieber.


gfoidl - Do 12.07.12 21:07

Hallo Ralf,

am sichersten bekommst du die Information vom Fuslogvw.exe (Assembly Binding Log Viewer) [http://msdn.microsoft.com/en-us/library/e74a18c4.aspx]. Dir fällt dann sicher ein Weg ein, wie diese Info automatisiert ins Log kommt.

mfG Gü


Ralf Jansen - Fr 13.07.12 10:29

Gegen fuslogvw sprechen leider mindestens 2 Sachen. Man benötigt Adminrechte und es gehört zum SDK und nicht zum Framework. Das macht es für den Einsatz in einer Anwendung eher ungeeignet.