Я работаю на веб-сайте, где пользователь может реализовать решение кода C # для решения проблемы в текстовой области браузера и отправить его. Затем сервер скомпилирует этот код вместе с предопределенным интерфейсом, который я предоставляю на сервере. Думайте об этом как о шаблоне разработки стратегии; Я предоставляю интерфейс стратегии, и пользователи реализуют его. Поэтому мне нужно скомпилировать строку и предопределенный файл * .cs вместе во время выполнения. Вот код, который у меня сейчас есть, который компилирует только строковую часть:
CodeDomProvider codeProvider = CodeDomProvider.CreateProvider("CSharp");
CompilerParameters parameters = new CompilerParameters();
parameters.OutputAssembly = "CodeOutputTest.dll"; // need to name this dynamically. where to store it?
parameters.GenerateExecutable = false;
parameters.IncludeDebugInformation = false;
CompilerResults results = codeProvider.CompileAssemblyFromSource(parameters, request.Code);
Пользователи будут отправлять что-то вроде этого:
public class UserClass : IStrategy
{
public string ExecuteSolution(string input)
{
// user code
}
}
За исключением проблем безопасности (это тяжелый вопрос для другого дня) ... как я могу скомпилировать это вместе с моим предопределенным интерфейсом * .cs файлом Или есть лучший способ справиться с этим?
Спасибо!