2009-09-30 78 views
6

我有一個在運行時編譯C#代碼的系統。我想將生成的程序集鏈接到系統本身。下面是我使用的一些示例代碼:在運行時編譯C#代碼擴展

CSharpCodeProvider provider = new CSharpCodeProvider(new Dictionary<String, String> { { "CompilerVersion", "v3.5" } }); 
CompilerParameters compilerparams = new CompilerParameters(); 
compilerparams.GenerateExecutable = false; 
compilerparams.GenerateInMemory = true; 
foreach (string name in linkedreferences) 
    compilerparams.ReferencedAssemblies.Add(name + ".dll"); 
Assembly result = provider.CompileAssemblyFromFile(compilerparams, filename); 

我想這樣做也添加到主編譯程序的引用一樣,所以新編譯的擴展可以使用庫例程從編譯器程序。

Assembly entryasm = Assembly.GetEntryAssembly(); 

所以問題是這樣的:如何在編譯後的彙編結果中添加對entryasm的引用?

回答

3

你試過嗎?

compilerparams.ReferencedAssemblies.Add(entryasm.Location); 
+0

這就是它!謝謝。 – Whiteknight 2009-09-30 15:14:11