gpt4 book ai didi

C# 将不同版本的程序集加载到同一个项目

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

我正在创建一些工具来执行多个操作,例如 NUnit。在这个工具中,我打开 .dll 程序集并调用方法来运行一些测试。

一切正常,直到我需要重新加载 .dll 并重新启动程序。这个想法是,当工具运行时,我们将所需的程序集复制到某个临时文件夹并从那里调用。如果我需要重新加载,我将另一个复制到另一个临时文件夹并尝试加载从另一个文件夹复制的新文件并加载到以前的程序集对象

  ExecutingAssembly = Assembly.LoadFrom(AssemblyFullPath); 

但我的问题是,在我将 AssemblyFullPath 更改为新路径并调用 Assembly.LoadFrom 之后,它只返回旧程序集,这是第一次加载的内容,而不是第二次加载的内容!也许问题是我们无法加载多个不同版本的程序集?解决方案是什么?

最佳答案

CLR 确实支持将强命名程序集的多个版本加载到同一个 AppDomain 中。这仅在您的程序集被强命名并且每个程序集都具有不同版本的情况下才有效。

我猜您更有可能处理未签名的程序集。如果是这种情况,那么您所要求的实际上是不可能的。一旦给定程序集加载到 AppDomain 中,它将保留在那里,直到卸载 AppDomain。为了让它工作,你必须将所有围绕加载程序集的工作抽象到一个单独的 AppDomain 中,并为每个程序集使用一个新的 AppDomain

关于C# 将不同版本的程序集加载到同一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20686362/

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