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模板的话会更好的
}
}