如题?看了一些网上的资料,没看明白。大部分都是控制台或 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动态编译

解决方案 »

  1.   

    参考一下这个
    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("命名空间.类名称");
      

  2.   

    什么项目类型有关系么?看一下MSDN中CSharpCodeProvider 类的示例,简单来说就是这样:
    /// <summary>
            /// 动态编译
            /// </summary>
            /// <param name="source"> 要动态编译的代码字符串</param>
            /// <param name="path">生成dll文件的路径</param>
            private void csc(string source, string path)
            {
                CodeDomProvider ccp = CodeDomProvider.CreateProvider("CSharp");
                CompilerParameters options = new CompilerParameters();
                options.GenerateInMemory = true;
                options.GenerateInMemory = false;
                options.TreatWarningsAsErrors = false;
                options.OutputAssembly = path;
                CompilerResults result = ccp.CompileAssemblyFromSource(options, source);
            }