2016-11-02 21 views
3

.NET CoreコンソールアプリケーションでRoslynが発生しています。私はアセンブリを作成し、それをメモリストリームにコンパイルしようとしました。しかし、それをロードすると、私はこのエラーを取得する(that normally works on the regular .NET Framework.NETコアのストリームからアセンブリをロードする方法

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 

をAPIが欠落しているように見える:

cannot convert from 'byte[]' to 'System.Reflection.AssemblyName'

蒸気からロードする.NETのコア中の代替とは何ですか? (物理的にアセンブリを保存し、それをロード以外)

答えて

5

あなたは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); 
}