C#高级应用之CodeDomProvider类
2017-08-24 16:43
288 查看
https://msdn.microsoft.com/en-us/library/microsoft.csharp.csharpcodeprovider.aspx
using System;using System.IO;using System.Globalization;using System.CodeDom.Compiler;using System.Text;using Microsoft.CSharp;using Microsoft.VisualBasic;namespace CodeProviders{class CompileSample{[STAThread]static void Main(string[] args){if (args.Length > 0){// First parameter is the source file name.if (File.Exists(args[0])){CompileExecutable(args[0]);}else{Console.WriteLine("Input source file not found - {0}",args[0]);}}else{Console.WriteLine("Input source file not specified on command line!");}}public static bool CompileExecutable(String sourceName){FileInfo sourceFile = new FileInfo(sourceName);CodeDomProvider provider = null;bool compileOk = false;// Select the code provider based on the input file extension.if (sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) == ".CS"){provider = CodeDomProvider.CreateProvider("CSharp");}else if (sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) == ".VB"){provider = CodeDomProvider.CreateProvider("VisualBasic");}else{Console.WriteLine("Source file must have a .cs or .vb extension");}if (provider != null){// Format the executable file name.// Build the output assembly path using the current directory// and <source>_cs.exe or <source>_vb.exe.String exeName = String.Format(@"{0}\{1}.exe",System.Environment.CurrentDirectory,sourceFile.Name.Replace(".", "_"));CompilerParameters cp = new CompilerParameters();// Generate an executable instead of// a class library.cp.GenerateExecutable = true;// Specify the assembly file name to generate.cp.OutputAssembly = exeName;// Save the assembly as a physical file.cp.GenerateInMemory = false;// Set whether to treat all warnings as errors.cp.TreatWarningsAsErrors = false;// Invoke compilation of the source file.CompilerResults cr = provider.CompileAssemblyFromFile(cp,sourceName);if(cr.Errors.Count > 0){// Display compilation errors.Console.WriteLine("Errors building {0} into {1}",sourceName, cr.PathToAssembly);foreach(CompilerError ce in cr.Errors){Console.WriteLine(" {0}", ce.ToString());Console.WriteLine();}}else{// Display a successful compilation message.Console.WriteLine("Source {0} built into {1} successfully.",sourceName, cr.PathToAssembly);}// Return the results of the compilation.if (cr.Errors.Count > 0){compileOk = false;}else{compileOk = true;}}return compileOk;}}}
相关文章推荐
- C#高级应用之CodeDomProvider引擎篇
- C#高级应用之CodeDomProvider引擎篇 .
- C#中正则表达式的高级应用
- C#枚举高级应用
- C#开发 —— 高级应用
- C# 高级应用--反射动态调用类的成员范例 !
- C#中正则表达式的高级应用
- C#图片裁剪高级应用
- c# 扩展方法奇思妙用高级篇三:Enumerable.Cast<T> 应用
- C# WebBrowser高级应用
- c#事务、using释放资源、实体类的高级应用
- [技术回顾系列]--c#中事件高级应用
- C#图片处理高级应用(裁剪,缩放,清晰度,水印)
- C#中CodeDomProvider代码编译的简单实现
- C#中正则表达式的高级应用
- C# WebBrowser高级应用
- C#图片处理高级应用(裁剪,缩放,清晰度,水印)
- C# 使用CodeDomProvider编译.cs文件 [岳阳原创]
- C#正则表达式(RegEx)高级应用之分组(Group)替换(Replace)
- c#扩展方法奇思妙用高级篇三:Enumerable.Cast<T>应用