我有一个第三方库,当我调用他们的代码时需要加载程序集A. 该程序集通常安装在GAC中,因此我有几个选项可以加载它:
Assembly.Load().然而,这需要全名,我觉得我的程序中的硬编码不舒服.Assembly.LoadWithPartialName().那当然是一个过时的API,当然我在版本控制中失去控制感觉不舒服.Assembly.GetReferencedAssemblies并强制加载匹配的问题,同样的问题.即使我把它放在引用列表中,C#编译器也不会引用我的程序集.现在我正在做的是调用typeof(A.Foo).Assembly.GetName()并忽略返回值.有没有更好的方法呢?
对我来说,选项 1 是在 VS 项目中引用它。
但如果您想要更被动的方法,可以使用 AppDomain.CurrentDomain.AssemblyResolve 事件处理程序。当需要在 AppDomain 中找不到的程序集时,它会执行。事件参数将告诉您正在寻找的程序集,您可以在此时使用 Assembly.Load() 获取它
| 归档时间: |
|
| 查看次数: |
3113 次 |
| 最近记录: |