首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重定向AutoFixture的Moq引用

重定向AutoFixture的Moq引用
EN

Stack Overflow用户
提问于 2014-10-02 17:36:24
回答 2查看 1.1K关注 0票数 2

我在构建服务器上的一个测试项目中遇到了一些问题。项目中的一些测试使用带有AutoMoq的AutoFixture。

由于AutoMoq使用的Moq版本比我们使用的旧版本,因此我们在app.config中有一个重定向(由我假设的AutoMoq NuGet脚本生成):

代码语言:javascript
复制
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Moq" publicKeyToken="69f491c39445e920" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.2.1409.1722" newVersion="4.2.1409.1722" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Ploeh.AutoFixture" publicKeyToken="b24654c590009d4f" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.20.2.0" newVersion="3.20.2.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

测试在开发人员机器上运行没有问题,但有一个项目(在使用AutoFixture、AutoMoq和Moq的众多项目中)在使用TeamCitys NUnit runner运行时抛出了这个问题:

代码语言:javascript
复制
Test(s) failed. System.IO.FileLoadException : Could not load file or assembly 'Moq, Version=4.0.10827.0, Culture=neutral, PublicKeyToken=69f491c39445e920' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
   at Ploeh.AutoFixture.AutoMoq.MockPostprocessor.Create(Object request, ISpecimenContext context)
   at Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create(Object request, ISpecimenContext context)
   at Ploeh.AutoFixture.CustomizationNode.Create(Object request, ISpecimenContext context)
   at Ploeh.AutoFixture.Kernel.CompositeSpecimenBuilder.Create(Object request, ISpecimenContext context)
   at Ploeh.AutoFixture.Kernel.TracingBuilder.Create(Object request, ISpecimenContext context)
   at Ploeh.AutoFixture.Kernel.TerminatingWithPathSpecimenBuilder.Create(Object request, ISpecimenContext context)
   at Ploeh.AutoFixture.BehaviorRoot.Create(Object request, ISpecimenContext context)
   at Ploeh.AutoFixture.Kernel.RecursionGuard.Create(Object request, ISpecimenContext context)
   at Ploeh.AutoFixture.Fixture.Create(Object request, ISpecimenContext context)
   at Ploeh.AutoFixture.Kernel.SpecimenContext.Resolve(Object request)
   at Ploeh.AutoFixture.SpecimenFactory.Create[T](ISpecimenContext context, T seed)
   at Ploeh.AutoFixture.SpecimenFactory.Create[T](ISpecimenContext context)

为什么对(4.0.10827.0 )的Moq引用没有重定向到4.2.1409.1722?

我已经检查了构建服务器工作目录,app.config和dlls看起来都很好。

EN

回答 2

Stack Overflow用户

发布于 2014-10-21 14:08:18

正如在the relevant AutoFixture issue中所解释的,AutoFixture不会也不会因为它而依赖于最新版本。

您的错误消息与任何AutoFixture本身所要求的任何版本都没有关系,因此您的环境中的某些东西是唯一可能的解释。我正在使用\\live.sysinternals.com\tools\procexp.exe查看从哪里传来的信息。

票数 0
EN

Stack Overflow用户

发布于 2014-11-04 22:49:13

我不知道这是否会有帮助,但我遇到了类似症状的问题,解决方案被证明是完全不同的东西,即:https://stackoverflow.com/a/3668371/487544

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26158106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档