html需要编译后执行对吗,C#动态编译代码并执行 能不能针对 .aspx 文件来进行动态编译然后返回编译后的HTML?求大佬指点 :...

本文介绍了一种使用C#动态编译.aspx文件的方法,并详细展示了如何通过CSharpCodeProvider和ICodeCompiler接口来实现从源代码到可执行组件的过程。此外还提供了具体的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.代码仅参考, 主要问题:能不能将 .aspx 文件来进行动态编译然后返回编译后的HTML

namespace Test

{

public class Program

{

static void Main(string[] args)

{

// 1.CSharpCodePrivoder

CSharpCodeProvider objCSharpCodePrivoder = new CSharpCodeProvider();

// 2.ICodeComplier

ICodeCompiler objICodeCompiler = objCSharpCodePrivoder.CreateCompiler();

// 3.CompilerParameters

CompilerParameters objCompilerParameters = new CompilerParameters();

objCompilerParameters.ReferencedAssemblies.Add("System.dll");

objCompilerParameters.ReferencedAssemblies.Add("System.Web.dll");

objCompilerParameters.GenerateExecutable = false;

objCompilerParameters.GenerateInMemory = true;

// 4.CompilerResults

CompilerResults cr = objICodeCompiler.CompileAssemblyFromSource(objCompilerParameters, GenerateCode());

if (cr.Errors.HasErrors)

{

Console.WriteLine("编译错误:");

foreach (CompilerError err in cr.Errors)

{

Console.WriteLine(err.ErrorText);

}

}

else

{

//通过反射,调用HelloWorld的实例

Assembly objAssembly = cr.CompiledAssembly;

//object objHelloWorld = objAssembly.CreateInstance("DynamicCodeGenerate.HelloWorld");

//MethodInfo objMI = objHelloWorld.GetType().GetMethod("OutPut");

//Console.WriteLine(objMI.Invoke(objHelloWorld, null));

}

Console.ReadLine();

}

static string GenerateCode()

{

StringBuilder sb = new StringBuilder();

sb.Append("");

sb.Append(Environment.NewLine);

sb.Append("");

sb.Append(Environment.NewLine);

sb.Append("

//sb.Append("using System;");

//sb.Append(Environment.NewLine);

//sb.Append("namespace DynamicCodeGenerate");

//sb.Append(Environment.NewLine);

//sb.Append("{");

//sb.Append(Environment.NewLine);

//sb.Append(" public class HelloWorld");

//sb.Append(Environment.NewLine);

//sb.Append(" {");

//sb.Append(Environment.NewLine);

//sb.Append(" public string OutPut()");

//sb.Append(Environment.NewLine);

//sb.Append(" {");

//sb.Append(Environment.NewLine);

//sb.Append(" return \"Hello world!\";");

//sb.Append(Environment.NewLine);

//sb.Append(" }");

//sb.Append(Environment.NewLine);

//sb.Append(" }");

//sb.Append(Environment.NewLine);

//sb.Append("}");

string code = sb.ToString();

Console.WriteLine(code);

Console.WriteLine();

return code;

}

}

}

借助文章:https://www.cnblogs.com/maguoyong/articles/5553827.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值