C# CSharpScript-TypeLoadException
我正在使用Microsoft.CodeAnalysis.CSharp.Scripting的CSharpScript(版本3.4.0-beta2-final)执行自定义计算。有些计算不是直接在脚本中定义的,而是委托给MyPlugin.calculations类的已编译静态方法进行的,它驻留在MyPlugin程序集中(仅调用静态方法) 当我试图从脚本中调用Calculations类的静态方法时C# CSharpScript-TypeLoadException,c#,types,scripting,typeloadexception,csharpscript,C#,Types,Scripting,Typeloadexception,Csharpscript,我正在使用Microsoft.CodeAnalysis.CSharp.Scripting的CSharpScript(版本3.4.0-beta2-final)执行自定义计算。有些计算不是直接在脚本中定义的,而是委托给MyPlugin.calculations类的已编译静态方法进行的,它驻留在MyPlugin程序集中(仅调用静态方法) 当我试图从脚本中调用Calculations类的静态方法时 return Calculations.GetHpPipingPrice(); 它抛出以下异常: Typ
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.Data程序集中加载类型计算。我添加了对MyPlugin程序集的引用,并将MyPlugin命名空间导入到ScriptOptions中。这里有什么问题?这可能是因为我有一个插件系统,并使用assembly.LoadFrom方法加载MyPlugin程序集?MyPlugin与正在执行的程序集不在同一目录中。数据程序集包含用于初始化的数据(它还包含脚本体)
编辑:这是创建脚本的方式:
var compiledScript = CSharpScript.Create(Body, globalsType: InputType,
options: ScriptOptions.Default.AddReferences(AssemblyReferences).AddImports(Imports));
CompiledScript = compiledScript.CreateDelegate();
其中AssemblyReferences包含程序集MyPlugin(以及其他),Imports包含MyPlugin命名空间(以及其他)。您可以在创建
脚本选项的位置发布代码片段吗?请参见原始问题的编辑。