Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 2833|Svar: 1

[.NET Core] .NET/C# implementerar DLL-plugin-heta uppdateringar baserat på AssemblyLoadContext

[Kopiera länk]
Publicerad den 2024-6-28 14:28:33 | | | |
Krav: Affärslogiken är komplex och kräver anpassning, och för sådan logik kan bakgrunden i en separat DLL-assembler dynamiskt uppdatera assembleren och köra den senaste logiken.

.NET Core stöder inte dynamisk skapande och avlastning av AppDomains som .NET Framework, så det har aldrig funnits något bra sätt att hotloada plugins, men det positiva är att .NET Core har stöttat Collectible Assembly sedan 3.0, och vi kan skapa en återvinnbar AssemblyLoadContext som vi kan använda för att ladda och avladda assemblies.

AssemblyLoadContext-klassen:Inloggningen med hyperlänken är synlig.

Först, skapa en ny konsol och tre bibliotek, nämligen:ConsoleApp6ClassLibraryStandardClassLibrary1ClassLibrary2, bland vilka ClassLibrary1- och ClassLibrary2-biblioteken ärver IWorker-gränssnittet i ClassLibraryStandard och implementerar Run-metoden.

ClassLibraryStandard-kod:

ClassLibrary1-kod:

ClassLibrary2-kod:

ConsoleApp6-konsolkoden är följande:

Konsolen öppnar Run-metoden med 3 trådar i DLL-pluginet som ständigt körs dynamiskt, och använder log4net för att spela in utdataresultaten, och kör sedan det i konsolenByt ut DLL:n mot det senaste biblioteket efter 3 sekunder

Efter att konsolen körts i 1 sekund eller 5 sekunder matas samlingen av den aktuella AssemblyLoadContext-instansen ut, vilket är det laddade DLL-biblioteket.

Som visas nedan:



Du kan se att programmet inte har några onormala utdata, och det finns ingen situation där pluginet inte kan hittas under exekveringen. Anledningen till att log4net registrerar exekveringsresultaten är att konsolen är blockerad, och för att säkerställa att de 3 trådarna kan köras kontinuerligt används log4net för att registrera exekveringsresultaten, som visas i figuren nedan:



2024-06-28 14:24:36,606 INFO 11 RollingFile - 1
2024-06-28 14:24:36,606 INFO 10 RollingFile - Börja avinstallera
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 RullingFil - 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 - Avinstallera slutförd
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

Ansluten config.xml konfiguration:

(Slut)




Föregående:Om QRKOD QR-kods feltoleransnivå
Nästa:.NET/C# använder PDFsharp för att slå ihop flera PDF-filer till en
 Hyresvärd| Publicerad den 2024-7-6 16:59:30 |
Använd Roslyn för att dynamiskt kompilera C#-kod och kör den
https://www.itsvse.com/thread-10786-1-1.html
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com