我们有第三方DLL(lib1.dll
),它是Win32 .NET程序集。同时,我们编写了一个引用lib2.dll
。
lib1.dll
)
之后,我们编写了单元测试(通过NUnit
)来测试lib2
,并发生异常:
Could not load file or assembly or one of its dependencies.
LIB1:
using System;
using System.Diagnostics;
public class Helper
{
public Helper()
{
}
public static void Execute()
{
Trace.WriteLine(DateTime.Now);
}
}
LIB2:
namespace lib2
{
public class Manager
{
public int Add(int a, int b)
{
Helper.Execute();
return a + b;
}
}
}
NUnit测试:
[Test]
public void Foo()
{
var manager = new Manager();
Assert.AreEqual(5, manager.Add(2,3));
}
我们的代码与上面的行为相同。测试执行时,Helper.Execute()
会抛出异常,表示无法加载程序集lib1.DLL
。
最奇怪的是我们无法重现这个问题。但是,我们可以通过添加这样的行预加载代码来解决此问题:
[Test]
public void Foo()
{
var pre_load = new Helper();
var manager = new Manager();
Assert.AreEqual(5, manager.Add(2,3));
}
但我们仍然不知道根本原因。有没有人以前遇到过这个问题,或者有人能给我一些提示如何进行诊断吗?