Приложение. NET, которое компилирует код в форме Windows - PullRequest
0 голосов
/ 09 апреля 2020

У меня проблема. Я не могу найти механизм. Net, который позволяет мне компилировать код в Windows форме. Я хочу иметь 1 текстовое поле с кодом и позже скомпилированный код показать в другом поле Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 09 апреля 2020

Как уже упоминалось, компиляция кода с использованием Roslyn - это, безусловно, путь вперед. Если вы sh хотите увидеть какой-то вывод при выполнении скомпилированного кода, вы можете sh создать абстрактный класс для написания сценария, который обеспечивает точку входа и способ вывода отчета. Затем вы можете скомпилировать скрипт в dll и использовать отражение для загрузки выходной сборки, создать экземпляр своего класса (класс, реализующий ScriptTemplate ниже) и выполнить через точку входа.

abstract class ScriptTemplate
{
   public abstract void Main();

   public string Output
   {
      get;
      protected set;
   }

}

Ваша форма может затем записать свойство Output в текстовое поле, например.

class Script : ScriptTemplate
{
   public override void Main()
   {
      Output = "Hello world!";
   }
}
0 голосов
/ 09 апреля 2020

Звучит так, как будто вы хотите использовать C# компилятор из приложения Windows Forms, но я не уверен, что будет отображаться в вашем другом окне.

Если вы ищете просто компиляцию и визуально отображая IL, безусловно, есть способы вызова Roslyn из Windows Forms.

Если вы хотите динамически генерировать GUI, ваши варианты немного менее ясны. Я хотел бы рассмотреть возможность использования ваших собственных функций-оболочек на другом языке. Я хотел бы рассмотреть возможность использования Moonsharp для компиляции Lua кода на лету. Железо Python тоже подойдет. Я не знаю, могут ли службы языка F # вызываться аналогичным образом, но я рассмотрю эти варианты.

Если вы специально хотите скомпилировать C# и использовать результаты для отображения WinForms GUI, вам нужно будет использовать CodeDOM . CodeDOM - довольно глубокая кроличья нора, даже если она мощная, и она не будет легко помещать в песочницу любые GUI, которые она отображает в выходной контейнер, который вы имеете в виду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...