я разработал метод, чтобы проверить, если сценарий есть ошибки:Рослины скрипта получает ошибку при добавлении методов/Fuctions
public static object Test(string code, string references)
{
try
{
Compilation compilation = CSharpScript.Create(code,
options: ScriptOptions.Default
.AddReferences(references)
.AddImports("System.Collections.Specialized", "System.Linq", "System.Net"),
globalsType: typeof(ScriptObject)
).GetCompilation();
using (var ms = new MemoryStream())
{
EmitResult result = compilation.Emit(ms);
if (!result.Success)
{
var failures = result.Diagnostics.Where(diagnostic =>
diagnostic.IsWarningAsError ||
diagnostic.Severity == DiagnosticSeverity.Error).Select(s => s.GetMessage());
return (new { Success = false, ErrorMessage = failures });
}
}
}
catch (Exception e)
{
return (new { Success = false, ErrorMessage = e.Message });
}
return (new { Success = true });
}
Если я побежал простого код тестового проход OK
Но если добавить к коде метод/функция, я получаю исключение. Пример:
int Add(int x, int y) {
return x+y;
};
Add(1, 4)
Взято отсюда: https://blogs.msdn.microsoft.com/cdndevs/2015/12/01/adding-c-scripting-to-your-development-arsenal-part-1/
Я получаю ошибку
; Ожидается, Запятая после приема или аксессора блока не является действительным, только назначением, вызова, увеличения, уменьшения, и новые выражений объекта может быть использован в качестве заявления
Ошибки в «возвращении х + у;» предложение, если я добавлю «int c = x + y;» Я получаю ошибку на этой линии
Ожидается, что она будет работать, не так ли?