*问题简介
我正在使用一个使用.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
我不知道是什么问题,也不知道为什么会发生这种情况,但我很确定这与版本问题有关,因此欢迎任何帮助。
发布于 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。AssemblyFileVersion
:4.6.28619.01
.AssemblyVersion
:4.0.1.1
.
如果直接引用System.Memory nuget包,则可能会发生这种情况。如果您确实有一个直接的包引用System.Memory,那么您需要升级它。
如果您使用SDK样式的项目,您将得到一个防止这种情况发生的错误。但是,您仍然应该得到有关版本冲突的生成警告。
https://stackoverflow.com/questions/74602443
复制相似问题