DLL在Roslyn中的使用
在上一篇Roslyn的文章中 - Roslyn动态编译DLL和缺少Private.CoreLib的问题 我们成功的动态编译了DLL文件,那么我们今天来继续研究在Roslyn中使用。
本文研究的是如何从开始简单的调用DLL,到最后在不同的ALC中加载运行。
简单调用DLL
加载DLL,为了后面的卸载功能。这里统一使用AssemblyLoadContext,后面统一叫ALC。更简单的可以直接使用Assembly.Load,不是本文重点,请自行研究。
准备工作
我们先复习下怎么制作DLL,见 Roslyn动态编译DLL和缺少Private.CoreLib的问题 ,我们编译这个code0.cs文件,距离步骤这里不写了。
using System;
namespace RoslynCompileSample
{
public class Funs
{
public static string GetName()
{
return ""Get Funs.Name ()"";
}
}
}
放到c:\Temp\code0.dll。
首先加载
我们把dll加载到一个名为mydll的ALC中
string path = @"c:\Temp\code0.dll";
string contextname = "mydll";
AssemblyLoadContext alc_dll = new AssemblyLoadContext(contextname, true);
Assembly ass = alc_dll.LoadFromAssemblyPath(path);
创建动态脚本调用
全部脚本:
public void LoadDll()
{
//读取程序集MyLib.dll
string mydllPath = @"c:\Temp\code0.dll";
string contextname = "code0";
AssemblyLoadContext alc_dll = new AssemblyLoadContext(contextname, true);
Assembly ass = alc_dll.LoadFromAssemblyPath(mydl

最低0.47元/天 解锁文章
472

被折叠的 条评论
为什么被折叠?



