在运行时动态生成DLL程序集

目前,我有一些正在动态生成的代码。换句话说,该程序将动态创建一个C#.cs文件,其目的是将该C#文件包含在另一个项目中。


挑战在于,我想生成一个.DLL文件而不是生成一个C#.cs文件,这样它就可以被任何一种.NET应用程序(不仅是C#)引用,因此更加有用。


jeck猫
浏览 574回答 3
3回答

红糖糍粑

一种不建议使用的方法(使用.NET 4.0作为前面提到的海报):using System.CodeDom.Compiler;using System.Reflection;using System;public class J{    public static void Main()    {               System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();        parameters.GenerateExecutable = false;        parameters.OutputAssembly = "AutoGen.dll";        CompilerResults r = CodeDomProvider.CreateProvider("CSharp").CompileAssemblyFromSource(parameters, "public class B {public static int k=7;}");        //verify generation        Console.WriteLine(Assembly.LoadFrom("AutoGen.dll").GetType("B").GetField("k").GetValue(null));    }}

潇湘沐

现在,最好的选择是CSharpCodeProvider;4.0的计划包括“编译器即服务”,它将对此进行完全管理。
打开App,查看更多内容
随时随地看视频慕课网APP