[笔记]C#实现动态编译
今天看了我的老师钟声的书《Java程序员上班那点儿事》,其中有一段关于Java实现动态编译的代码使我很受启发,决定在.NET中尝试一下。
引入下列命名空间:
using System.CodeDom;
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.Diagnostics;
C#代码:
CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp");
//CodeDomProvider 可用于创建和检索代码生成器和代码编译器的实例,这个类是一个抽象类,需要使用CreateProvider()方法创建。
string[] referenceAssemblies = new string[]
{
"System.dll"
};
CompilerParameters cp = new CompilerParameters(referenceAssemblies, "Demo.exe", false);
//表示ICodeCompiler接口的设置和选项的CompilerParameters 对象,第一个参数表示引用的程序集,第二个表示输出的文件名,第三个表示是否调试。
cp.GenerateExecutable = true;
StringBuilder code = new StringBuilder();
code.Append("using System;");
code.Append("namespace Simple{");
code.Append("public class DemoClass{");
code.Append("public static void Main(string[] args){");
&nbs
相关文档:
private void Create_Pz(string Sourcename)
{
string OutMsg;
SqlParameter[] sortPara = { new SqlParameter("@ps_IsType", Pz ......
这些天因为工作需要,要将一些html文件转换为chm文件,当然是需要和程序结合在一起。
后来找到NDoc,里头有一段代码是相关的,于是开始分析代码,写完之后,总结:主要是利用微软的hhc.exe来编译html文件,程序需要将具体的数据写入hhp和hhc文件。
主要代码如下:
复制C#代码保存代码public void CompileProject()
{ ......
private static int level=0
public static int FindGUILike(ref int hWndArray,int hWndStart,ref string windowText,ref string className,ref string parentText)
{
int hwnd=0;
int r=0;
StringBuilder sWindowText=new StringBuilder();
StringBuilder sClassname=new StringBuilder();
StringBuilder sParentT ......
------------------------
★
Foreach :
优点:
1、不用考虑数组起始索引是几
int[] nArray = new int[100];
// Use "foreach" to loop array
foreach( int i in nArray )
2、对于多维数组操作用foreach非常简便
int[,] nVisited = new int[8,8];
// Use "for" to loop two-dimension array
for( int i = 0; i ......