日期:2014-05-17  浏览次数:20509 次

ASP.Net动态编译,生成dll文件
如题?看了一些网上的资料,没看明白。大部分都是控制台或 winform项目。我的是ASP.Net网站。


protected void Button1_Click(object sender, System.EventArgs e)
{
        string s=@"using System;
                  public class test
                  {
                       public void HelloWorld()
                       {
               
                        }
                    }";
}

/// <summary>
/// 动态编译
/// </summary>
/// <param name="source"> 要动态编译的代码字符串</param>
/// <param name="path">生成dll文件的路径</param>
private void csc(string source, string path)

    //-------------
}



如上面的,就相当于在cmd中执行了
csc /target:library /out:e:\test.dll /recurse:d:\test.cs

请高手指教!
asp.net 动态编译

------解决方案--------------------
参考一下这个
using System.IO;
using System.CodeDom;
using System.CodeDom.Compiler;
using Microsoft.CSharp;


            ICodeCompiler complier = (new CSharpCodeProvider().CreateCompiler());  
            CompilerParameters cp = new CompilerParameters();
            cp.ReferencedAssemblies.Add("system.dll");
            cp.GenerateExecutable = false;
            cp.GenerateInMemory = true;

 StreamReader sr = new StreamReader("d:\\test.cs");
                CompilerResults cr = complier.CompileAssemblyFromSource(cp, "using System;\r\n" + sr.ReadToEnd());
                 sr.Close();
                 Assembly a = cr.CompiledAssembly;
                 object cls = a.CreateInstance("命名空间.类名称");

------解决方案--------------------
什么项目类型有关系么?

看一下MSDN中CSharpCodeProvider 类的示例,简单来说就是这样:
/// <summary>
        /// 动态编译
        /// </summary><