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...