运行时的.Net Load Reference

Pal*_*ani 3 .net reflection assemblies

我有以下要求,

  • 我有C#/ .net控制台应用程序,它指的是'System.Data.Sqlite.dll'
  • 'System.Data.Sqlite.dll'未在GAC中注册(我不想)
  • 我不想将它保留在保存可执行文件(.exe)的目录中.

  • 如何将'System.Data.Sqlite.dll'文件保存在其他目录中,并在运行时安全地加载它,然后才能在应用程序代码中引用它?

Sam*_*der 9

您可以使用手动装配分辨率来执行此操作.

您需要为当前AppDomain中的AssemblyResolve事件提供委托

AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.AssemblyResolve += assemblyResolver.ResolveEventHandler;
Run Code Online (Sandbox Code Playgroud)

当应用程序有任何无法解析的程序集引用时,它将调用此委托来解决程序集.然后,您只需返回委托中请求的程序集:

Assembly assembly = Assembly.LoadFrom (assemblyPath);
return assembly;
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助