Vit*_*lii 8 .net c# reflection version .net-assembly
我正在创建一些工具,执行NUnit等多个操作.在这个工具里面,我打开.dll程序集并调用方法形成它来运行一些测试.
一切都好,直到我需要重新加载.dll,程序重启.我们的想法是,当工具运行时,我们将所需的程序集复制到一些临时文件夹并从那里调用.如果我需要重新加载,我将另一个复制到另一个临时文件夹,并尝试从另一个文件夹加载新复制并加载到以前的程序集对象
ExecutingAssembly = Assembly.LoadFrom(AssemblyFullPath);
Run Code Online (Sandbox Code Playgroud)
但我的问题是,在我将AssemblyFullPath更改为新的并调用Assembly.LoadFrom之后,它只返回刚装入的第一次加载而不是第二次加载!也许问题是我们无法加载具有不同版本的多个程序集?解决办法是什么?
CLR确实支持将多个版本的强命名程序集加载到同一个程序集中AppDomain.这仅适用于您的程序集具有强名称且每个程序集的版本与另一个不同的版本.
我猜你更有可能处理未签名的程序集.如果是这种情况那么你要求的是不可能的.一旦给定的组件加载到一个组件中AppDomain,它将保持在那里直到AppDomain卸载.要使其工作,您必须将加载的程序集的所有工作抽象为单独的,AppDomain并AppDomain为每个程序集使用new
| 归档时间: |
|
| 查看次数: |
3767 次 |
| 最近记录: |