Я использую CSharpScript (версия 3.4.0-бета2-финал) Microsoft.CodeAnalysis.CSharp.Scripting для выполнения пользовательских вычислений. Некоторые вычисления не определяются непосредственно в скрипте, но делегируются скомпилированным статическим методам класса MyPlugin.Calculations, которые находятся в сборке MyPlugin (только вызов статического метода).
Когда я пытаюсь вызвать статический методкласс Вычисления из скрипта
return Calculations.GetHpPipingPrice();
Выдает это исключение:
TypeLoadException: Could not load type 'MyPlugin.Calculations' from assembly 'MyPlugin.Data, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
Я не понимаю, почему он пытается загрузить сборку типа Вычисления из MyPlugin.Data, когда онопределяется в сборке MyPlugin. Я добавил ссылку на сборку MyPlugin и импортировал пространство имен MyPlugin в ScriptOptions. В чем здесь проблема? Может ли быть так, что у меня есть система плагинов и я загружаю сборку MyPlugin, используя метод Assembly.LoadFrom? MyPlugin не находится в том же каталоге, что и исполняющая сборка. Сборка MyPlugin.Data содержит данные, которые используются для инициализации (она также содержит тело сценариев).
Редактировать: сценарий создается так:
var compiledScript = CSharpScript.Create(Body, globalsType: InputType,
options: ScriptOptions.Default.AddReferences(AssemblyReferences).AddImports(Imports));
CompiledScript = compiledScript.CreateDelegate();
ГдеAssemblyReferences содержит сборку MyPlugin (а также другие), а Imports содержит пространство имен MyPlugin (а также другие).