gpt4 book ai didi

c# - 我应该如何强制加载引用的程序集?

转载 作者:太空狗 更新时间:2023-10-29 20:40:25 25 4
gpt4 key购买 nike

我有一个第三方库,当我调用他们的代码时需要加载程序集 A。该程序集通常安装在 GAC 中,因此我有几个加载它的选项:

  1. 我可以显式调用 Assembly.Load()。但是,这需要全名,我不愿意在我的程序中进行硬编码。
  2. 我可以显式调用 Assembly.LoadWithPartialName()。那当然是一个过时的 API,当然我不愿意失去对版本控制的控制。
  3. 我可以在我的 Visual Studio 项目文件中引用该程序集,因此我始终可以获得我构建时所针对的版本。但是,除非我在该程序集中创建一个虚拟对象,否则这将不起作用。如果我不这样做,C# 编译器会简单地忽略它。
  4. 同样的问题,如果我调用 Assembly.GetReferencedAssemblies 并强制加载匹配的。即使我将它放入引用列表中,C# 编译器也不会引用我的程序集。

现在我正在做的是调用 typeof(A.Foo).Assembly.GetName() 并忽略返回值。有更好的方法吗?

最佳答案

对我来说,选项 1 是在 VS 项目中引用它。

但如果您想要一种更被动的方法,您可以使用 AppDomain.CurrentDomain.AssemblyResolve 事件处理程序。当需要一个在 AppDomain 中找不到的程序集时,它就会执行。事件参数将告诉您正在寻找的程序集,您可以在此时使用 Assembly.Load() 获取它

关于c# - 我应该如何强制加载引用的程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6604536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com