Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire
119 internautes nous ont dit merci ce mois-ci
vbc.exe code.txt /out:prog.exe /r:System.dll /r:System.Net.dll
'Déclare un nom d'assembly Dim assemblyName As AssemblyName = New AssemblyName("DynamicPersonne") 'Crée un nouvel assembly dynamic dans l'AppDomain courant Dim dynamicAssembly As AssemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave) For Each s As AssemblyName In dynamicAssembly.GetReferencedAssemblies() Console.WriteLine(s) Next 'Crée un nouveau module dans l'assembly Dim dynamicModule As ModuleBuilder = dynamicAssembly.DefineDynamicModule("DynamicPersonne.exe", "DynamicPersonne.exe") 'Crée une classe dans le module Dim dynamicType As TypeBuilder = dynamicModule.DefineType("DynamicPersonne.Program", TypeAttributes.Class Or TypeAttributes.Sealed) 'Crée une methode main dans la classe (point d'entré) Dim dynamicMethode As MethodBuilder = dynamicType.DefineMethod("Main", MethodAttributes.Public Or MethodAttributes.Static, Nothing, Nothing) 'Ajoute l'attribut STAThread a la methode Main Dim t As Type = GetType(STAThreadAttribute) Dim ci As ConstructorInfo = t.GetConstructor(Type.EmptyTypes) dynamicMethode.SetCustomAttribute(New CustomAttributeBuilder(ci, New Object() {})) 'Récupère le MethodInfo de Console.WritLine Dim Myconsole As Type = GetType(Console) Dim writeLine As MethodInfo = Myconsole.GetMethod("WriteLine", New Type() {GetType(String)}) 'Récupère le MethodInfo de Console.Read Dim readLine As MethodInfo = Myconsole.GetMethod("Read", Type.EmptyTypes) 'Insert du code IL dans la methode Dim il As ILGenerator = dynamicMethode.GetILGenerator() il.Emit(OpCodes.Ldstr, "Je m appelle Olivier") il.Emit(OpCodes.Call, writeLine) il.Emit(OpCodes.Call, readLine) il.Emit(OpCodes.Pop) il.Emit(OpCodes.Ret) 'Materialization de la classe dynamicType.CreateType() 'Définie le point d'entré dynamicAssembly.SetEntryPoint(dynamicMethode, PEFileKinds.ConsoleApplication) 'Sauvegarde de l'assembly dynamicAssembly.Save("DynamicPersonne.exe")
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.