我有一些代码使用Crystal Reports运行时库生成并丢弃一个小的虚拟报告,以确保在用户创建真实报告之前及时将库加载到内存中。 (这是一个“感知性能和问题”。)当用户生成报告时,性能得到了显着提升,因此显然所有功能都可以。
现在我需要编写一个单元测试,证明Crystal库确实在预期时已经加载到内存中 - 但是我尝试使用Assembly.GetExecutingAssembly().GetModules()
来测试那些内容并没有帮助。 (GetCallingAssembly().GetModules()
也不是更好。)
如何在单元测试中检查是否已加载这些组件?
TIA
答案 0 :(得分:3)
以下代码示例使用GetAssemblies方法获取已加载到应用程序域中的所有程序集的列表。然后将程序集显示到控制台。
public static void Main()
{
AppDomain currentDomain = AppDomain.CurrentDomain;
//Provide the current application domain evidence for the assembly.
Evidence asEvidence = currentDomain.Evidence;
//Load the assembly from the application directory using a simple name.
//Create an assembly called CustomLibrary to run this sample.
currentDomain.Load("CustomLibrary",asEvidence);
//Make an array for the list of assemblies.
Assembly[] assems = currentDomain.GetAssemblies();
//List the assemblies in the current application domain.
Console.WriteLine("List of assemblies loaded in current appdomain:");
foreach (Assembly assem in assems)
Console.WriteLine(assem.ToString());
}
P.S。 :要运行此代码示例,您需要创建名为CustomLibrary.dll的程序集,或更改传递给GetAssemblies方法的程序集名称。
请参阅MSDN