我有一个第三方库,当我调用他们的代码时需要加载程序集A。该程序集通常安装在GAC中,因此我有几个选项来加载它:
- 我可以显式调用
Assembly.Load()
。但是这需要我硬编码完整名称,我不感到舒服。 - 我可以显式调用
Assembly.LoadWithPartialName()
。当然,那是一个过时的API,而且我不想失去版本控制。 - 我可以在我的Visual Studio项目文件中引用程序集,这样我总是得到我构建所需的版本。但是,除非我在该程序集中创建一个虚拟对象,否则这种方法行不通。如果我不这样做,C#编译器会简单地忽略它。
- 如果我调用
Assembly.GetReferencedAssemblies
并强制加载匹配的程序集,则会出现相同的问题。即使我将其放在引用列表中,C#编译器也不会引用我的程序集。
现在我正在调用typeof(A.Foo).Assembly.GetName()
并忽略返回值。有更好的方法吗?