Net有道

紫冠道人的求道历程

导航

<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

搜索

 

常用链接

我的标签

随笔分类

随笔档案

文章分类

文章档案

Program

程序之外的生活

我的阅读BLOG

积分与排名

最新评论

阅读排行榜

评论排行榜

推荐排行榜

最新评论

共2页: 1 2 下一页 
Re:动态生成与编译(一)----入门 Siupan 2011-12-08 23:26  
学习了
Re:此"as"非彼"as" magic_evan 2011-11-01 15:45  
一个非拆箱操作怎么会不比一个拆箱操作快呢?
没什么错的吧,我也没写过main方法带参数这种 可能它比较特殊,你把参数改成Main(string[] args)这种的看看。
Re:动态生成与编译(三)----写一个面向过程的程序 自由人软件工作室 联系QQ:82530662 2011-06-28 00:08  
我生成了一个控制台的基本框架,但有些问题,请教一下哦。 生成的代码中Main函数没有参数,但我在代码中设置到参数了,不知道哪里错了,请指点!谢谢! 结果: [code=html] //------------------------------------------------------------------------------ // <auto-generated> // 此代码由工具生成。 // 运行时版本:2.0.50727.3053 // // 对此文件的更改可能会导致不正确的行为,并且如果 // 重新生成代码,这些更改将会丢失。 // </auto-generated> //------------------------------------------------------------------------------ namespace Sample { using System; public class SampleClass { public static void Main() { } } } [/code] 代码: [code=csharp] void Button1Click(object sender, EventArgs e) { //编译单元 CodeCompileUnit unit=new CodeCompileUnit(); //命名空间 CodeNamespace space=new CodeNamespace("Sample"); //在单元中加入命名空间 unit.Namespaces.Add(space); //导入类库 space.Imports.Add(new CodeNamespaceImport("System")); //自定义类 CodeTypeDeclaration SampleClass=new CodeTypeDeclaration("SampleClass"); //此命名空间下加入一个自定义类 space.Types.Add(SampleClass); //程序入口点,控制台应用程序即是Main函数 CodeEntryPointMethod main=new CodeEntryPointMethod(); //入口点函数名称 main.Name="Main"; //入口点函数返回类型 main.ReturnType=new CodeTypeReference(typeof(void)); //入口点函数参数 main.Parameters.Add(new CodeParameterDeclarationExpression(typeof(System.String),"args")); //在自定义类中加入"入口点函数"这个成员 SampleClass.Members.Add(main); MessageBox.Show(main.Parameters[0].Name); //C#语言容器 CSharpCodeProvider provider=new CSharpCodeProvider(); //创建一个C#语言代码生成器 ICodeGenerator generator=provider.CreateGenerator(); CodeGeneratorOptions options=new CodeGeneratorOptions(); StreamWriter write=new StreamWriter("unit1.cs",false); generator.GenerateCodeFromCompileUnit(unit,write,options); write.Close(); } [/code]
@Jeffery You 不会自动实现的,你写什么DOM,它生成什么样的代码
Re:动态生成与编译(九)----CodeDOM的局限 Jeffery You 2010-11-11 17:29  
如果我新建了一个类,实现了 IDisposable 接口,在代码中能否做到实现这个接口的代码文本?谢谢
用process是另起命令行。就是相当于在控制台输入csc.exe ....... 后来跟一堆东西,csc.exe的参数可以见文档。 用CompileAssemblyFromFile的话可见这个系列文章的第八篇,通过provider得到接口,设置一些编译选项就可以了。 微软的东西好处就文档全,怎么说没技术文档呢?
有源文件 怎么用process编译 又怎么调用那个System.CodeDom.Compiler 里的 CompilerResults CompileAssemblyFromFile( CompilerParameters options, string fileName ); 求助啊 不明白 能详细点吗? 高手,我现在是要把那个调用源文件 并要制作的工具可修改写入生成的源文件里.. 动态编译看你好容易,我都搞不懂啊 相关的资料都找不到啊技术文档都没啊
Re:动态生成与编译(一)----入门 Sonven 2009-12-07 14:54  
很强大,收藏了
下班了,明天接着看, 看了楼主的帖子,省了好多事! 谢谢哈
下班了,明天接着看, 看了楼主的帖子,省了好多事! 谢谢哈
下班了,明天接着看, 看了楼主的帖子,省了好多事! 谢谢哈
Re:动态生成与编译(一)----入门 陈文奇 2009-09-21 20:31  
确实有点繁琐。 继续接着看,努力学习中,谢谢lz哈
Re:动态生成与编译(一)----入门 陈文奇 2009-09-21 20:30  
该回复已经被删除
@vivisimo
没有这种功能,反正以前微软只提供了一个没有任何实现的空的接口在那。
不知新版本后有什么改进。
请问要编一个对C#语法程序的词法分析器,codeDom中有没有什么方法和类封装了这样的功能,可以被直接使用的?或者C#中有没有其他这样的类或方法?词法分析程序中要提取程序的单词,并对单词的种类进行识别,以及程序中声明了什么类,变量;每个对象又是什么类型等等。谢谢!
...........
@BillySir

