Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 2833|Svare: 1

[.NET Core] .NET/C# implementerer DLL-plugin-hot updates basert på AssemblyLoadContext

[Kopier lenke]
Publisert 28.06.2024 kl. 14:28:33 | | | |
Krav: Forretningslogikken er kompleks og krever tilpasning, og for slik logikk kan bakgrunnen i en separat DLL-assembler dynamisk oppdatere samlingen og kjøre den nyeste logikken.

.NET Core støtter ikke dynamisk opprettelse og avlasting av AppDomains slik som .NET Framework, så det har aldri vært en god måte å hotloade plugins på, men den gode nyheten er at .NET Core har støttet Collectible Assembly siden 3.0, og vi kan lage en gjenvinnbar AssemblyLoadContext som vi kan bruke til å laste og tømme assemblies.

AssemblyLoadContext-klassen:Innloggingen med hyperkoblingen er synlig.

Først, lag en ny konsoll og tre biblioteker, nemlig:ConsoleApp6ClassLibraryStandardClassLibrary1KlasseBibliotek2, blant annet arver ClassLibrary1- og ClassLibrary2-bibliotekene IWorker-grensesnittet i ClassLibraryStandard og implementerer Run-metoden.

ClassLibraryStandard-kode:

ClassLibrary1-kode:

ClassLibrary2-kode:

ConsoleApp6-konsollkoden er som følger:

Konsollen åpner Run-metoden med 3 tråder i DLL-pluginen som kontinuerlig kjører dynamisk, og bruker log4net for å registrere resultatene, og kjører det deretter i konsollenErstatt DLL-en med det nyeste biblioteket etter 3 sekunder

Etter å ha kjørt konsollen i 1 sekund eller 5 sekunder, blir samlingen av den nåværende AssemblyLoadContext-instansen utdata, som er det lastede DLL-biblioteket.

Som vist nedenfor:



Du kan se at programmet ikke har noen unormal utdata, og det finnes ingen situasjon der pluginen ikke kan finnes under kjøringen. Grunnen til at log4net registrerer utførelsesresultatene er fordi konsollen er blokkert, og for å sikre at de 3 trådene kan kjøres kontinuerlig, brukes log4net til å registrere utførelsesresultatene, 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 avinstallasjon
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 - Avinstaller fullfø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

Festet config.xml konfigurasjon:

(Slutt)




Foregående:Om QRKODE QR-kode feiltoleransenivå
Neste:.NET/C# bruker PDFsharp for å slå sammen flere PDF-filer til én
 Vert| Publisert 6.07.2024 kl. 16:59:30 |
Bruk Roslyn til å kompilere C#-kode dynamisk og kjør den
https://www.itsvse.com/thread-10786-1-1.html
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com