Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 2833|Svar: 1

[.NET Core] .NET/C# implementerer DLL-plugin-hotopdateringer baseret på AssemblyLoadContext

[Kopier link]
Opslået den 28-6-2024 14:28:33 | | | |
Krav: Forretningslogikken er kompleks og kræver tilpasning, og for sådan logik kan baggrunden i en separat DLL-assembly dynamisk opdatere samlingen og udføre den nyeste logik.

.NET Core understøtter ikke dynamisk oprettelse og aflæsning af AppDomains som .NET Framework, så der har aldrig været en god måde at hotloade plugins på, men den gode nyhed er, at .NET Core har understøttet Collectible Assembly siden 3.0, og vi kan oprette en genvindelig AssemblyLoadContext, som vi kan bruge til at indlæse og aflaste assemblies.

AssemblyLoadContext-klassen:Hyperlink-login er synlig.

Først skal du oprette en ny konsol og tre biblioteker, nemlig:ConsoleApp6ClassLibraryStandardClassLibrary1KlasseBibliotek2, hvoraf ClassLibrary1- og ClassLibrary2-bibliotekerne arver IWorker-grænsefladen i ClassLibraryStandard og implementerer Run-metoden.

ClassLibraryStandard-kode:

ClassLibrary1-kode:

ClassLibrary2-kode:

ConsoleApp6-konsolkoden er som følger:

Konsollen åbner Run-metoden med 3 tråde i DLL-plugin'et, som konstant kører dynamisk, og bruger log4net til at registrere outputresultaterne, og kører det derefter i konsollenErstat DLL'en med det nyeste bibliotek efter 3 sekunder

Efter at have kørt konsollen i 1 sekund eller 5 sekunder, outputtes samlingen af den aktuelle AssemblyLoadContext-instans, som er det indlæste DLL-bibliotek.

Som vist nedenfor:



Du kan se, at programmet ikke har noget unormalt output, og der er ingen situation, hvor plugin'et ikke kan findes under eksekveringen. Grunden til, at log4net registrerer eksekveringsresultaterne, er, at konsollen er blokeret, og for at sikre, at de 3 tråde kan eksekvere kontinuerligt, bruges log4net til at registrere eksekveringsresultaterne, som vist i figuren nedenfor:



2024-06-28 14:24:36,606 INFO 11 RollingFile - 1
2024-06-28 14:24:36,606 INFO 10 RollingFile - Start afinstallation
2024-06-28 14:24:36,606 INFO 13 RollingFile - 1
2024-06-28 14:24:36,606 INFO 13 RollingFile - 1
2024-06-28 14:24:36,606 INFO 13 RollingFile - 1
2024-06-28 14:24:36,606 INFO 11 RollingFile - 1
2024-06-28 14:24:36,606 INFO 11 RollingFile - 1
2024-06-28 14:24:36,606 INFO 13 RollingFile - 1
2024-06-28 14:24:36,606 INFO 13 RollingFile - 1
2024-06-28 14:24:36,606 INFO 13 RollingFile - 1
2024-06-28 14:24:36,606 INFO 10 RollingFile - AssemblyLoadContext_Unloading
2024-06-28 14:24:36,606 INFO 13 RollingFile - 1
2024-06-28 14:24:36,606 INFO 13 RollingFile - 1
...
2024-06-28 14:24:36,607 INFO 12 RollingFile - 1
2024-06-28 14:24:36,607 INFO 13 RollingFile - 1
2024-06-28 14:24:36,607 INFO 12 RollingFile - 1
2024-06-28 14:24:36,606 INFO 10 RollingFile - Afinstaller fuldført
2024-06-28 14:24:36,607 INFO 12 RollingFile - 1
2024-06-28 14:24:36,607 INFO 12 RollingFile - 1
...
2024-06-28 14:24:36,607 INFO 12 RollingFile - 1
2024-06-28 14:24:36,607 INFO 13 RollingFile - 1
2024-06-28 14:24:36,607 INFO 12 RollingFile - 1
2024-06-28 14:24:36,607 INFO 13 RollingFile - 1
2024-06-28 14:24:36,607 INFO 12 RollingFile - 1
2024-06-28 14:24:36,606 INFO 11 RollingFile - 1
2024-06-28 14:24:36,607 INFO 13 RollingFile - 2
2024-06-28 14:24:36,607 INFO 12 RollingFile - 2

Vedhæftet config.xml konfiguration:

(Slut)




Tidligere:Om QRCODE QR-kode fejltoleranceniveau
Næste:.NET/C# bruger PDFsharp til at sammenflette flere PDF-filer til én
 Udlejer| Opslået den 6-7-2024 16:59:30 |
Brug Roslyn til dynamisk at kompilere C#-kode og køre den
https://www.itsvse.com/thread-10786-1-1.html
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com