使用CodeDom来生成.cs文件

dom

在学使用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 编程->动态生成和编译以多种语言表示的源代码

时间: 2024-05-19 05:01:48

使用CodeDom来生成.cs文件的相关文章

asp.net网页里面为什么找不到CS文件_实用技巧

复制代码 代码如下: <%@ Page language="c#" Codebehind="Main.aspx.cs" AutoEventWireup="false" Inherits="Hr.WebForm1" %> 上边的这行不要用CodeBehind,这是生成CS文件生成DLL文件后,把Dll放到Bin目录中使用的. 如果没有编译cs文件,则改为 复制代码 代码如下: <%@ Page language

asp.net反编译的cs文件快速生成aspx.cs

问题描述 asp.net反编译的cs文件快速生成aspx.cs 各位大神,木有啥工具能直接把反编译出的代码还原成源代码那种包含有aspx. designer.cs 还有aspx.cs文件那样的工具么? 反编译的dll只有cs文件 改起来工程量好大 解决方案 designer.cs aspx.cs文件 不可能区分开,因为编译的时候丢失了源代码属于哪个文件的信息. 但是aspx文件和.cs文件可以对应起来,在aspx里面找开头的codebehind,里面指向类. 解决方案二: asp.net 中 .

动软批量生成,如何所有在所有的.cs文件中加bll

问题描述 动软批量生成,如何所有在所有的.cs文件中加bll 动软批量生成BLL ,如何所有在所有的.cs文件中加bll,,比如把User.cs 修改成UserBLL.cs 解决方案 解决方案二: 动软批量生成,如何所有在所有的.cs文件名中加"bll"

C# 请问如何把asp.net生成shtml文件(急,在线等)

问题描述 C#请问如何把asp.net生成shtml文件 解决方案 解决方案二:http://blog.csdn.net/jyk/archive/2006/03/07/617376.aspxhttp://www.cnblogs.com/T_98Dsky/archive/2005/08/25/222992.html解决方案三:http://blog.csdn.net/chestnuts/archive/2006/12/08/1435061.aspx解决方案四:请问您的意思是生成一个纯的静态页还是使

.Net魔法堂:AssemblyInfo.cs文件详解

一.前言   .net工程的Properties文件夹下自动生成一个名为AssemblyInfo.cs的文件,一般情况下我们很少直接改动该文件.但我们实际上通 过另一个形式操作该文件.那就是通过在鼠标右键点击项目的属性进入"应用程序"->"程序集信息",然后修改信息.   二.作用    通过特性(Attribute)来设置程序集(dll文件)的常规信息,供查看或作为配置信息供程序内部使用.   三.详解 // 程序集标题 [assembly:Assembly

[请问] 什么方法可以在服务器端(cs)文件里面+一些代码或则是一些方法呢? (开发服务器控件)

问题描述 [请问]什么方法可以在服务器端(cs)文件里面+一些代码或则是一些方法呢?(开发服务器控件)在服务器控件生成时,或则生成完以后,在现有的xxx.cs里面加入一些代码怎么才能做到呢? 解决方案 解决方案二: 根据需要扩展控件解决方案三: 我在做组合控件继承的是control现在就差在控件生成时动态写一些服务器代码的方法了解决方案四: 有没有活人啊

急,关于修改.cs文件

问题描述 把.cs文件的代码注释后,再运行对应的aspx文件后发现注释后的代码还是有运行?为什么? 解决方案 解决方案二:这是不可能的,你可以跟踪下,除非你搞错了,或者已经生成了解决方案三:应该不会出现楼主这情况.重新生成后,再试试解决方案四:楼主parco(老花猫)2005-09-2816:23:38在.NET技术/ASP.NET提问比如原来文件中editBack.Text="haha"我把它改成editBack.Text="tmd"后再刷新页面总还是显示&quo

asp.net web application app_code中的cs文件编译报错

问题描述 我在webapplication的app_code文件夹添加了一个cs文件,并且修改了该文件的属性"生成操作"为"编译".引用了命名空间DevExpress.XtraPrinting(程序集也已添加dll的引用),并且创建了一个该命名空间下的类型"PringtingSystem"的对象.但是运行后,程序就报错,说命名空间"DevExpress.XtraPrinting"中不存在类型或命名空间名称"Print

c#-C#生成xml文件,怎样设置根节点的多个命名空间属性和schemalocation属性?

问题描述 C#生成xml文件,怎样设置根节点的多个命名空间属性和schemalocation属性? <net id="0" netclass="eDSPN" xmlns="http://pdv.cs.tu-berlin.de/TimeNET/schema/eDSPN" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=&quo