Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 2833|Vastaus: 1

[.NET Core] .NET/C# toteuttaa DLL-lisäosan kuumat päivitykset AssemblyLoadContextin pohjalta

[Kopioi linkki]
Julkaistu 2024-6-28 14:28:33 | | | |
Vaatimukset: Liiketoimintalogiikka on monimutkainen ja vaatii räätälöintiä, ja tällaisessa logiikassa erillisessä DLL-kokoonpanossa tausta voi dynaamisesti päivittää assemblyn ja suorittaa viimeisimmän logiikan.

.NET Core ei tue dynaamista AppDomainien luomista ja purkamista kuten .NET Framework, joten ei ole koskaan ollut hyvää tapaa hotloadata plugineja, mutta hyvä uutinen on, että .NET Core on tukenut Collectible Assemblya vuodesta 3.0 lähtien, ja voimme luoda takaisin otettavan AssemblyLoadContextin, jota voimme käyttää assemblyjen lataamiseen ja purkamiseen.

AssemblyLoadContext-luokka:Hyperlinkin kirjautuminen on näkyvissä.

Luo ensin uusi konsoli ja kolme kirjastoa, nimittäin:ConsoleApp6ClassLibraryStandardClassLibrary1ClassLibrary2, joista ClassLibrary1- ja ClassLibrary2-kirjastot perivät IWorker-rajapinnan ClassLibraryStandardissa ja toteuttavat Run-metodin.

ClassLibraryStandardikoodi:

ClassLibrary1-koodi:

ClassLibrary2-koodi:

ConsoleApp6:n konsolikoodi on seuraava:

Konsoli avaa Run-metodin, jossa on 3 säikettä DLL-pluginissa, joka toimii jatkuvasti dynaamisesti, ja käyttää log4netiä tallentaakseen tulost, minkä jälkeen se ajaa ne konsolissaKorvaa DLL uusimpaan kirjastoon 3 sekunnin kuluttua

Kun konsoli on ajettu 1 sekunnin tai 5 sekunnin ajan, nykyisen AssemblyLoadContext-instanssin kokoelma tulostuu, eli ladattu DLL-kirjasto.

Kuten alla on esitetty:



Näet, ettei ohjelmassa ole mitään poikkeavaa ulostuloa, eikä ole tilannetta, jossa pluginia ei löydettäisi suoritusprosessin aikana. Syynä siihen, miksi log4net tallentaa suoritustulokset, on se, että konsoli on estynyt, ja jotta kolme säikettä voivat suorittaa jatkuvasti, log4netiä käytetään suoritustulosten tallentamiseen, kuten alla olevassa kuvassa näkyy:



2024-06-28 14:24:36,606 INFO 11 RollingFile - 1
2024-06-28 14:24:36,606 INFO 10 RollingFile - Aloita poistaminen
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 - Poista asennus valmis
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

Liitetty config.xml kokoonpano:

(Loppu)




Edellinen:Tietoa QRCODE-QR-koodin vikasietokyvystä
Seuraava:.NET/C# käyttää PDFsharpia yhdistääkseen useita PDF-tiedostoja yhdeksi
 Vuokraisäntä| Julkaistu 2024-7-6 klo 16:59:30 |
Käytä Roslynia kääntääksesi C#-koodia dynaamisesti ja ajaaksesi sen
https://www.itsvse.com/thread-10786-1-1.html
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com