2 // System.Reflection.Emit/AssemblyBuilder.cs
5 // Paolo Molaro (lupus@ximian.com)
7 // (C) 2001 Ximian, Inc. http://www.ximian.com
11 using System.Reflection;
12 using System.Resources;
14 using System.Security.Policy;
15 using System.Runtime.Serialization;
16 using System.Globalization;
17 using System.Runtime.CompilerServices;
19 namespace System.Reflection.Emit {
21 public sealed class AssemblyBuilder : Assembly {
23 private MethodInfo entry_point;
25 public override string CodeBase {
31 public override MethodInfo EntryPoint {
37 public override string Location {
43 public void AddResourceFile (string name, string fileName)
47 public void AddResourceFile (string name, string fileName, ResourceAttributes attribute)
51 [MethodImplAttribute(MethodImplOptions.InternalCall)]
52 private static extern ModuleBuilder defineModule (AssemblyBuilder ab,
56 public override ModuleBuilder DefineDynamicModule (string name)
61 public override ModuleBuilder DefineDynamicModule (string name, bool emitSymbolInfo)
66 public ModuleBuilder DefineDynamicModule(string name, string fileName)
68 return defineModule (this, name, fileName);
71 public ModuleBuilder DefineDynamicModule (string name, string fileName,
77 public IResourceWriter DefineResource (string name, string description, string fileName)
82 public IResourceWriter DefineResource (string name, string description,
83 string fileName, ResourceAttributes attribute)
88 public void DefineUnmanagedResource (byte[] resource)
92 public void DefineUnmanagedResource (string resourceFileName)
96 public void DefineVersionInfoResource ()
100 public void DefineVersionInfoResource (string product, string productVersion,
101 string company, string copyright, string trademark)
105 public ModuleBuilder GetDynamicModule (string name)
110 public override Type[] GetExportedTypes ()
115 public override FileStream GetFile (string name)
120 /*public virtual FileStream[] GetFiles() {
123 public override FileStream[] GetFiles(bool getResourceModules) {
127 /*public virtual ManifestResourceInfo GetManifestResourceInfo(string resourceName)
131 public virtual string[] GetManifestResourceNames() {
134 public virtual Stream GetManifestResourceStream(string name) {
137 public virtual Stream GetManifestResourceStream(Type type, string name) {
141 [MethodImplAttribute(MethodImplOptions.InternalCall)]
142 private static extern int getDataChunk (AssemblyBuilder ab, int type, byte[] buf);
144 public void Save (string assemblyFileName)
146 byte[] buf = new byte[8192];
150 file = new FileStream (assemblyFileName, FileMode.OpenOrCreate, FileAccess.Write);
152 count = getDataChunk (this, 0, buf);
154 file.Write (buf, 0, count);
155 count = getDataChunk (this, 1, buf); /* may be a too small buffer */
156 file.Write (buf, 0, count);
162 public void SetEntryPoint (MethodInfo entryMethod)
164 entry_point = entryMethod;
167 public void SetEntryPoint (MethodInfo entryMethod, PEFileKinds fileKind)
169 entry_point = entryMethod;