Gebruik. .NET om de geladen assembly te krijgen is onvolledig, hoewel we naar andere libraries verwijzen, maar zonder aanroepen kan het niet worden verkregen in de geladen assembly, dit artikel deelt om de complete assembly in WinForm en ASP.NET te krijgen.
Introductie
Gebruik. .NET om de geladen assembly te krijgen is onvolledig, hoewel we naar andere libraries verwijzen, maar zonder aanroepen kan het niet worden verkregen in de geladen assembly, dit artikel deelt om de complete assembly in WinForm en ASP.NET te krijgen.
ASP.NET (ongemeten)
Het .NET Framework stelt het laden van assemblies uit in het huidige AppDomain totdat ze nodig zijn. Als je bijvoorbeeld alleen een bibliotheek van een derde partij aanroept vanuit SomeMethod(), wordt de derde partij DLL meestal pas geladen na de eerste run van SomeMethod().
AppDomain.GetAssemblies() geeft je alle assemblies die in het huidige AppDomain zijn geladen. BuildManager.GetReferencedAssemblies() levert een lijst terug van alle assemblies die worden verwezen vanuit Web.config en andere locaties, en laadt die assemblies in het huidige AppDomain.
Code:
WinForm
Begin met het gebruik van de onderstaande code om de geladen assembly te krijgen.
Het aantal verkregen Assembly-assemblies is 12, zoals weergegeven in de volgende figuur:
Wanneer we de methoden van andere bibliotheken niet aanroepen, laadt de hoofdapplicatie zijn dll's niet, waarschijnlijk om prestatie-overhead te besparen, dus de eerste keer dat we de methoden van andere bibliotheken aanroepen, kan het iets langzamer zijn.
Gebruik de aangepaste code, als volgt:
Het aantal verkregen assembly-assemblies is 117, en het principe is om de dll onder de applicatiemap te halen en te laden.
In dit geval, wanneer AppDomain.CurrentDomain.GetAssemblies() wordt aangetrokken. ToList()-methode kun je de volledige assembly krijgen, die meer dan 117 kan zijn.
Haal de huidige assemblage
|