Ik ben bezig met een applicatie waarin in het geheugen door CSharpCodeProvider een Assembly-object gegenereerd wordt. Wat ik nu wil doen is deze assembly opslaan in een file. Ik heb al gezien dat Assembly een statische methode heeft waarmee je vanuit een .dll een nieuw Assembly-object kunt lezen, dus ik dacht dat het wegschrijven van een Assembly-object naar een .dll ook niet zo moeilijk zou moeten zijn.
Maar dat valt tegen. Assembly heeft blijkbaar geen methode om te saven. Ik heb al wel gezien dat er een klasse AssemblyBuilder is en dat die van Assembly erft. Deze klasse heeft wél een save-methode, maar ik mag m'n Assembly-object er niet naar casten.
Ik heb al een boel gezocht en gelezen en hetgene dat het dichtste bij kwam staat hier (laatste 2 posts van onderen). Maar bij mij lijkt dit niet te werken. Ik krijg namelijk hetzelfde gedrag als wat de poster daar omschrijft: een lege .dll waar ook niks in zit als ik die met de reflector bekijk. Wat hij doet:
Hij plaatst later de opmerking dat hij "parameters.outputAssembly('path')" mist, maar ik begrijp niet helemaal wat hij ermee bedoelt en hoe ik dit in mijn geval zou moeten doen.
Ik vind het überhaupt een wat vage constructie die er staat. Het enige argument dat echt over de assembly gaat is namelijk het opvragen van zijn naam
...? Ik hoop dat iemand me hiermee verder kan helpen...
Maar dat valt tegen. Assembly heeft blijkbaar geen methode om te saven. Ik heb al wel gezien dat er een klasse AssemblyBuilder is en dat die van Assembly erft. Deze klasse heeft wél een save-methode, maar ik mag m'n Assembly-object er niet naar casten.
Ik heb al een boel gezocht en gelezen en hetgene dat het dichtste bij kwam staat hier (laatste 2 posts van onderen). Maar bij mij lijkt dit niet te werken. Ik krijg namelijk hetzelfde gedrag als wat de poster daar omschrijft: een lege .dll waar ook niks in zit als ik die met de reflector bekijk. Wat hij doet:
C#:
1
2
3
4
5
6
| FileInfo fi = new FileInfo(filepath); AppDomain currentDom = Thread.GetDomain(); AssemblyBuilder assBuilder; assBuilder = currentDom.DefineDynamicAssembly(inMemoryAssembly.GetName(), AssemblyBuilderAccess.Save, fi.DirectoryName); assBuilder.Save(fi.Name); |
Hij plaatst later de opmerking dat hij "parameters.outputAssembly('path')" mist, maar ik begrijp niet helemaal wat hij ermee bedoelt en hoe ik dit in mijn geval zou moeten doen.
Ik vind het überhaupt een wat vage constructie die er staat. Het enige argument dat echt over de assembly gaat is namelijk het opvragen van zijn naam
💶 Wil je in een vrije democratie blijven wonen? Betaal dan voor nieuws. 📰
❌ ceterum censeo contra factiones ad dextrum extremum esse pugnandum. 🙅🏻♂️