代码之家  ›  专栏  ›  技术社区  ›  GarethOwen

在visualstudio中运行单元测试的问题

  •  5
  • GarethOwen  · 技术社区  · 15 年前

    在运行(VS 2008.NET)单元测试的发布版本时,出现以下异常:

    System.IO.FileLoadException:无法加载文件或程序集“arcVegaORM,Version=1.0.3856.24327,Culture=neutral,PublicKeyToken=0dd85ae1d99ddbee”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配(HRESULT异常:0x80131040)。

    单元测试框架正在将“arcVegaORM”程序集的旧版本复制到TestResults\Out文件夹中。我不知道它从哪里得到旧版本-它与projects bin\Release文件夹中的版本不匹配。

    我开始认为VS.NET单元测试框架有一个bug,它缓存了旧版本。

    2 回复  |  直到 9 年前
        1
  •  2
  •   dcp    15 年前

    要检查的一件事是 GAC (全局程序集缓存)。您可以通过打开windows资源管理器并在地址栏中键入c:\windows\assembly(假设您的操作系统安装在c驱动器上)来完成此操作。

    它可能是从GAC那里得到装配。

    其他要做的事情是清理解决方案并执行全部重建,以确保没有任何旧的程序集引用。

    另外,如果这是一个web应用程序,那么停止IIS,然后清除 C:\WINDOWS\Microsoft.NET\Framework\framework_version\Temporary ASP.NET Files

    小费
    .Net reflector

    方法是安装反射器,然后运行它,然后将程序集拖到其中,这样就可以看到程序集的依赖关系。您需要确保这些依赖项dll中的每一个都在目标计算机上可用,并且如果它们是有符号的程序集,则版本号必须正确。

    提示2
    请注意,有时会遇到程序集A与程序集B的版本xxx绑定,程序集C与程序集B的版本yyy绑定的问题。换句话说,项目中的两个不同程序集是针对同一程序集的不同版本绑定的。这是现代版的地狱。解决这个问题的方法是使用程序集重新绑定。你可以看看 here .

        2
  •  1
  •   GarethOwen    15 年前

    我现在在MSDN论坛上发现了一个帖子——似乎是个bug:

    http://social.msdn.microsoft.com/Forums/en-US/vststest/thread/af530ba8-1299-4113-a5fe-4f6b009fa599

    !! 如果我关闭代码覆盖率,那么测试运行良好!!