C#在.NET库项目中动态使用命名空间引用dll路径进行更改

时间:2018-07-31 23:17:26

标签: c# asp.net .net-assembly

我有一个类库.net项目(没有配置,没有exe文件),我有类似的东西;

using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Reflection;
using System.Web.UI.WebControls;
using eBAControls; *<-- I want this dll to be loaded from a path in runtime.*

出于将来的原因,我必须制作copyLocal false,因此我需要能够在运行时引用dll。与当前dll 放在同一文件夹中的其他第三方dll不会引起任何问题,但是eBAControls dll与该当前dll不在同一文件夹中,因此出现错误:{{ 1}} ...

出于某些编码和性能的原因,我也不能为此使用反射,因此需要将其添加到引用中...

我想要的只是

Could not load file or assembly 'eBAControls

1 个答案:

答案 0 :(得分:3)

如果将事件处理程序放在AppDomain.AssemblyResolve上,则可以从任意位置加载程序集。参见Resolving Assembly Loads

这是一篇具有基本知识的博客文章。关键是时间。您必须在第一个引用该程序集的方法是JITted之前附加事件之前https://blogs.msdn.microsoft.com/dbrowne/2014/06/25/how-to-load-an-assembly-in-a-ssis-script-task-that-isnt-in-the-gac/