脚本评估代码片段:
using (var loader = new InteractiveAssemblyLoader())
{
var script = CSharpScript.Create<TDataType>(
code: expr,
options: ScriptOptions.Default.AddImports(globals.GetType().Namespace)
.AddReferences(refAssemblies),
globalsType: globals.GetType(),
assemblyLoader: loader);
return script.RunAsync(globals).Result.ReturnValue;
}
代码分析程序集和全局类型程序集被加载到同一个 Collectible AssemblyLoadContext... 还尝试通过 ScriptOptions 显式添加引用/导入,但得到相同的以下错误:
内部异常 1:InvalidCastException:[A]TestLibrary.TestClass 不能转换为 [B]TestLibrary.TestClass。类型 A 源自 'TestLibrary,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null',位于位置 '...\TestLibrary.dll' 的上下文 'Default' 中。类型 B 源自 'TestLibrary,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null',位于位置 '...\TestLibrary.dll' 的上下文 'Default' 中。