private string saveBinaryFile(ProjectContext projectContext) { string binFileName = projectContext.GetBinaryNameEx(); projectContext.EmitContext.AssemblyBuilder.Save(binFileName); CompileUtil.MoveBinary(projectContext); CompileUtil.DeletePDB(projectContext); string exBinFileName = projectContext.GetBinaryNameEx(); string toFileFullPath = Path.Combine(projectContext.BinarySaveDirectoryInfo.FullName, exBinFileName); return(toFileFullPath); }
public static void GenerateBinary(ProjectContext context) { string binFileName = context.GetBinaryNameEx(); var assemblyName = new AssemblyName(context.RootNameSpace); AssemblyBuilder assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave); var moduleBuilder = assemblyBuilder.DefineDynamicModule(context.RootNameSpace, binFileName, true); EmitProjectContext emitContext = new EmitProjectContext(); emitContext.AssemblyName = assemblyName; emitContext.AssemblyBuilder = assemblyBuilder; emitContext.ModuleBuilder = moduleBuilder; context.EmitContext = emitContext; setAttr(assemblyBuilder, context); }
public static void MoveBinary(ProjectContext projectContext) { string exBinFileName = projectContext.GetBinaryNameEx(); string fromFileFullPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, exBinFileName); string toFileFullPath = Path.Combine(projectContext.BinarySaveDirectoryInfo.FullName, exBinFileName); if (File.Exists(toFileFullPath)) { File.Delete(toFileFullPath); } if (File.Exists(fromFileFullPath) && fromFileFullPath != toFileFullPath) { File.Move(fromFileFullPath, toFileFullPath); File.Delete(fromFileFullPath); } CompileUtil.DeletePDB(projectContext); }