当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《在运行时动态生成DLL程序集》经验,为你挑选了2个好方法。

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

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



1> Rex M..:
using System.CodeDom.Compiler;
using System.Diagnostics;
using Microsoft.CSharp;

CSharpCodeProvider codeProvider = new CSharpCodeProvider();
ICodeCompiler icc = codeProvider.CreateCompiler();
System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();
parameters.GenerateExecutable = false;
parameters.OutputAssembly = "AutoGen.dll";
CompilerResults results = icc.CompileAssemblyFromSource(parameters, yourCodeAsString);

改编自http://support.microsoft.com/kb/304655



2> Anssssss..:

这种非弃用的方式(使用.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));
    }
}

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有