2 using System.Reflection;
3 using System.Resources;
5 using System.Security.Policy;
6 using System.Runtime.Serialization;
7 using System.Globalization;
8 using System.Runtime.CompilerServices;
10 namespace System.Reflection.Emit {
12 public sealed class AssemblyBuilder : Assembly {
14 private MethodInfo entry_point;
16 public override string CodeBase {
22 public override MethodInfo EntryPoint {
28 public override string Location {
34 public void AddResourceFile (string name, string fileName)
38 public void AddResourceFile (string name, string fileName, ResourceAttributes attribute)
42 [MethodImplAttribute(MethodImplOptions.InternalCall)]
43 private static extern ModuleBuilder defineModule (AssemblyBuilder ab,
47 public override ModuleBuilder DefineDynamicModule (string name)
52 public override ModuleBuilder DefineDynamicModule (string name, bool emitSymbolInfo)
57 public ModuleBuilder DefineDynamicModule(string name, string fileName)
59 return defineModule (this, name, fileName);
62 public ModuleBuilder DefineDynamicModule (string name, string fileName,
68 public IResourceWriter DefineResource (string name, string description, string fileName)
73 public IResourceWriter DefineResource (string name, string description,
74 string fileName, ResourceAttributes attribute)
79 public void DefineUnmanagedResource (byte[] resource)
83 public void DefineUnmanagedResource (string resourceFileName)
87 public void DefineVersionInfoResource ()
91 public void DefineVersionInfoResource (string product, string productVersion,
92 string company, string copyright, string trademark)
96 public ModuleBuilder GetDynamicModule (string name)
101 public override Type[] GetExportedTypes ()
106 public override FileStream GetFile (string name)
111 /*public virtual FileStream[] GetFiles() {
114 public override FileStream[] GetFiles(bool getResourceModules) {
118 /*public virtual ManifestResourceInfo GetManifestResourceInfo(string resourceName)
122 public virtual string[] GetManifestResourceNames() {
125 public virtual Stream GetManifestResourceStream(string name) {
128 public virtual Stream GetManifestResourceStream(Type type, string name) {
132 [MethodImplAttribute(MethodImplOptions.InternalCall)]
133 private static extern int getDataChunk (AssemblyBuilder ab, int type, byte[] buf);
135 public void Save (string assemblyFileName)
137 byte[] buf = new byte[8192];
141 file = new FileStream (assemblyFileName, FileMode.OpenOrCreate, FileAccess.Write);
143 count = getDataChunk (this, 0, buf);
145 file.Write (buf, 0, count);
146 count = getDataChunk (this, 1, buf); /* may be a too small buffer */
147 file.Write (buf, 0, count);
153 public void SetEntryPoint (MethodInfo entryMethod)
155 entry_point = entryMethod;