NET CORE加载第三方项目控制器(续)
在这一篇文章中,我们已经把第三方API动态库加入到了自己项目。但是,若API中有引用到Services层的代码,则无法正常执行。利用一下方式,可以完美解决这一问题。
Program.cs 文件,Main方法中,添加:
AppDomain.CurrentDomain.AssemblyResolve += (sender, e) => LoadEmbeddedAssembly(e.Name);
委托:
/// <summary>
///自定义加载程序集
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
private static Assembly LoadEmbeddedAssembly(string name)
{
var container = Assembly.GetExecutingAssembly();
var filePath = new AssemblyName(name).Name + ".dll";
using (var stream = container.GetManifestResourceStream(filePath))
{
if (stream == null)
{
if (File.Exists($"{AppDomain.CurrentDomain.BaseDirectory}Controller\\{path}"))
{
return Assembly.LoadFile($"{AppDomain.CurrentDomain.BaseDirectory}Controller\\{path}");
}
else
{
return null;
}
}
var bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
return Assembly.Load(bytes);
}
}