首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DLL版本不匹配问题

DLL版本不匹配问题
EN

Stack Overflow用户
提问于 2022-11-28 14:54:40
回答 1查看 51关注 0票数 2

*问题简介

我正在使用一个使用.Net框架来执行一些任务的软件。

我们正在尝试使用Mailkit.dll文件,但是在使用它时,我们会遇到以下消息:

内部:无法执行代码阶段,因为代码阶段引发的异常:无法加载文件或程序集'System.Memory、Version=4.0.1.2、Culture=neutral、PublicKeyToken=cc7b13ffcd2ddd51‘或其依赖项之一。所定位的程序集的清单定义与程序集引用不匹配。(HRESULT例外: 0x80131040)

从我到目前为止得出的结论来看,Mailkit.dll依赖于依赖于System.memory.dll的Mimekit.dll,类似的东西。

Mailkit.dll > Mimekit.dll > System.Memory.dll

版本详细信息:

安装在机器上的4.7

  • Mailkit.dll

  • .Net框架: 4.7.3190

  • .Net框架,应用程序使用: 3.4.1

  • Mimekit.dll版本: 3.4.1

  • System.Memory.dll中的应用程序文件夹Version:4.6.28619.01

我不知道是什么问题,也不知道为什么会发生这种情况,但我很确定这与版本问题有关,因此欢迎任何帮助。

EN

回答 1

Stack Overflow用户

发布于 2022-11-28 15:35:58

您提供的版本号是一个很好的起点。

对于.NETFramework 4.7,MailKit v3.4.1依赖于MimeKit v3.4.1,后者依赖于System.Memory >= v4.5.5。

带有System.Memory版本v4.5.5的NuGet有一个AssemblyFileVersion of 4.6.31308.01 (在windows中显示的数字),但是有一个AssemblyVersion of 4.0.1.2。当CLR查找程序集时,程序集号才是真正重要的。CLR在加载v4.0.1.2时查找MimeKit,但只能找到v4.0.1.1

在输出中结束的版本比所需的版本更早。我发现输出中的版本实际上来自System.Memory v4.5.4。AssemblyFileVersion4.6.28619.01.AssemblyVersion4.0.1.1.

如果直接引用System.Memory nuget包,则可能会发生这种情况。如果您确实有一个直接的包引用System.Memory,那么您需要升级它。

如果您使用SDK样式的项目,您将得到一个防止这种情况发生的错误。但是,您仍然应该得到有关版本冲突的生成警告。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74602443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档