我一直在使用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,也没有在参考资料中列出。
发布于 2022-11-23 15:04:57
这个问题显然是核心MSBuild目标中的一个已知错误,可能是因为System.Runtime.CompilerServices.Unsafe使用的版本控制方案不一致。我不太清楚问题出在哪里。听起来这个问题在MSBuild目标的新版本( Visual的更新版本?)中也得到了修正。
在任何情况下,向项目中添加以下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 (虽然我不确定这是否有效)。
https://stackoverflow.com/questions/74055461
复制相似问题