Я кодирую приложение, в котором пользователь может компилировать свой собственный код несколько раз во время выполнения. Я хочу получить доступ к другим скомпилированным объектам во время выполнения. Это возможно?
Я приведу приведенный ниже пример, чтобы лучше объяснить проблему: допустим, у меня есть следующий фрагмент кода:
fullCommand = @"public static class test
{
public static void testing()
{
System.Console.WriteLine("Testing");
}
}";
, и я скомпилирую его во время выполнения.но я не буду вызывать его.
...
assemblyLocations.Add(typeof(Program).Assembly.Location);
compilerParams.ReferencedAssemblies.AddRange(assemblyLocations.ToArray());
var results = provider.CompileAssemblyFromSource(compilerParams, fullCommand);
object instance= results.CompiledAssembly.CreateInstance(className);
..
Теперь я хочу скомпилировать следующий код.
fullCommand = @"public class test1
{
public void testing1()
{
myNameSpace.test.testing();
}
}
, затем я скомпилирую его еще раз, используя приведенный выше код CodeDom.Это не удастся, так как myNameSpace не имеет внутри теста,
Как я могу получить ссылку на тестовый класс, который был скомпилирован ранее.
Я старался изо всех сил, что я мог объяснить, пожалуйста, дайте мне знать, если неясно, я буду просматривать и редактировать.Пожалуйста, не указывайте на опечатки и т.д.Я упростил код здесь и, возможно, содержит некоторые небольшие проблемы.
РЕДАКТИРОВАТЬ: Я не хочу использовать общую DLL, как описано здесь: Можно ли использовать C # codeDOM для вызова обратно скомпилированных функций?