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楼群的可行,楼主可以结贴了