Сценарий Roslyn не выполняется должным образом из библиотеки/nuget ⇐ C#

Место общения программистов C#
Anonymous
Сценарий Roslyn не выполняется должным образом из библиотеки/nuget

Сообщение Anonymous »

Я пытаюсь использовать в проекте сценарии C# Roslyn. Я написал некоторый класс, код которого читает файл, содержащий скрипт, выполняет его и возвращает результат. Если этот класс присутствует в том же проекте, он работает нормально. Но если он исходит из библиотеки Nuget (которую я тестирую с использованием локального источника nuget, поэтому ее легко изменить код библиотеки и быстро протестировать), которая представляет собой общую библиотеку, созданную для разных классов выполнения для моего варианта использования, она не работает и не возвращается. содержимое скрипта.

Код: Выделить всё

        var scriptPath = payload.Get(Constants.Source) as string;
var script = _fileReader.ReadFile(scriptPath);

var options = ScriptOptions.Default
.AddReferences(Assembly.GetExecutingAssembly())
.AddReferences(typeof(object).Assembly)
.AddReferences(AppDomain.CurrentDomain.GetAssemblies()
.Where(assembly => !assembly.IsDynamic && !string.IsNullOrEmpty(assembly.Location)))
.AddImports("System", "System.Collections.Generic")
.WithOptimizationLevel(OptimizationLevel.Release)
.WithAllowUnsafe(false)
.WithCheckOverflow(true);

var result = CSharpScript.EvaluateAsync(script, options, globals: new CodeExecutorInput { Data = new Dictionary() })
.GetAwaiter().GetResult();
var output = new JObject {
[Constants.DEFAULT_OUTPUT_KEY] = JToken.FromObject(result)
};
success(new DefaultOutput(output)); //This is an Action delegate`
Я попробовал добавить все ссылки, как указано во фрагменте кода, но, похоже, ничего не работает.
Если класс присутствует в том же проекте -> {"result": 16}
Если класс присутствует в Nuget -> {"result": "int test = 0;\nvar count = test + 15;\ncount++;\nreturn count;"}
Ожидания для класса в Nuget такие же как класс в том же проект, т. е. {"result": 16}

Подробнее здесь: https://stackoverflow.com/questions/791 ... rary-nuget

Вернуться в «C#»