我正在使用一个使用 .Net 框架的软件来执行一些任务。
我们正在尝试使用 Mailkit.dll 文件,但在使用它时我们遇到以下消息:
内部:无法执行代码阶段,因为代码阶段引发异常:无法加载文件或程序集“System.Memory,Version=4.0.1.2,Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT 异常:0x80131040)
从我到目前为止得出的结论来看,Mailkit.dll 依赖于 Mimekit.dll,而 Mimekit.dll 又依赖于 System.memory.dll,类似的东西。
Mailkit.dll > Mimekit.dll > System.Memory.dll
版本详情:
我不知道问题是什么或为什么会发生这种情况,但我很确定这与版本问题有关,因此欢迎任何帮助。
您提供的版本号是一个很好的起点。
对于 .NETFramework 4.7,MailKit v3.4.1 依赖于 MimeKit v3.4.1,后者又依赖于 System.Memory >= v4.5.5。
NuGet 版本 v4.5.5 的 System.Memory 具有 of AssemblyFileVersion(4.6.31308.01Windows 资源管理器中显示的数字),但具有AssemblyVersionof 4.0.1.2。当 CLR 查找程序集时,程序集编号才是真正重要的。CLR 在加载 MimeKit 时查找,v4.0.1.2但只能找到v4.0.1.1.
最终输出中的版本比所需的版本旧。我发现您输出中实际的版本来自 System.Memory v4.5.4。: AssemblyFileVersion。: 。4.6.28619.01AssemblyVersion4.0.1.1
如果您直接引用 System.Memory nuget 包,则可能会发生这种情况。如果您确实有对 System.Memory 的直接包引用,那么您需要升级它。
如果您使用的是 SDK 样式的项目,则会收到错误消息,从而阻止这种情况发生。但您仍然应该收到有关检测到的版本冲突的构建警告。
