是否可以从我的AppDomain导出dll定义

本文关键字:导出 dll 定义 AppDomain 我的 是否 | 更新日期: 2023-09-27 17:52:16

我的代码库中有代码,我不熟悉,我正在寻找清理和锁定测试用例。

我面临的问题是

A)编写它的开发人员已经不在公司了,看起来没有使用任何标准,也没有进行代码审查,所以甚至没有注释(变量被命名为A, b和c,函数有200行长…)

B)编写它的开发人员有一个方钉圆孔的心态(即;"嘿,我刚学的这个新功能真的很酷,我想我会好好利用它的")

C)难以置信的混乱,没有文档记录,重写它的功能是一项重要的任务

也就是说,代码是意大利面条,我已经缩小了产生大量反射的部分。发出调用以动态生成执行工作的dll。要完成手头的任务,这是难以置信的虚伪,但请参阅B点)。

一半的我想说"忘记这个",重写代码,这样我就可以用测试锁定它。另一半想要挽救现有的东西,因为我知道它是有效的,我的客户每天都在使用这些代码,这并不容易。

是否有办法做类似以下的事情?

foreach(Assembly a in AppDomain.CurrentDomain.GetAssemblies())
{
    if(IS_Assembly_IM_LOOKING_FOR(a))
    {
        SaveToFile(a, @"C:'Temp'MyAssembly.dll")
    }
}

,这样我就可以有一个程序集的"锁定"版本,我可以为它单独编写单元测试,并且有0%的机会通过意外修改动态创建它的代码来破坏它?

是否可以从我的AppDomain导出dll定义

  1. 您可以修改创建程序集的代码,以便将其保存到磁盘(参见此SO问题)
  2. 你也可以使用调试器(如WinDbg),它可以将程序集从内存转储到文件。