Я работаю над веб-сайтом, на котором пользователь может реализовать решение проблемы на коде 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? Или есть лучший способ справиться с этим?
Подробнее здесь:
https://stackoverflow.com/questions/672 ... nd-cs-file