|
| |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
在学使用CodeDom来动态生成.cs文件,使用帮助里的例子,代码居然编译不通过 自己修改,调试通过,整理后主要代码如下: 命名空间: using System.CodeDom; using System.CodeDom.Compiler; using Microsoft.CSharp; using System.IO; ??private void button1_Click(object sender, System.EventArgs e) ??{ ???CodeCompileUnit CompileUnit = new CodeCompileUnit(); ???CodeNamespace Samples = new CodeNamespace("Samples"); ???Samples.Imports.Add( new CodeNamespaceImport("System") ); ???CompileUnit.Namespaces.Add( Samples ); ???CodeTypeDeclaration Class1 = new CodeTypeDeclaration("Class1"); ???Samples.Types.Add(Class1); ???CodeEntryPointMethod Start = new CodeEntryPointMethod(); ??? ???//输出HelloWord ???CodeMethodInvokeExpression cs1 = new CodeMethodInvokeExpression( new ????CodeTypeReferenceExpression("System.Console"), "WriteLine", new ????CodePrimitiveExpression("Hello World!") ); ??? ???Start.Statements.Add(cs1); ??? ???Class1.Members.Add( Start ); ???//CSharpCodeProvider provider = new CSharpCodeProvider(); ???//ICodeGenerator gen = provider.CreateGenerator(); ???GenerateGraph(CompileUnit); ??} ??public void GenerateGraph(CodeCompileUnit compileunit) ??{ ???// Obtains an ICodeGenerator from a CodeDomProvider class. ???CSharpCodeProvider provider = new CSharpCodeProvider(); ???ICodeGenerator gen = provider.CreateGenerator(); ?? ???// Creates a StreamWriter to an output file. ???StreamWriter sw = new StreamWriter("d://TestGraph.cs", false); ???// Generates source code using the code generator. ???gen.GenerateCodeFromCompileUnit(compileunit, sw, new??? CodeGeneratorOptions()); ?? ???// Closes the output files. ???sw.Close(); ??} ??private void button2_Click(object sender, System.EventArgs e) ??{ ???CompileCode("d://TestGraph.cs"); ??} ??//编辑生成Exe ??public CompilerResults CompileCode(string filepath) ??{ ???// Obtains an ICodeCompiler from a CodeDomProvider class. ???CSharpCodeProvider provider = new CSharpCodeProvider(); ???ICodeCompiler compiler = provider.CreateCompiler(); ???// Configures a compiler parameters object which links System.dll and ???// generates a file name based on the specified source file name. ???CompilerParameters cp = new CompilerParameters(new string[] {"System.dll"}, filepath.Substring(0, filepath.LastIndexOf(".")+1)+"exe", false); ???// Indicates that an executable rather than a .dll should be generated. ???cp.GenerateExecutable = true; ???// Invokes compilation. ???CompilerResults cr = compiler.CompileAssemblyFromFile(cp, filepath);?? ???// Returns the results of compilation. ???return cr;??????? ??} 帮助里的例子在: .NET Framework->使用 .NET Framework 编程->动态生成和编译以多种语言表示的源代码 返回类别: 教程 上一教程: 把.NET程序部署到没有安装.NET Framwork的机器上 下一教程: .net的4个基本概念 您可以阅读与"使用CodeDom来生成.cs文件"相关的教程: · 使用.NET生成Excel文件 · 使用CodeDom开发基于B/S的.NET+MSSQL代码生成器的随感 · 使用CodeDom开发基于B/S的.NET+MSSQL代码生成器的随感 · VB.NET中使用FTP下载文件的两种方式 · 实例讲解.NET中资源文件的创建与使用 |
| 快精灵印艺坊 版权所有 |
首页 |
||