Använda. .NET för att hämta den laddade assemblersamlingen är ofullständig, även om vi hänvisar till andra bibliotek, men utan anrop kan den inte erhållas i den laddade assembleren, denna artikel delar för att få den kompletta assemblersamlingen i WinForm och ASP.NET.
Införandet
Använda. .NET för att hämta den laddade assemblersamlingen är ofullständig, även om vi hänvisar till andra bibliotek, men utan anrop kan den inte erhållas i den laddade assembleren, denna artikel delar för att få den kompletta assemblersamlingen i WinForm och ASP.NET.
ASP.NET (omätt)
.NET Framework skjuter upp laddning av assemblies i den aktuella AppDomain tills de behövs. Till exempel, om du bara anropar ett tredjepartsbibliotek från SomeMethod(), kommer tredjeparts-DLL:n vanligtvis inte att laddas förrän vid första körningen av SomeMethod().
AppDomain.GetAssemblies() ger dig alla assembler som har laddats in i den aktuella AppDomain. BuildManager.GetReferencedAssemblies() returnerar en lista över alla assemblies som refererats från Web.config och andra platser, och laddar dessa assemblies till den aktuella AppDomain.
Kod:
WinForm
Börja med att använda koden nedan för att få den laddade assembleren.
Antalet församlingsförsamlingar som erhålls är 12, som visas i följande figur:
När vi inte anropar metoderna från andra bibliotek laddar huvudapplikationen inte sina DLL:er, troligen för att spara prestandaöverhead, så första gången vi anropar metoder från andra bibliotek kan det gå lite långsammare.
Använd den modifierade koden, enligt följande:
Antalet assembly-assemblies som erhålls är 117, och principen är att hämta dll:n under applikationskatalogen och ladda den.
I detta fall, när AppDomain.CurrentDomain.GetAssemblies() anropas. ToList()-metoden kan du få hela sammansättningen, som kan vara mer än 117.
Skaffa den nuvarande sammansättningen
|