.net System.IO.FileLoadException:未能加载文件或程序集“系统.运行时.编译器服务.不安全,版本=4.0.4.1

rryofs0p  于 2022-11-26  发布在  .NET
关注(0)|答案(1)|浏览(495)

我一直在使用Mailkit 2.15,现在尝试升级到v3.4.1。当我升级时,安装了它的所有依赖项,包括System.Runtime.CompilerServices.Unsafe v4.5.3。但是当我执行代码时,发生了以下异常。

13-Oct-2022 16:33:19,303 [INFO ] Mail SendEmail       - System.IO.FileLoadException: 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)
File name: 'System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
   at System.Span`1..ctor(T[] array)
   at MimeKit.Utils.ValueStringBuilder..ctor(Int32 initialCapacity)
   at MimeKit.Utils.Rfc2047.Encode(FormatOptions options, Encoding charset, String text, Boolean phrase)
   at MimeKit.Header.EncodeUnstructuredHeader(ParserOptions options, FormatOptions format, Encoding encoding, String field, String value)
   at MimeKit.Header.EncodeAddressHeader(ParserOptions options, FormatOptions format, Encoding encoding, String field, String value)
   at MimeKit.Header.FormatRawValue(FormatOptions format, Encoding encoding, String value)
   at MimeKit.Header.SetValue(FormatOptions format, Encoding encoding, String value)
   at MimeKit.Header..ctor(Encoding encoding, HeaderId id, String value)
   at MimeKit.HeaderList.set_Item(HeaderId id, String value)
   at MimeKit.MimeMessage..ctor()

当我进一步调查时,我注意到MimeKit需要System.Memory,并且System.Memory安装了System.Runtime.CompilerServices.Unsafe v4.5.3。但是我不确定为什么仍然需要[System.Runtime.CompilerServices.Unsafe,Version=4.0.4.1]。
注意:在Mailkit 3.4.1升级之前,我的项目不依赖于System.Runtime.CompilerServices.Unsafe,并且它没有在参考中列出。

6bc51xsx

6bc51xsx1#

这个问题显然是核心MSBuild目的中的已知错误,可能是因为System.Runtime.CompilerServices.Unsafe使用(?)的版本化配置不一致。我不完全清楚问题是什麽。而且听起来这个问题已经在较新版本的MSBuild目的(较新版本的Visual Studio?)中修正。
在任何情况下,将以下App.config文件添加到项目中都应该可以解决程序集解析问题:

<dependentAssembly>
    <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="4.0.4.1" />
</dependentAssembly>

另一种可能性是尝试升级Visual Studio(尽管我不确定这是否可行)。

相关问题