2009-09-30 4 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

Смежные вопросы