C 動態編譯

2021-04-08 18:48:49 字數 2148 閱讀 3661

using system;

using system.io;

using system.text;

using system.reflection;

using system.diagnostics;

using system.codedom.compiler;

using microsoft.csharp;

private readonly string _reference =

;public csharpcodecompiler()

public string compileroptions

getpublic compilerresults compilerresults

}public string compilererrors

}private string getcompilererrorlist(compilerresults results)

return sb.tostring();

}protected string compile(icodecompiler compiler, string statements, string assemblypath, bool executable)

if(_sourcename == string.empty)

_complerresults = compiler.compileassemblyfromsource(_parameters, statements);

_complererrors = getcompilererrorlist(_complerresults);

if(_complerresults.errors.count > 0)

return assemblypath;

}public virtual string compile(string statements, string assemblypath, bool executable)

public string compilescriptfile(string sourcefile, string assemblypath, bool executable)

_sourcename = sourcefile;

return compile(strstatements, assemblypath, executable);

}protected type compile(icodecompiler compiler, string classname, string statements)

if(_sourcename == string.empty)

_complerresults = compiler.compileassemblyfromsource(_parameters, statements);

_complererrors = getcompilererrorlist(_complerresults);

if(_complerresults.errors.count > 0)

assembly assembly = _complerresults.compiledassembly;

return assembly.gettype(classname);

}public virtual type compile(string classname, string statements)

public type compilescriptfile(string classname, string sourcefile)

_sourcename = sourcefile;

return compile(classname, strstatements);

}public object invoke(type type, string methodname, object param)}}

/*string statements= @"using system;

public class test

}";csharpcodecompiler comp= new csharpcodecompiler();

type typ= comp.compile("test", statements);

object obj = comp.invoke(typ, "getstring", null);

*/

c 動態編譯方法

今天寫了一個excel匯入資料庫驗證的方法,驗證規則是存到資料庫裡了,對於不同的excel呼叫不同的驗證方法。using microsoft.csharp using system.codedom using system.codedom.compiler using system.reflecti...

c 動態編譯繼承介面

c 裡面的動態編譯我就不講了,主要的都有了。如果不熟悉我推薦博文 標準的動態編譯 這裡主要是為了提供一個應用思路。以我的例子為準。描述了一個介面,一個介面庫。在服務端使用,在客戶端呼叫。一般第三方的元件會怎麼辦?提供一個編譯工具,實現通訊介面,然後自己編寫方法。這裡我用動態編譯實現。封裝一個類,一個...

靜動態編譯

有的時候我們經常會把自己編譯執行通過的.exe檔案放到其他機子上執行,卻驚奇地發現系統提示找不到什麼相關檔案的問題,導致編寫的程式只能孤芳自賞。其實這個問題的緣由主要是編譯器預設執行動態編譯,所謂動態編譯,就是程式執行所需要的庫等相關檔案是執行時才新增上去的,由於在本機當然有那些檔案,可是到了其他機...

Qt動態編譯

這個是我按照做的例子 做完後發現在qtcreator裡面設定qmake.exe的路徑,裡面有兩個選項 一個是自動檢測的,還有一個是手動設定,我手動設定了一個路徑,然後 執行qmake發現還是執行自動檢測的那個qmake,我不知道如何設定執行哪個qmake。接著我把動態編譯的那個qmake備份起來,然...

Java動態編譯

new建立物件是靜態載入類,在編譯時刻就需要載入所有可能使用到的類。一百個類,有一個類錯了,都無法編譯。通過動態載入類可以解決該問題 main介面 裡面通過對class類的動態編譯 然後呼叫例項,完成動態編譯 1 public class officebetter catch classnotfou...