我正在对非托管 dll 的 ac# 绑定进行测试。我如何编写测试,确保.dll 已卸载并再次加载以进行下一次测试,以便 dll 代码中的任何状态都不会传递到下一次测试?
dll 方法是使用 DllImport 属性导入的。
解决方案:
我的 dll 在静态构造函数中进行了一些初始化,所以我必须在再次卸载它后调用这个初始化代码。所以代码如下所示:
private static int SDllHandle;
private static bool SInitializationRequired;
[SetUp]
public static void Init()
{
SDllHandle = LoadLibrary("my.dll");
if (SInitializationRequired)
{
//do some init code
SInitializationRequired = false;
}
}
[DllImport("kernel32")]
static extern int LoadLibrary(string lpLibFileName);
[DllImport("kernel32")]
static extern bool FreeLibrary(int hModule);
[TearDown]
public static void End()
{
//do some release code
while(FreeLibrary(SDllHandle))
{
SInitializationRequired = true;
}
}