C#中CodeDomProvider代码编译的简单实现
来源:互联网 发布:java random用法 编辑:程序博客网 时间:2024/06/06 20:35
internal class Compiler
{
internal void Product()
{
string resource = string.Empty;
resource = GetResource();
CodeDomProvider provider = new CSharpCodeProvider();
CompilerParameters parameters = new CompilerParameters();
parameters.GenerateExecutable = false;
parameters.OutputAssembly = "Test.dll";
parameters.GenerateInMemory = false;
parameters.TreatWarningsAsErrors = false;
parameters.ReferencedAssemblies.Add("System.Core.dll");
CompilerResults results = provider.CompileAssemblyFromSource(parameters, resource);
if (results.Errors.Count != 0)
{
StringBuilder builder = new StringBuilder();
foreach (CompilerError single in results.Errors)
{
builder.AppendLine(single.ErrorText + " at line " + single.Line);
}
File.WriteAllText("d:\\Compile\\Erro.txt", builder.ToString());
}
else
{
Console.WriteLine("Test compile is ok");
if (!Directory.Exists("d:\\Compile"))
{
Directory.CreateDirectory("d:\\Compile");
}
//拷贝到指定目录
File.Copy("Test.dll", "d:\\Compile\\Test.dll", true);
}
Console.ReadKey();
}
/// <summary>
/// 获取欲编译的代码
/// </summary>
/// <returns></returns>
private string GetResource()
{
StringBuilder sb = new StringBuilder();
sb.Append("using System;")
.Append("namespace Test{")
.Append("internal class Program{")
.Append(" private string Ge{")
.Append("get;set;}")
.Append("}}");
return sb.ToString();
//当然,如果有其他方法和属性,可以继续添加
//用C#的T4模板的话会更好的
}
}
{
internal void Product()
{
string resource = string.Empty;
resource = GetResource();
CodeDomProvider provider = new CSharpCodeProvider();
CompilerParameters parameters = new CompilerParameters();
parameters.GenerateExecutable = false;
parameters.OutputAssembly = "Test.dll";
parameters.GenerateInMemory = false;
parameters.TreatWarningsAsErrors = false;
parameters.ReferencedAssemblies.Add("System.Core.dll");
CompilerResults results = provider.CompileAssemblyFromSource(parameters, resource);
if (results.Errors.Count != 0)
{
StringBuilder builder = new StringBuilder();
foreach (CompilerError single in results.Errors)
{
builder.AppendLine(single.ErrorText + " at line " + single.Line);
}
File.WriteAllText("d:\\Compile\\Erro.txt", builder.ToString());
}
else
{
Console.WriteLine("Test compile is ok");
if (!Directory.Exists("d:\\Compile"))
{
Directory.CreateDirectory("d:\\Compile");
}
//拷贝到指定目录
File.Copy("Test.dll", "d:\\Compile\\Test.dll", true);
}
Console.ReadKey();
}
/// <summary>
/// 获取欲编译的代码
/// </summary>
/// <returns></returns>
private string GetResource()
{
StringBuilder sb = new StringBuilder();
sb.Append("using System;")
.Append("namespace Test{")
.Append("internal class Program{")
.Append(" private string Ge{")
.Append("get;set;}")
.Append("}}");
return sb.ToString();
//当然,如果有其他方法和属性,可以继续添加
//用C#的T4模板的话会更好的
}
}
- C#中CodeDomProvider代码编译的简单实现
- 简单的中文信息处理C#实现代码片段
- C、C++、C#简单代码编译结果的不同!
- C# 动态编译代码实现
- C#高级应用之CodeDomProvider引擎篇
- C#高级应用之CodeDomProvider引擎篇 .
- C#高级应用之CodeDomProvider类
- C#中简单索引器的实现
- 最小二乘法C#实现,简单代码
- C#实现数据库事务处理的简单示例代码
- C#实现数据库事务处理的简单示例代码
- C#摄像头实现拍照功能的简单代码示例
- C#摄像头实现拍照功能的简单代码示例
- [代码积累]C#中泛型缓存的简单实现
- C#代码的编译过程
- C#反射技术实现代码编译
- C#中简单实现多线程
- C#简单的计时器代码
- 发布针对.NET的Windows Azure SDK(2012年6月)- 现支持Visual Studio 2012 RC 版本
- jeebbs v3.0版简介--开源博客CMS
- python构架的科学计算程序设计(转载)
- 小甲鱼PE详解之区块描述、对齐值以及RVA详解(PE详解06)
- 精妙Sql语句
- C#中CodeDomProvider代码编译的简单实现
- Xcode GDB 调试
- JEEBBS v3版使用说明
- Labview菜单实现
- 小甲鱼PE详解之输入表(导入表)详解(PE详解07)
- flash打包项目ane的时候 几个细节
- C#工厂设计模式 示范
- 数据库
- initialization of 'strTemp' is skipped by 'case' label解决办法