【问题标题】:Mock.Create<>() requiring strong nameMock.Create<>() 需要强名称
【发布时间】:2018-03-30 17:19:56
【问题描述】:

我有以下依赖树

  • 我的框架
  • 数据访问
  • 处理器
  • Processor.Tests

每个程序集都引用它上面的所有程序集。所以 Processor.Tests 引用了 Processor、DataAccess 和 MyFramework。除了 ProcessorTests 对 Processor 的引用之外,所有引用都通过私有 Nuget 服务器。

我需要模拟的 DataAccess 程序集中有一个接口 (IMessageLogger)。该接口中的一个方法具有 MyFramework 中定义的类型的参数。

当我尝试Mock.Create&lt;IMessageLogger&gt;() 时,出现以下异常

System.IO.FileLoadException:无法加载文件或程序集“MyFramework,Version=2017.12.12.1,Culture=neutral,PublicKeyToken=null”或其依赖项之一。需要强命名程序集。 (HRESULT 异常:0x80131044)

我的所有程序集都不是强命名的,但 Telerik.JustMock 是强命名的,但到目前为止它在模拟任何其他接口时没有给我带来任何麻烦。

有人知道我可以如何解决这个问题吗?

【问题讨论】:

  • or one of its dependencies - MyFramework 引用什么作为依赖项?
  • 它引用了 20 个其他程序集(一些内部的一些公共 Nuget,一些 .Net 框架),其中一些当然会引用其他程序集。您在寻找特定的东西吗?还是您认为程序集的名称可能会提示您?
  • 没有。我正在考虑其他引用的程序集导致测试项目出现问题。
  • 我刚刚浏览了 MyFramework 项目中的所有参考资料。那里引用的所有内容也都从 Processor.Test 中引用,版本匹配,并且所有项目之间具有绑定重定向的少数程序集匹配。
  • 除了标准的东西(Microsoft.CSharp、System、System.Data 等)之外,我们还从我们的私有 Nuget 和以下 3rd 方库中引用了一些其他内部包:antlr.runtime、NewtonSoft .Json、Org.Metalis.Security、RestSharp、TopShelf 和 XSerializer

标签: c# strongname justmock


【解决方案1】:

事实证明,问题在于我的 Processor 和 Processor.Test 项目引用了 MyFramework 程序集的 2018.3.15 版本,但 DataAccess 项目引用的是旧版本 (2017.12.12.1)。

更新了所有项目以使用最新的并且一切都再次运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多