■ CodeDomProvider 클래스를 사용해 런타임에서 C# 코드를 동적으로 컴파일하고 DLL 파일을 생성하는 방법을 보여준다.
▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
using System; using System.CodeDom.Compiler; using System.Reflection; namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { Console.Title = "CodeDomProvider 클래스 : 런타임에서 C# 코드를 동적으로 컴파일하고 DLL 파일 생성하기"; CompilerParameters parameters = new CompilerParameters(); parameters.GenerateExecutable = false; parameters.OutputAssembly = "d:\\TestSample.dll"; string code = @" namespace TestProject { public class TestClass { public static int Value = 100; } } "; CompilerResults result = CodeDomProvider.CreateProvider("CSharp").CompileAssemblyFromSource(parameters, code); Assembly assembly = Assembly.LoadFrom("d:\\TestSample.dll"); Type type = assembly.GetType("TestProject.TestClass"); FieldInfo fieldInfo = type.GetField("Value"); object value = fieldInfo.GetValue(null); Console.WriteLine(value); } #endregion } } |