读书人

ASP.Net动态编译生成dll资料

发布时间: 2013-03-13 10:56:58 作者: rapoo

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>
/// <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);
}


[解决办法]
1楼和4楼的说的都是正确的,经测试4楼群的可行,楼主可以结贴了

读书人网 >asp.net

热点推荐