CSharpScript - TypeLoadException - PullRequest
       59

CSharpScript - TypeLoadException

0 голосов
/ 24 октября 2019

Я использую 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 (а ​​также другие).

...