在System.Web.Http

时间:2015-11-03 05:21:09

标签: c# unit-testing dll mstest

我有一个通用的问题可能是一些独特的行为(它让我很生气)。我在Visual Studio 2012中使用.Net framework 4.5。我正面临运行单元测试的问题:

  

FileLoadException Occured:无法加载文件或程序集   'System.Web.Http,Version = 5.2.0.0,Culture = neutral,   PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。该   找到程序集的清单定义与程序集不匹配   参考。 (HRESULT异常:0x80131040)

我的单元测试app.config具有以下配置

  <dependentAssembly>
    <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" />
  </dependentAssembly>

我的项目(单元测试调用方法)具有以下内容

  <dependentAssembly>
    <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" />
  </dependentAssembly>

现在奇怪的问题是,我能够在我的机器上成功运行单元测试(安装了VS 2013和VS 2012)。但是在我的同事的机器上(仅安装了VS 2012),它失败并出现上述错误。我从哪里获得此5.2.0.0版本号?

解决方案(包括单元测试)在Build服务器中运行良好。所以我假设我的机器配置很好,我的同事的机器有一些问题。 GAC中没有项目Dll。

我做了什么

  1. 删除基本文件夹并在两台计算机中具体使用。我的机器运行正常,其他机器运行失败。
  2. 启用所有例外设置并发现其他错误
  3.   

    显示名称为“System.Web.Http”的程序集无法加载   '加载'AppDomain的绑定上下文,ID为2.原因   失败的原因是:System.IO.FileLoadException:无法加载文件或   程序集'System.Web.Http,Version = 5.2.0.0,Culture = neutral,   PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。该   找到程序集的清单定义与程序集不匹配   参考。 (HRESULT异常:0x80131040)

    1. 验证了我的单元测试和项目bin/debug文件夹。两者都有5.2.2.0版本的DLL(预期)。但不确定为什么我的5.2.0.0版本需要运行测试?
    2. 已验证两台计算机都安装了相同的IIS功能(这与我的问题完全无关)。
    3. 确保所有DLL引用都通过Solution Nuget包管理器引用,因此在两台机器中共享相同的DLL集合(如果有人认为它应该解决问题,那么我将尝试再次交叉验证)。
    4. 请记住,我的机器能够使用相同的配置成功运行单元测试。我假设不需要任何代码更改。可以请任何人帮我解决这个问题吗?

      感谢。

0 个答案:

没有答案