如何在.NET Core中从流加载程序集

我在.NET Core控制台应用程序上遇到Roslyn。 我试图创建一个程序集并将其编译成一个内存流。 但加载它似乎缺少一个API( 通常适用于常规的.NET Framework )

var compilation = CSharpCompilation.Create("MyCompilation", syntaxTrees: new[] { pocoTree }, references: new[] { mscorlib, currentAssembly }); var ms = new MemoryStream(); var emitResult = compilation.Emit(ms); var ourAssembly = Assembly.Load(ms.ToArray()); // Fails to compile here 

我收到此错误:

无法从’byte []’转换为’System.Reflection.AssemblyName’

.NET Core中从steam加载的替代方法是什么? (除了物理保存组件并加载它)

您可以使用AssemblyLoadContext从.NET核心中的流加载程序集:

 // requires "System.Runtime.Loader": "4.0.0", protected virtual Assembly LoadAssembly(MemoryStream peStream, MemoryStream pdbStream) { return System.Runtime.Loader.AssemblyLoadContext.Default.LoadFromStream(peStream, pdbStream); }