Получить ссылку на ранее скомпилированные объекты - PullRequest
0 голосов
/ 01 марта 2019

Я кодирую приложение, в котором пользователь может компилировать свой собственный код несколько раз во время выполнения. Я хочу получить доступ к другим скомпилированным объектам во время выполнения. Это возможно?

Я приведу приведенный ниже пример, чтобы лучше объяснить проблему: допустим, у меня есть следующий фрагмент кода:

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 для вызова обратно скомпилированных функций?

...