Parse是个问题,写个Parse器,还不如直接修改source方便,就当是字符串操作吧。
re: 贴几个CodeDOM的链接 BillySir 2007-12-03 18:21  
以前知道CodeDOM大概是作什么用的,今天一口气看完楼主的《动态生成与编译》系列,《CodeDOM浅析》系列和这篇,对CodeDOM算是有了个系统的了解。看起文章来不太费事,但写出来就难十倍了,十分佩服楼主。
上面回复的太快,“个性”应作“修改”,抱歉。
Snippets就是为了弥补CodeDOM的不足而产生的,可以说用它无所不能,但却失去了DOM的精神,所以楼主说“不算是用CodeDOM的正道”。
我需要从code转到CodeDOM,即Parse方法,楼主所说有文件可以直接编译,但是不是忽略了DOM可以为对代码有个性的这样的需求提供一个结构化的对象集,我就是需要用代码来修改代码,不知道我说的清楚没有,由于没有Parse方法,本来我写好一大段code期望可以Parse后供其他代码修改,现在只能手工一行行翻译成DOM,真是苦差。
我对“CodeCompile unit does not have space for using directives or ns members, so they are placed now into first default NS ”的理解,
CodeCompile单元没有地方直接写"using"或namesapce成员,所以它们现在被放到第一个定义的namespace里面。
前面的"using"好理解,但“namesapce成员”如何理解呢?
深入浅出,继续拜读。看CodeDOM能不能在Code、DOM和IL三者之间互转,我目前遇到的问题是如何从Code转为DOM,不是人工地转,是要类似Parse的方法。
都不知道在写什么,看不明白。
re: 序列化Hashtable lg 2007-11-15 11:04  
好,本人也遇到了同样的问题,哥们分析的真透彻啊!
re: 会议签到系统项目总结目录 zdleek 2007-08-08 16:54  
mark
re: RFID会议签到系统总结(二十二)――系统中的模式 自由、创新、研究、探索…… 2007-08-08 07:53  
鼓励楼主
^_^不错
re: 会议签到系统项目总结目录 巫云 2007-08-07 15:38  
路过,看看。
re: 会议签到系统项目总结目录 MYOOP 2007-08-07 12:19  
好久没看到这么好的东西了。顶!!!!!!!!!!!!!1
re: CodeDOM浅析(下) lichdr 2007-08-07 10:05  
@Gavin
在.net 1.1时时是没有控制的,在.net2.0有没有我不太清楚,自己可以去查一下。

一般来说那个东西放那也没什么不好的,我不但不去掉,而且还要加上一大段呢。
re: CodeDOM浅析(下)[未登录] Gavin 2007-08-06 19:18  
谁来告诉我 生成出来的头注释如何去掉?
或是COMDOM类提供有相关属性可以控制!
QQ:240101561
@Jeffrey Zhao
这样啊,试了一下,果是如此,以前没仔细看生成的代码。
好文章。
ElseOnClosing的意思是如果为true则:
if
{
} else
否则就是
if
{
}
else
re: 动态生成与编译(一)----入门 Anders.Zhao 2007-05-03 09:45  
好文章,受教了.
re: 动态生成与编译(九)----CodeDOM的局限 上善若水 2007-04-12 16:53  
while、do…whle循环是支持的.
re: 五、平面图 45 2007-04-02 19:30  
54
new CodePrimitiveExpression(null)
呵呵
re: CodeDOM浅析(下) main 2006-08-06 14:23  
comdedom全部完了,老大能不能介绍介绍这玩意到底哪些地方需要呢?
很好的文章~!谢了
re: ASP.NET 2.0 下的条件编译 flysnow 2006-06-29 20:47  
多谢了,我试一下
re: ASP.NET 2.0 下的条件编译 lichdr 2006-06-26 14:10  
@flysnow

应该还是compilerOptions这个地方,compilerOptions="/unsafe" 看看
re: ASP.NET 2.0 下的条件编译 main 2006-06-26 13:16  
@flysnow
好象是在项目属性里面配置吧 :)
re: ASP.NET 2.0 下的条件编译 flysnow 2006-06-24 14:28  
有一个问题想请教, ASP.NET 2.0 如何使用非安全代码。
同样是因为没有地方设置项目属性了
re: 序列化Hashtable lichdr 2006-05-10 14:52  
见上一条
re: 序列化Hashtable 思无邪 2006-05-10 13:15  
WriteStartElement(@"ArrayOfAnyType", @"");

for (int ia = 0; ia < a.Count; ia++) {

Write1_Object(@"anyType", @"", ((System.Object)a[ia]), true, false);

}

WriteEndElement();

这是怎么看到的?
我也遇到了序列化Hashtable的问题
re: CodeDOM浅析(下) lichdr 2006-04-21 11:33  
IDE的代码生成是用模板的。
。。\Microsoft Visual Studio .NET 2003\VC#\VC#Wizards目录下有一堆模板可以看看。
共2页: 1 2 下一页