C# 在C中调用泛型方法时缺少MemberException#

C# 在C中调用泛型方法时缺少MemberException#,c#,generics,exception,C#,Generics,Exception,运行unittest时,我收到以下异常: 测试方法引发异常: System.MissingMethodException:方法 找不到:“System.String” DataUtilities.HelperMethods.Serialize(!!0) 这只发生在运行unittest时,而不是在调试它时。当我调试它时,不会发生错误 被调用的方法的签名: public static string Serialize<T>(T value) 公共静态字符串序列化(T值) 该方法位于引

运行unittest时,我收到以下异常:

测试方法引发异常: System.MissingMethodException:方法 找不到:“System.String” DataUtilities.HelperMethods.Serialize(!!0)

这只发生在运行unittest时,而不是在调试它时。当我调试它时,不会发生错误

被调用的方法的签名:

public static string Serialize<T>(T value)
公共静态字符串序列化(T值)
该方法位于引用的dll中

我注意到以下几点:在引用的dll中,有一个方法包装对Serialize(T value)方法的调用

其代码为:

public static string SerializeList(List<object> list)
{
    TraceClass.Write("something",list);
    string x = HelperClass.Serialize<List<object>>(list);
    TraceClass.Write(x);
    return x;
}
公共静态字符串序列化列表(列表列表)
{
TraceClass.Write(“某物”,列表);
字符串x=HelperClass.Serialize(列表);
TraceClass.Write(x);
返回x;
}
如果我调用HelperClass.Serialize,使用这个“间接”就可以了。在调试和正常运行模式下


我做错了什么?

在运行单元测试时,我会检查以确保dll没有从其他位置被引用。您很可能在某个地方有一个旧的dll文件,测试运行程序正在查找该文件,这就是为什么会出现该错误。

确定。老实说,我真的不知道是什么让它现在工作,但它现在正在运行

我删除了所有直接引用项目的所有bin和object文件夹。用于创建测试所需的folderstructure的所有中间文件夹。 所有旧的Testresult文件夹

然后重建所有

现在它起作用了


以前,我已经对所有相关的程序集执行了此操作。显然这还不够。

这也是我最初的想法。但是:unittest的out文件夹中引用的dll的日期是当前日期。它必须被缓存在某个地方。但为什么只是为了调试?@Stampede我不确定是否诚实。也许它在GAC或其他项目文件夹中?要在GAC中,我必须手动添加它,好吗?我从来没有那样做过。我真的很确定。我在某个论坛上读到它可能在VisualStudio的IDE文件夹中,但我在那里也找不到它。@Stampede是的,你必须在知情的情况下添加它。听起来像是干净的工作,所以无论旧的dll在哪里,干净一定找到了它,并用最新的刷新它。+1,因为你通常是对的,让我更热切地追求这个想法