If you are using csc.exe, you will need to know how to reference classes coded in other assemblies using the /reference option.
Let's say you have two classes, called MyClass1 and MyClass2, in separate source files. [4] MyClass1 creates a new instance of MyClass2 in its Main method.
[4] Of course, you can put them into the same source file and no referring will be required. But I am trying to show how you can reference something coded in another source file (which will eventually be compiled into a separate assembly).
1: // MyClass1.cs 2: public class MyClass1{ 3: public static void Main(){ 4: MyClass2 mc2 = new MyClass2(); 5: System.Console.WriteLine(mc2.Add(3,4)); 6: } 7: }
1: // MyClass2.cs – in separate source file 2: public class MyClass2{ 3: public int Add (int a, int b){ 4: return a + b; 5: } 6: }
You need to compile MyClass2.cs into a DLL assembly. It cannot be an EXE assembly since it doesn't contain a Main method, and hence isn't 'executable'.
Use the /target:library [5] option to compile MyClass2.cs into MyClass2.dll:
[5] You can use /t instead of /target. /t is a shortcut.
c:expt>csc /target:library MyClass2.cs
When you compile MyClass1.cs, make sure you reference MyClass2.dll like this:
c:expt>csc /reference:MyClass2.dll MyClass1.cs
Try compiling without the /reference:MyClass2.dll switch and the compiler will complain that MyClass2 is an unknown symbol.
You can reference multiple DLLs when compiling a single C# source file by separating them with commas:
/reference:MyClass2.dll,MyClass3.dll,MyClass4.dll.
You can also combine multiple source files into a single DLL assembly. The following command will compile both source files and put the resultant IL codes into a single DLL assembly called MyClass2.dll:
c:expt>csc /target:library MyClass2.cs MyClass3.cs
18.219.249.210