为什么最小起订量依赖项 uprev 未按预期工作?

Why Moq dependency uprev is not working as expected?

提问人:NirMH 提问时间:10/26/2023 更新时间:10/26/2023 访问量:33

问:

最小起订量具有如下依赖关系层次结构

Moq 4.18.4
  System.Threading.Tasks.Extensions >= 4.5.4
    System.Runtime.CompilerServices.Unsafe >= 4.5.3

在我的应用程序中,我必须使用

System.Runtime.CompilerServices.Unsafe to 4.7.0

所以从定义来看,一切都很好。Moq

我正在尝试执行一个单元测试,该测试使用 from , 它会引发异常(在发布和调试模式下)。AsSpan()System.Memory

System.IO.FileLoadException
HResult=0x80131040
Message=Could not load file or assembly 'System.Runtime.CompilerServices.Unsafe, 
Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its 
dependencies. The located assembly's manifest definition does not match the assembly 
reference. (Exception from HRESULT: 0x80131040)
Source=System.Memory
StackTrace:
   at System.MemoryExtensions.AsSpan(String text)
   at UnitTestProject1.UnitTest1.TestMethod1() in 
   C:\source\repos\ConsoleApp9\UnitTestProject1\UnitTest1.cs:line 13

重现步骤:

使用以下 nuget 创建单元测试项目:

  • 最小起订量版本=“4.20.69”
  • MSTest.TestAdapter 版本=“2.2.8”
  • MSTest.TestFramework 版本=“2.2.8”
  • System.Memory 版本=“4.5.4”
  • System.Runtime.CompilerServices.Unsafe Version=“4.7.0”

尝试运行(发布或调试),你会得到一个异常。b = a.AsSpan()

namespace UnitTestProject1
{
    using System;
    using Microsoft.VisualStudio.TestTools.UnitTesting;

    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void TestMethod1()
        {
            string a = "asdfdsa";
            var b = a.AsSpan();
        }
    }
}

这是一个错误吗?还是我错过了什么?

C# 最小起订量 net-4.6.2

评论

0赞 Astrid E. 10/26/2023
听起来您的解决方案引用了某处的 4.0.4.1 版本,因为您收到的错误消息开始于无法加载文件或程序集“System.Runtime.CompilerServices.Unsafe,Version=4.0.4.1”。System.Runtime.CompilerServices.Unsafe
0赞 NirMH 10/27/2023
@AstridE.:最小起订量确实指的是 4.0.4.1 - 但它不遵循依赖项的版本升级。我问这是不是最小起订量错误?
0赞 Astrid E. 10/27/2023
哦,那我一定是误会了。由于您为 Moq v4.18.4 发布的依赖项层次结构,我没想到 Moq v4.20.69 会引用 [...] 的更早版本。不安全 v4.5.3.不幸的是,我不知道这是否是最小起订量错误。

答: 暂无答案