Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 2833|Atsakyti: 1

[.NET branduolys] .NET/C# įgyvendina DLL papildinio karštuosius atnaujinimus, pagrįstus AssemblyLoadContext

[Kopijuoti nuorodą]
Publikuota: 2024-6-28 14:28:33 | | | |
Reikalavimai: Verslo logika yra sudėtinga ir ją reikia pritaikyti, o tokiai logikai atskirame DLL rinkinyje fonas gali dinamiškai atnaujinti rinkinį ir vykdyti naujausią logiką.

".NET Core" nepalaiko dinaminio "AppDomains", pvz., ".NET Framework", kūrimo ir iškrovimo, todėl niekada nebuvo gero būdo įkelti papildinius, tačiau gera žinia ta, kad ".NET Core" palaiko "Collectible Assembly" nuo 3.0 ir galime sukurti atkuriamą "AssemblyLoadContext", kurį galime naudoti rinkiniams įkelti ir iškrauti.

AssemblyLoadContext klasė:Hipersaito prisijungimas matomas.

Pirmiausia sukurkite naują konsolę ir tris bibliotekas, būtent:ConsoleApp6Klasės bibliotekaStandartasKlasės biblioteka1Klasės biblioteka2, tarp kurių "ClassLibrary1" ir "ClassLibrary2" bibliotekos paveldi "IWorker" sąsają "ClassLibraryStandard" ir įgyvendina "Run" metodą.

ClassLibraryStandard kodas:

ClassLibrary1 kodas:

ClassLibrary2 kodas:

"ConsoleApp6" konsolės kodas yra toks:

Konsolė atidaro 3 gijų paleidimo metodą DLL papildinyje, kuris nuolat dinamiškai vykdomas, ir naudoja log4net išvesties rezultatams įrašyti, o tada paleidžia jį konsolėjePakeiskite DLL naujausia biblioteka po 3 sekundžių

Paleidus konsolę 1 sekundę arba 5 sekundes, išvedamas dabartinio AssemblyLoadContext egzemplioriaus rinkinys, kuris yra įkelta DLL biblioteka.

Kaip parodyta žemiau:



Matote, kad programa neturi jokios neįprastos išvesties ir nėra situacijos, kai vykdymo metu nebūtų galima rasti papildinio. Priežastis, kodėl log4net įrašo vykdymo rezultatus, yra ta, kad konsolė yra užblokuota, o siekiant užtikrinti, kad 3 gijos galėtų būti vykdomos nuolat, log4net naudojamas vykdymo rezultatams įrašyti, kaip parodyta paveikslėlyje žemiau:



2024-06-28 14:24:36,606 INFO 11 RollingFile - 1
2024-06-28 14:24:36,606 INFO 10 RollingFile - Pradėti šalinti
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 - Pašalinimas baigtas
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

Pridedama config.xml konfigūracija:

(Pabaiga)




Ankstesnis:Apie QRCODE QR kodo gedimų tolerancijos lygį
Kitą:.NET/C# naudoja PDFsharp, kad sujungtų kelis PDF failus į vieną
 Savininkas| Publikuota: 2024-7-6 16:59:30 |
Naudokite Roslyn dinamiškai kompiliuoti C# kodą ir jį paleisti
https://www.itsvse.com/thread-10786-1-1.html
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com