An assembly can consist of one or more modules. [1] To obtain an array of modules in an assembly, you use System.Reflection.Assembly 's GetModules method.
Let's create an assembly (called Assm ) containing two modules ( Mod1 and Mod2 ) first. The following three code fragments do just that. 1: // Mod1.cs 2: public class Mod1{} 1: // Mod2.cs 2: public class Mod2{} 1: // Assm.cs 2: using System; 3: using System.Reflection; 4: 5: public class Assm{ 6: public static void Main(){ 7: Assembly a = Assembly.LoadFrom("Assm.exe"); 8: Module[] modules = a.GetModules(); 9: foreach(Module m in modules) 10: Console.WriteLine(m); 11: } 12: } If you are using csc.exe , compile the two module files Mod1.cs and Mod2.cs into module files first (module files end with a .netmodule extension). Use the /target:module option of csc.exe : c:\expt>csc /target:module Mod1.cs c:\expt>csc /target:module Mod2.cs Mod1.netmodule and Mod2.netmodule will be created. (You can also use the option shortcut /t:module instead of /target:module .) Then compile Assm.cs by adding into it the two module files you have just created. Use the /addmodule option to do this. If there is more than one module to be added into the final assembly file, separate them using commas without any spaces: c:\expt>csc /addmodule:Mod1.netmodule,Mod2.netmodule Assm.cs The assembly file Assm.exe will be created. When executed, Assm.exe will produce the following output. c:\expt>assm Assm.exe Mod1.netmodule Mod2.netmodule The Assm assembly contains three modules in all “ the Assm class itself, Mod1 , and Mod2 . Their names are displayed by reflection. |